Sunteți pe pagina 1din 2

.

model small
.stack 1024
.data
beta dw 6
tabela dw 10,100,200,50,25,75,125
TblM db "Modul
db "Modul
db "Modul
db "Modul
db "Modul
db "Modul
db "Modul
Mes db 10,13
db "
numar_hex DW
tabel
db
conv
db
string
db
.code
AfiMes

adresare
adresare
adresare
adresare
adresare
adresare
adresare

cu registru:
mov
imediata:
mov
directa:
mov
indirecta cu registru:mov
cu baza:
mov
indexata:
mov
indexata cu baza:
mov

bx
"
12h
"
beta
"
[si]
"
[bx].beta
"
tabela[si]
"
[bx].beta[si]"
$"

0
"0123456789ABCDEF"
"AX="
0,0,0,0,'$'

PROC
mov

FAR
cx,58
bx,si
bx,cx
al,[bx].TblM-1
bx,cx
[bx].Mes+2,al
b
ah,9
dx, offset Mes
21h

AfiMes

mov
add
mov
mov
mov
loop
mov
mov
int
ret
ENDP

ConvH

PROC

FAR

mov
mov
mov
mov
mov

ax,numar_hex
si,offset string
dx,4
di,ax
bx,offset tabel

mov
rol
mov
and
xor
xlatb

cx,4
di,cl
ax,di
ax,0fh
ah,ah

mov
inc
dec
jnz
mov
mov
int
ret

[si],al
si
dx
hex1
dx,offset conv
ah,9
21h

; Tabela de conversie hexazecimala


; Aici se depune sirul convertit

; Procedura de afisare mesaj


; Se afiseaza 58 de caractere

b:

; Inchidere bucla
; Pregatire registrul de baza BX
; Pregatire contor de ciclare CX
; Culegere octet cel mai din dreapta
; Reface registru de baza
; Muta octetul cules anterior in mesaj
; Repeta bucla pana cand CX=0
; Functia de afisare mesaj pana la $
; Adresa de inceput a mesajului
; Lansarea efectiva a afisarii
; Retur din procedura
; Sfarsit procedura

; Procedura de conversie in Hexa a lui AX

hex1:

ConvH

ax,
ax,
ax,
ax,
ax,
ax,
ax,

ENDP

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

Valoarea de convertit
Adresa sir
4 car.ASCII vor rezulta
AX --> DI
Adresa de inceput tabela conversie
Inchidere bucla
Patru biti la stanga pentru
a separa cifra
Reface continutul lui AX
Masca de separatie pentru biti
Zerorizare AX
Se ia din tabela caracterul
ASCII potrivit
Pune-l de o parte in sir
Incrementeaza indexul
Decrementeaza valoarea lui DX
Mai sunt cifre de convertit?
Daca nu, afiseaza-le
cu functia 09h pana la $
Lanseaza afisarea
Retur la procedura apelanta

; Sfarsitul procedurii de conversie

start:
mov
mov

ax, @data
ds, ax

mov
push
call
mov
mov
mov
call
pop
add

si, 0
si
AfiMes
bx,6
ax, bx
numar_hex,ax
ConvH
si
si,58

; Punctul de intrare in program


; Culege adresa seg. de date
; Si-l depune in DS
; Zerorizeaza indexul SI
; Salveaza in stiva SI
; Apelul procedurii de afisare
; Valoarea 6 --> BX
; Modul adresare cu registru
; Muta AX in numar_hex
; Apeleaza procedura de conversie
; Reface continutul indexului
; Modifica indexul cu lungime sir

push
call
mov
mov
call
pop
add

si
AfiMes
ax, 12h
numar_hex,ax
ConvH
si
si,58

;
;
;
;
;
;
;

Salveaza in stiva SI
Apelul procedurii de afisare
Modul adresare imediata
Muta AX in numar_hex
Apeleaza procedura de conversie
Reface continutul indexului
Modifica indexul cu lungime sir

push
call
mov
mov
call
pop
add

si
AfiMes
ax, beta
numar_hex,ax
ConvH
si
si,58

;
;
;
;
;
;
;

Salveaza in stiva SI
Apelul procedurii de afisare
Modul adresare directa
Muta AX in numar_hex
Apeleaza procedura de conversie
Reface continutul indexului
Modifica indexul cu lungime sir

push
call
mov
mov
call
pop
add

si
AfiMes
ax, [si]
numar_hex,ax
ConvH
si
si,58

push
call
mov
mov
call
pop
add

si
AfiMes
ax, [bx].beta
numar_hex,ax
ConvH
si
si,58

;
;
;
;
;
;
;

Salveaza in stiva SI
Apelul procedurii de afisare
Modul adresare cu baza
Muta AX in numar_hex
Apeleaza procedura de conversie
Reface continutul indexului
Modifica indexul cu lungime sir

push
call
mov
mov
call
pop
add

si
AfiMes
ax, tabela[si]
numar_hex,ax
ConvH
si
si,58

;
;
;
;
;
;
;

Salveaza in stiva SI
Apelul procedurii de afisare
Modul de adresare indexata
Muta AX in numar_hex
Apeleaza procedura de conversie
Reface continutul indexului
Modifica indexul cu lungime sir

push
call
mov
mov
call
pop

si
AfiMes
ax, [bx].beta[si]
numar_hex,ax
ConvH
si

;
;
;
;
;
;

Salveaza in stiva SI
Apelul procedurii de afisare
Modul adresare indexata cu baza
Muta AX in numar_hex
Apeleaza procedura de conversie
Reface continutul indexului

mov
int

ah, 4ch
21h

; Functia de terminare
; program

END

start

; Sfarsit sursa si precizarea


; punctului de intrare in program

; Salveaza in stiva SI
; Apelul procedurii de afisare
; Modul adresare indirecta cu registru
; Muta AX in numar_hex
; Apeleaza procedura de conversie
; Reface continutul indexului
; Modifica indexul cu lungime sir

S-ar putea să vă placă și