Assemblyben kellene olyan programot írni, ami kiírja az ASCII táblázat elemeit sorban. Ez meg is lenne, de ki kellene írni a karakter mellé, hogy ez hanyadik kiirt karakter. Valaki tud segíteni?
Ez a nehézség?
Futtatsz egy számlálót és minden kiírás után növeled eggyel.
org 100h
MOV CX, 256
MOV DL, 0
MOV AH, 2
ujra:
INT 21h
INC DL
LOOP ujra
INT 20h
ez itt a az ascii tábla kiirása ( elég ennyi karakter)
Ha az a problémád, hogy hogyan alakíthatsz át egy adott számot ASCII-vá, akkor a megoldás a következő:
Tízes helyiértékenként veszed a számjegyeit (elosztod tízzel és veszed a maradékot DL-ből, amíg AL nem 0), és minden számjegyhez hozzáadod a 30h értéket, amely a '0' ASCII kódja (egyébként az add dl,'0' tökéletesen működik).
Ezzel az a probléma, hogy pointerezned kell, amit neked nem biztos, hogy ajánlok, hogy ez a viszonylag egyszerű feladat is még problémát okoz - majd később. Megoldás lehet, hogy előre lefoglalsz 6 (16 bites szám) vagy 11 (32 bites szám) karaktert és oda dolgozol, így nem kell a dinamikus memóriával küszködnöd, viszont minden használat előtt ki kell ürítened ezt a változót.
Még pár dolog, amire oda kell itt figyelni:
- A számot "hátulról" kezded el felírni, így mielőtt az int 21h-nak átadod, a változó elejébe kell másolni, és '$' karakterrel lezárni. A másik lehetőség, hogy az elejére írsz a puffernek, de ekkor az addigi ereményt minden karakternél arrébb kell másolni eggyel.
- A fenti módszer csak előjel nélküli számokkal működik jól
- Mielőtt a használt számot elkezdenéd osztogatni, mindenképpen legyen valahová elmentve (változóba, vagy a stackre pl.), különben elveszíted az értékét az osztogatással.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!