Documente Academic
Documente Profesional
Documente Cultură
Lab8 - Moduri de Adresare
Lab8 - Moduri de Adresare
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
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
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
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
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
; 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