如何使用 emu8086 添加两个数字

how to add two number using emu8086

在代码下方添加两个偶数,输出也将低于 10,但我要知道并显示输出的挑战是 10 那么这个概念是什么?我如何添加两个数字但输出显示数字向上扩展 10。 你能给些想法吗? .型号小 .stack 100h 。数据 msg1 db "$ 的总和" msg2 db“和$” msg3 db“是:$” 。代码 主进程

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

由于您仍在处理范围从“0”到“9”的单个字符输入,因此总和可以是 18 (9 + 9) 的最大数字。对大于 9 的值进行简单检查即可解决问题:

    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

为什么一个字符串输出后直接输出一个space字符?您知道您可以轻松地将这个 space 字符放入消息中!

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 $