1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| org 0x0100
mov ax, [var1]
mov bx, [var2]
cmp bx, ax
jz equal
not_equal :
mov dx, msg2
mov ah, 0x9
int 21h
jmp FinProg
;---- Nouveau message avec affichage des nombres en décimal
equal :
mov dx, msg3a
mov ah, 0x9
int 21h
mov ax, var1
mov di,offset var1str
call Conv_DEC
mov dx, msg3b
mov ah, 0x9
int 21h
mov ax, var2
mov di,offset var2str
call Conv_DEC
;--- Fin "propre" du programme
FinProg :
mov ax, 4C00h
int 21h
;----- Conversion en décimal et affichage
; Le nombre est affiché dans un mot. Il peut donc comporter
; 5 chiffres au maximum.
Conv_DEC :
push di
xor cx,cx ; compteur d'empilage
BcleDiv :
xor dx,dx
mov bx, 10
div bx ; DX:AX = dividende, AX = quotient, DX = reste
push dx
inc cx
or ax,ax ; division terminée ?
jnz BcleDiv
cld ; incrémentation auto de DI pour STOSB
BcleNb :
pop ax
add al,30h ; chiffre en ASCII
stosb
loopnz BcleNb
mov al,$
stosb
pop dx ; récupération du début de la chaîne
mov ah, 0x9
int 21h
ret
compare : db "compare deux nombre entier :", 10, 13, '$'
msg1: db "Les chiffre sont les meme", 10, 13, '$'
msg2: db "Les chiffres sont different", 10, 13, '$'
msg3a: db "Le nombre $'
var1str db 7 dup(0)
msg3b: db " est le même que $'
var2str db 7 dup(0)
var1 dw 2
var2 dw 2 |
Partager