这里的代码甚至两个数字输出低于10但我需要知道输出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
答案 0 :(得分:1)
由于您仍处理从“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
为什么在输出字符串后直接输出空格字符?你知道你可以轻松地将这个空格字符放在消息中!
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 $