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
| .model small
.stack 100h
.486
.data
; Je déclare le nombre en word
nb DW 139
; La chaîne de caractère à imprimer à l'écran
affnb DB ' ','$'
un DW 1
dix DW 10
.code
main proc
MOV AX,@data
MOV DS,AX
CALL imprnb
MOV AH,04CH
INT 21H
main endp
imprnb proc
MOV BX,offset affnb ; Je lui passe une chaine de 3 caracteres
ADD BX,2 ; J'ai 3 chiffre mais j'avance de 2 pour pas ecraser le caractere de fin de chaine '$'
MOV AX,nb ; Je recupere le nb dans AX
MOV CX,3 ; CX sert de compteur pour la boucle
@@chiffreSuivant:
PUSH CX
MUL un ; Je multiplie AX par 1 pour eviter les divisions pas 0
DIV dix ; Je divise AX par 10 pour recuper le chiffre dans DL
ADD DL,48 ; J'additionne 48 au chiffre pour avoir le code ascii
MOV [BX],DL ; Je deplace la reponse dans la chaine
DEC BX ; Je me deplace dans la chaine
POP CX
LOOP @@chiffreSuivant
; J'affiche a l'ecran la chaine qui contient le score
MOV AH,09h
MOV DX,offset affnb
INT 21h
RET
imprnb endp
end main |
Partager