prepisanie znaku assembler
-
n0sf3ratus
Amateur
- Príspevky: 22
- Registrovaný: 09 okt 2012, 13:56
prepisanie znaku assembler
cawte chcem sa spytat ci neviete ako prepisat znak v asemblery. myslim to tak ze na obrazovke sa vypise napr \ a potom sa prepise na / lebo skusil som aj backspace aj delete a nefunguje ani jedno a inak ma to uz nenapada ze ako by som to spravil. diki za rady
Re: prepisanie znaku assembler
Záleží ako a kam to vypisuješ. Na ten tvoj megakód v predchádzajúcej téme som sa ešte nepozrel a ani neviem či chcem, lebo je dlhý. Fuj.
Každopádne štandardne sa to robí tak, že znak \b posunie kurzor na začiatok aktuálneho riadku. Takže vypíšeš /, potom \b a potom /. A toto opakuješ.
Každopádne štandardne sa to robí tak, že znak \b posunie kurzor na začiatok aktuálneho riadku. Takže vypíšeš /, potom \b a potom /. A toto opakuješ.
-
n0sf3ratus
Amateur
- Príspevky: 22
- Registrovaný: 09 okt 2012, 13:56
Re: prepisanie znaku assembler
no lenze ja to mam spravit tak ze hocikde napr v strede riadku takze ja potrebujem jednoducho len posunut kurzor o jedno miesto spet vypisat znak dalsi a tak dokola.
program: novyriadok
mov cx, 7 ; Outer loop counter
mov bx,50d
OuterLoop:
push cx
MOV AX, SEG DATA
MOV DS, AX
MOV DX, OFFSET znak ; toto mi vypise znak /
MOV AH, 09H
INT 21H
mov cx,bx
call delay ; tu mam spomalenie procesora
sub bx,10
MOV AX, SEG DATA
MOV DS, AX
MOV DX, OFFSET back ;toto je cisto znak backspace
MOV AH, 09H
INT 21H
MOV DS, AX
MOV DX, OFFSET kurz ; a toto dalsi znak \
MOV AH, 09H
INT 21H
pop cx
loop OuterLoop
jmp START
a nefunguje to neviem preco zle to prepisuje
program: novyriadok
mov cx, 7 ; Outer loop counter
mov bx,50d
OuterLoop:
push cx
MOV AX, SEG DATA
MOV DS, AX
MOV DX, OFFSET znak ; toto mi vypise znak /
MOV AH, 09H
INT 21H
mov cx,bx
call delay ; tu mam spomalenie procesora
sub bx,10
MOV AX, SEG DATA
MOV DS, AX
MOV DX, OFFSET back ;toto je cisto znak backspace
MOV AH, 09H
INT 21H
MOV DS, AX
MOV DX, OFFSET kurz ; a toto dalsi znak \
MOV AH, 09H
INT 21H
pop cx
loop OuterLoop
jmp START
a nefunguje to neviem preco zle to prepisuje
Re: prepisanie znaku assembler
Môžeš použiť \b a vypísať poslednú vetu znovu so zmenou jedného znaku. Príp. ak pracuješ pod windows, môžeš volať winapi funkciu SetConsoleCursorPosition
Urobiť niečo ako posun kurzora v konzolovom okne by si iste nechcel.
Urobiť niečo ako posun kurzora v konzolovom okne by si iste nechcel.
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: prepisanie znaku assembler
Kedze ide o DOS, mozes na poziciu x,y vypisat / a apotom na poziciu x,y vypisat \ a to vsteko vdaka INT 21H
Re: prepisanie znaku assembler
Trosku to upresnim.
Predpokladam, ze to riesis z toho predosleho prikladu, takze to bude platforma 8086 a teda DOS.
1. nastavit kurzor na pozadovanu poziciu
- INT 10h / AH = 2 - nastavi poziciu kurzoru
(DH = riadok, DL = stlpec, BH = cislo stranky <0..7> - u teba 0)
priklad:
2. vypisat znak na danu poziciu
- INT 21h / AH = 2(6) alebo 9
(2 - vypise len znak, 6 - priamy zapis, 9 - vypise retazec)
priklad:
Predpokladam, ze to riesis z toho predosleho prikladu, takze to bude platforma 8086 a teda DOS.
1. nastavit kurzor na pozadovanu poziciu
- INT 10h / AH = 2 - nastavi poziciu kurzoru
(DH = riadok, DL = stlpec, BH = cislo stranky <0..7> - u teba 0)
priklad:
Kód: Vybrať všetko
mov DH, 10
mov DL, 20
mov BH, 0
mov AH, 2
int 10h- INT 21h / AH = 2(6) alebo 9
(2 - vypise len znak, 6 - priamy zapis, 9 - vypise retazec)
priklad:
Kód: Vybrať všetko
mov AL, "*"
mov AH, 2(6)
int 21h-
n0sf3ratus
Amateur
- Príspevky: 22
- Registrovaný: 09 okt 2012, 13:56
Re: prepisanie znaku assembler
tak potom vlastne staci najprv dat nastavit kurzor potom vypisat znak / potom znova kurzor nastavit lebo ked vypise znak / tak kurzor potom je za tym znakom nie ? tak a dalej potom teda uz len vypisat znak \ a malo by to fungovat . neska to skusim dorobit