Assembly 使用FASM从用户输入中添加两个数字
我已成功获取用户的输入并将其放入bl和bh中,但当我尝试将它们相加时,即使我已将“0”添加到结果中,结果也不是十进制形式。有什么办法解决这个问题吗?谢谢Assembly 使用FASM从用户输入中添加两个数字,assembly,addition,fasm,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 2
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
您似乎误解了ASCII码和值之间的关系 假设用户输入
34
。在代码中,将bl
设置为字符3
(即0x33
)的ASCII值,将bh
设置为字符4
(0x34
)的ASCII值
现在,要将它们相加,需要将它们转换为值。通过减去0x30
sub bl, 30h
sub bh, 30h
现在bl=3,bh=4
。把它们加在一起就行了
add bh, bl
现在bh=7
。将其转换为数字的ASCII值并显示给用户。那部分你已经做对了
add bh, 30h
...
总之:
- 读取一个数字后,将其减去
30h
- 在打印数字之前,向其添加
30h