Vous êtes sur la page 1sur 1

TITLE somme ; somme de deux nombres

PILE SEGMENT STACK ; déclaration de pile.


; Pour cet exemple, la pile n’est pas nécessaire.
DW 100 DUP (?)
PILE ENDS
affiche macro chaine ; macro pour afficher une chaîne de
; caractères
MOV DX,offset chaine ; offset renvoie l’adresse de début de chaine
MOV AH, 09h ; fonction qui affiche une chaîne de caractères
INT 21h
ENDM ; fin de la macro
DATA SEGMENT ; déclaration de variables
val1 db 0
val2 db 0
recup_val1 db 10,13,'veuillez taper le nombre1 :',32,'$' ; 10 et 13=endl du C
recup_val2 db 10,13,'veuillez taper la nombre2 :',32,'$'
aff_resu db 10,13,'la somme est:',32,'$' ; $ caractère de fin de chaine
DATA ENDS
CODE SEGMENT ; zone de code
ASSUME CS:CODE, DS:DATA ; génération de l’adresse du segment de code et de données
DEBUT: ; entrée du code
MOV AX, DATA ; Initialiser le registre DS pour récupérer l’adresse du segment de donnée
MOV DS, AX
; à partir d’ici on peut placer nos lignes de code
affiche recup_val1 ; appel de macro pour afficher un message contenu dans recup_val1
MOV AH,1 ; faire une lecture au clavier grâce à la fonction 1 le caractère tapé sera placé dans
INT 21h
MOV val1,AL
affiche recup_val2 ; appel de la macro pour afficher un message sur écran
MOV AH,1 ;faire une lecture au clavier
INT 21h
ADD AL,val1 ; AL = AL + val1
MOV val2,AL

affiche aff_resu ; appel de la macro pour afficher un message sur écran


SUB val2,30h ; les valeurs lues tantôt sont en ascii; exemple :
; si on tape les valeurs 1 et 2,
; le programme récupère 31 et 32, valeurs
; hexadécimales des caractères 1 et 2.
; Donc 31 + 32 = 63. et 63 n’est pas la valeur hexa
; du caractère 3. Sa valeur est 33
; autrement dit, on doit retirer 30 en hexa ou 48 en
; décimal.
MOV AH,2 ; afficher la valeur saisie grâce à la fonction 2 qui affiche le contenu de DL
MOV DL,val2
INT 21h
MOV AH, 4Ch ; on termine le programme avec la fonction
MOV AL, 0 ; 4c en hexa. On place une valeur >=0 pour dire
INT 21h ; que l’exécution s’est déroulée correctement.
; Équivalent en c de return 0
CODE ENDS ; fin du segment de code
END DEBUT

Vous aimerez peut-être aussi