2016-06-15 1 views
0

Voici le code même deux sortie de nombre inférieur à 10, mais j'ai besoin de connaître la sortie jusqu'à 10.
Merci.emu8086 ajouter deux nombre, sortie pas au-dessous de 10

.model small 
.stack 100h 
.data 
msg1 db "The sum of$" 
msg2 db "and$" 
msg3 db "is:$" 
.code 
main proc 

mov ax,@data 
mov ds,ax 

mov ah,9 
lea dx,msg1 
int 21h 

mov ah, 2 
mov dl,20h 
int 21h 

mov ah,1 
int 21h 
mov bl,al 

mov ah,9 
lea dx,msg2 
int 21h 

mov ah, 2 
mov dl,20h 
int 21h 

mov ah,1 
int 21h 
mov cl,al 

mov ah,9 
lea dx,msg3 
int 21h 

mov ah, 2 
mov dl,20h 
int 21h 

mov ah,2 
mov dl,20h 
int 21h  

add bl,cl 
sub bl,30h 

mov ah,2 
mov dl,bl 
int 21h 

main endp 
end main 

Répondre

1

Puisque vous êtes toujours traiter avec des entrées de caractères uniques allant de « 0 » à « 9 » le plus grand nombre la somme peut être est 18 (9 + 9). Une vérification simple pour une valeur supérieure à 9 fera l'affaire:

mov ah, 2 ;DOS display function 
    add bl, cl ;Sum of 2 characters 
    sub bl, 30h ;Remove the extra 30h 
    cmp bl, "9" 
    jbe PrintDigit 
    mov dl, "1" 
    int 21h 
    sub bl, 10 
PrintDigit: 
    mov dl, bl 
    int 21h 

Pourquoi est-ce que vous produisez un caractère d'espace directement après une sortie de chaîne? Vous savez que vous pouvez tout aussi bien mettre ce caractère d'espace unique dans les messages!

msg1 db "The sum of $" <--- See the extra space before the $ 
msg2 db "and $"   <--- See the extra space before the $ 
msg3 db "is: $"   <--- See the 2 extra spaces before the $