Kezdőoldal » Számítástechnika » Programozás » Assemblyben kellene olyan...

Olahtamas kérdése:

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?

Figyelt kérdés

#Assembly programozási nyelv
2014. nov. 26. 09:03
 1/4 anonim ***** válasza:

Ez a nehézség?

Futtatsz egy számlálót és minden kiírás után növeled eggyel.

2014. nov. 26. 10:03
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
az hogyan tudom megoldani? kezdő vagyok ebben a programozási nyelvben
2014. nov. 26. 10:11
 3/4 A kérdező kommentje:

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)

2014. nov. 26. 10:18
 4/4 anonim ***** válasza:

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.

2014. nov. 26. 16:35
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!