使用FASM从用户输入添加两个数字

时间:2018-02-04 07:05:34

标签: assembly addition fasm

我已成功获得用户的输入并放入bl和bh,但当我尝试将它们加在一起时,即使我已经添加了' 0'结果。关于如何解决这个问题的任何想法?感谢

org 100h

mov ah, 9
mov dx, msg
int 21h

mov ah, 1
int 21h

mov [number], al
mov bl, [number]

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

mov ah, 9
mov dx, msg2
int 21h

mov ah, 1
int 21h

mov [number], al
mov bh, [number]

add bh, bl
add bh, 30h

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

mov ah, 9
mov dx, sum
int 21h

mov ah, 2
mov dl,bh
int 21h

mov ax, 4C00h
int 21h

msg db 'Enter first number: ', 24h
msg2 db 'Enter second number: ',24h
sum db 'The sum is: ',24h
number db 0

1 个答案:

答案 0 :(得分:2)

您似乎误解了ASCII码和值之间的关系。

假设用户输入34。使用您的代码,您可以将bl设置为字符3的ASCII值(0x33}和bh字符4的ASCII值(0x34)。

现在,要将它们添加到一起,您需要将它们转换为值。减去0x30

sub bl, 30h
sub bh, 30h

现在bl = 3, bh = 4。只需将它们加在一起。

add bh, bl

现在bh = 7。将其转换为数字的ASCII值并将其显示给用户。那部分你已经正确地做了。

add bh, 30h
...

总结:

  • 读完一位数后,将其减去30h
  • 在打印数字之前,请先向其添加30h