如何使用 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 $
在代码下方添加两个偶数,输出也将低于 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 $