Afficher la somme de 2 entiers superieur à 9

Benh_m Messages postés 5 Date d'inscription dimanche 9 septembre 2007 Statut Membre Dernière intervention 21 décembre 2011 - 3 déc. 2011 à 15:18
 Moncefben - 5 mars 2018 à 22:33
Bonjour à tous !

Alors voila, j'ai un devoir en Assembleur à faire et j'ai un problème :
je dois faire la somme de deux entiers, jusque la tout va bien, puis l'afficher.

j'ai réussi à afficher la somme tant qu'elle est inférieure à 10 mais je ne sais pas comment faire pour l'afficher lorsqu'elle est supérieur, car il y a deux (voire plus) caractères à afficher et je ne trouve pas le lien entre ma somme en code ASCII et mes deux caractères. Si quelqu'un pouvais me donner un petit coup de pousse se serait génial !

voila mon bout de code :

pile segment 'stack'
base DB 100 DUP(?)
sommet DB ?
pile ends

donnees segment 'data'

messaisie1 DB 0Dh,0Ah,0Ah,'Saisir OP1 : $'
messaisie2 DB 0Dh,0Ah,0Ah,'Saisir OP2 : $'
messresult DB 0Dh,0Ah,0Ah,'La somme est : $'
messerreur DB 0Dh,0Ah,0Ah,'erreur, le caractere doit etre un entier, recommencer : $'
OP1 DB ?
OP2 DB ?

donnees ends

inst segment 'code'
assume cs:inst, ds:donnees,ss:pile
debut:
mov ax,donnees
mov ds,ax
mov ax,pile
mov ss,ax
lea sp,sommet







; Première Saisi : 

Saisie1:
;Invite_saisie :
mov AH,9
LEA DX, messaisie1
INT 21h

mov AH,1
INT 21h

MOV OP1, AL

CMP OP1, '0'
JL CasErreur1
CMP OP1, '9'
JG CasErreur1

JMP Saisie2

CasErreur1 :

mov AH,9
LEA DX, messerreur
INT 21h
JMP Saisie1


; Deuxième Saisi : 

Saisie2:
;Invite_saisie :
mov AH,9
LEA DX, messaisie2
INT 21h

mov AH,1
INT 21h

MOV OP2, AL

CMP OP2, '0'
JL CasErreur2
CMP OP2, '9'
JG CasErreur2

JMP Traitement


CasErreur2 :

mov AH,9
LEA DX, messerreur
INT 21h
JMP Saisie2




; Traitement :

Traitement :
ADD OP1, AL
ADD OP1, -48

CMP OP1,'9'
;JG sup9

JMP inf10



; Affichage : 

inf10 :

mov AH,9
LEA DX, messresult
INT 21h

MOV AH,2
MOV DL, OP1
INT 21h



;sup9 :



RetourSysteme:
mov ah,4Ch
int 21h
inst ends
end debut



NB : j'en suis à mon 3ème cour d'assembleur alors soyez indulgent :)

9 réponses

BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
14 déc. 2011 à 21:59
comme on est en base 10, il faut un algo du style:

Début:
- diviser la valeur par 10
- afficher le reste
- si la valeur > 0 => jmp Début

on affiche l'unité en premier, puis les dizaines, puis les centaine, etc...
0
Rejoignez-nous