我提供了两个输入,并希望将数字相加并显示输出。但是在这里它给出了ascii号作为输出。我该如何解决?
org 100h
mov ah,1
int 21h
mov bl,al
int 21h
mov ch,al
add bl,ch
mov ah,2
int 21h
mov dl,10
int 21h
mov dl,13
int 21h
mov ah,2
int 21h
mov dl,bl
int 21h
ret
我输入5和5时我希望是10,但是得到'j'作为输出
我输入5和5时我希望是10,但是得到'j'作为输出
当您输入这两个5时,您实际上会收到字符和不是数字5!您需要进行转换。简单地减去48就可以完成这项工作。
org 100h
mov ah, 01h
int 21h
sub al, 48 ;Conversion
mov bl, al
mov ah, 01h
int 21h
sub al, 48 ;Conversion
一旦您将两个数字相加,则必须将总和转换回1或2个字符,具体取决于总和的值是否大于9。
add bl, al
cmp bl, 10
jb LessThan10
mov dl, "1"
mov ah, 02h
int 21h
sub bl, 10
LessThan10:
add bl, 48 ;Conversion
mov dl, bl
mov ah, 02h
int 21h
如果要在这些操作之间输出回车符和换行符,请确保不要意外破坏后续步骤中所需的寄存器的内容。因此,明智地选择寄存器和/或通过堆栈保存它们。
mov ah,2 int 21h mov dl,10 int 21h mov dl,13 int 21h mov ah,2 int 21h
请注意,您的代码中有很多多余的int 21h
指令! 更多肯定不是更好。