prepisanie znaku assembler

Programovacie jazyky, rady, poradňa...
n0sf3ratus
Amateur
Amateur
Príspevky: 22
Registrovaný: 09 okt 2012, 13:56

prepisanie znaku assembler

Príspevok od používateľa n0sf3ratus »

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
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: prepisanie znaku assembler

Príspevok od používateľa BX »

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š.
n0sf3ratus
Amateur
Amateur
Príspevky: 22
Registrovaný: 09 okt 2012, 13:56

Re: prepisanie znaku assembler

Príspevok od používateľa n0sf3ratus »

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
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: prepisanie znaku assembler

Príspevok od používateľa BX »

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.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8222
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: prepisanie znaku assembler

Príspevok od používateľa harrison314 »

Kedze ide o DOS, mozes na poziciu x,y vypisat / a apotom na poziciu x,y vypisat \ a to vsteko vdaka INT 21H
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: prepisanie znaku assembler

Príspevok od používateľa Gregi »

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:

Kód: Vybrať všetko

  mov DH, 10
  mov DL, 20
  mov BH, 0
  mov AH, 2
  int 10h
2. vypisat znak na danu poziciu
- 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
Amateur
Príspevky: 22
Registrovaný: 09 okt 2012, 13:56

Re: prepisanie znaku assembler

Príspevok od používateľa n0sf3ratus »

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
Napísať odpoveď