Está en la página 1de 2

.

model small
.stack
.data
x db '3';pentru numere de afisaj de la 1 -9 se incepe cu valori de la 48 care
afiseaza 0 pana la 57 care afisaeza 9
y db '2'
z db '4'
.code
start:
mov ax,@data
mov ds,ax
mov al,x ;copiem variabilele in registri
mov bl,y ; caci nu putem face cmp cu ambii operanzi
mov cl,z ; in memorie

cmp al,bl ;comparam x cu y


jb e1 ;sare daca x<y

cmp al,cl ;acum stim y<x si comparam x cu z,daca nu sare avem z<x
jb e2 ;sare daca x<z continua cazul in care z<x

cmp bl,cl ;acum stim y<x,z<x si comparam y cu z


jb e4 ; sare daca y<z

mov z,al ; acum mutam valoarea registrului al in z si asa mai departe


mov x,cl
mov y,bl ;z<y<x
jmp testcnt

e2:
mov z,cl ;acum stim y<=x<z
mov y,al
mov x,bl
jmp testcnt

e1: ; aici stim ca x<y


cmp bl,cl ; comparam y cu z
jb e3 ;sare daca y<z
cmp al,cl ;acum stim x<y,z<y si comparam x cu z
jb e5 ;sare daca x<z
mov z, bl
mov x, cl ;y<z<x
mov y, al
jmp testcnt
e3:
mov z,cl ;acum stim x<y<z
mov y,bl
mov x,al
jmp testcnt
e4:
mov z, al
mov x, bl ; acum stim y<x<z
mov y, cl
jmp testcnt
e5:
mov z, bl
mov x, al ; acum stim x<z<y
mov y, cl
testcnt :
mov al,x ;mutam valorile lui x,y,z in ordine in registrii ca sa putem face
ultima comparatie de test
mov bl,y
mov cl,z

;printare numere se poate face si cu macrouri


mov dl,x
mov ah,2
int 21h

mov dl,"<"
mov ah,2
int 21h

mov dl,"="
mov ah,2
int 21h

mov dl,y
mov ah,2
int 21h

mov dl,"<"
mov ah,2
int 21h

mov dl,"="
mov ah,2
int 21h

mov dl,z
mov ah,2
int 21h

mov ax,4c00h
int 21h
end start

También podría gustarte