Az eddigi példákban megismerhettük a szövegkiíratás módjait illetve a bináris számok
kiíratásának egy módjával. A következőkben ismertetésre kerül a számok hexadecimális,
decimális kiíratása.
A hexa számok kiíratásánál problémát jelent, hogy a számjegyeken kívül A-F-ig
betűket is tartalmazhat a szám. És a kilences szám és az A betű között vannak további
karakterek, melyek kiíratása nem célravezető. A megoldás, hogy egy táblázatba
helyezzük a lehetséges karaktereket és a számnak megfelelő jelet olvassuk ki innen és
írjuk ki a képernyőre. A PC-n az ilyen táblázatkezelésre van egy speciális utasítás, ami a
beállított táblázat al-edik elemét tölti al-be, ez az xlat. A táblázat offsetcímét
(kezdőcímét a szegmens elejéhez képest) bx regiszterbe kell tenni a művelet
végrehajtása előtt.
| Pelda07 | Segment | ;Szegmensdefinicio |
| assume cs:Pelda07,ds:Pelda07 | ;Cs, ds beallitasa | |
| Start: | mov ax,Pelda07 | ;Ds regiszter beallitasa |
| mov ds,ax | ;a kod elejere | |
| mov ax,0b800h | ;A kepernyomemoria szegmens- | |
| mov es,ax | ;cimet es regiszterbe tolti. | |
| mov ax,3 | ;80*25 karakteres mod be- | |
| int 10h | ;allitasa, kepernyotorles. | |
| xor di,di | ;Di nullazasa. | |
| mov bx,offset HEXTABLE | ;Bx regiszterbe a kovertalo | |
| ;tabla eltolasi erteket irja. | ||
| mov dx,word ptr [HEXSZAM] | ;Dx regiszterbe tolti a | |
| ;kiirando szamot. | ||
| mov ah,15 | ;A szamok szine fekete alapon | |
| ;fenyes feher. | ||
| mov cx,4 | ;A szam negy szamjegybol all. | |
| .1_Pelda07: | push cx | ;Cx erteket a verembe menti. |
| mov cx,4 | ;Egy szamjegyet negy bit | |
| ;hataroz meg. | ||
| xor al,al | ;Torli az al regisztert. | |
| .2_Pelda07: | shl dx,1 | ;A dx regiszter felso negy |
| rcl al,1 | ;bitjet al regiszterbe | |
| loop .2_Pelda07 | ;forgatjuk. | |
| xlat | ;A szamjegynek megfelelo | |
| ;karakterkodot tolti al | ||
| ;regiszterbe | ||
| mov es:[di],ax | ;es ezt kiirja a kepernyore. | |
| add di,2 | ;A kovetkezo irasi pozicio. | |
| pop cx | ;Cx elozo erteket kiolvassuk | |
| ;verembol. | ||
| loop .1_Pelda07 | ;A kovetkezo szamjegy | |
| ;kiiratasa. | ||
| xor ax,ax | ;Billentyuvaras. | |
| int 16h | ||
| mov ax,4c00h | ;Kilepes a DOS-ba | |
| int 21h | ||
| HEXSZAM: | dw 5b2eh | ;A kiirando szam. |
| HEXTABLE: | db "0123456789ABCDEF" | ;Konvertalo tabla. |
| Pelda07 | Ends | ;A szegmens vege. |
| End Start | ;A program vege. |
| Pelda08 | Segment | ;Szegmensdefinicio |
| assume cs:Pelda08,ds:Pelda08 | ;Cs, ds beallitasa | |
| Start: | mov ax,Pelda08 | ;Ds regiszter beallitasa |
| mov ds,ax | ;a kod elejere | |
| mov ax,0b800h | ;A kepernyomemoria szegmens- | |
| mov es,ax | ;cimet es regiszterbe tolti. | |
| mov ax,3 | ;80*25 karakteres mod be- | |
| int 10h | ;allitasa, kepernyotorles. | |
| mov di,offset SZAMHELY | ;Erre a cimre fogja letarolni | |
| ;a szamot a kiiras elott. | ||
| mov ax,word ptr [DECSZAM] | ;A kirakando szam. | |
| mov bx,10 | ;Az osztas merteke. | |
| xor cx,cx | ;A szamlalo nullazasa. | |
| .1_Pelda08: | xor dx,dx | ;A div utasitas a jelen |
| div bx | ;esetben dx:ax regiszter | |
| ;tartalmat osztja, de | ||
| ;szamunkra hasznos adat csak | ||
| ;az ax regiszterben van, | ||
| ;ezert a dx regisztert | ||
| ;torolni kell. | ||
| mov [di],dl | ;Az osztas maradekanak also | |
| ;byte-jat a memoriaba | ||
| ;mentjuk. | ||
| inc cx | ;A szamlalo novelese. | |
| inc di | ;A kovetkezo cimre irja a | |
| ;kovetkezo szamot. | ||
| or ax,ax | ;Ax vizsgalata, | |
| jnz .1_Pelda08 | ;ha nem 0, ugras vissza. | |
| mov si,di | ;Si regiszterbe di-1-et | |
| dec si | ;totlunk, mivel ez az utolso | |
| ;ertekes szam. | ||
| xor di,di | ;Di nullazasa. | |
| mov ah,15 | ;Szinbeallitas. | |
| .2_Pelda08: | mov al,[si] | ;Al-be tolti az utoljara |
| ;letarolt szamjegyet ami | ||
| ;valojaban az elso. | ||
| add al,48 | ;Ascii szamjegyye alakitja | |
| mov es:[di],ax | ;es kiirja a kepernyore. | |
| add di,2 | ;Kovetkezo pozicio. | |
| dec si | ;Elozo szamjegy. | |
| loop .2_Pelda08 | ;Ismetles a szamjegyek | |
| ;szamanak megfeleloen. | ||
| xor ax,ax | ;Billentyuvaras. | |
| int 16h | ||
| mov ax,4c00h | ;Kilepes a DOS-ba. | |
| int 21h | ||
| DECSZAM: | dw 34576 | ;Az abrazolando szam. |
| SZAMHELY: | db ? | ;A szam atmeneti tarolasara |
| ;szolgalo hely | ||
| Pelda08 | Ends | ;Szegmens vege |
| End Start | ;Program vege |