为什么我的汇编输出在字母位置? (1+1=乙)

Why is my assembly output in letter position? (1+1=b)

我正在使用tasm。这是一个简单的程序,可以读取用户的输入并将两个数字相加。但是,我的输出是根据字母位置显示字母

例如3+5=h(8) 我希望它以整数形式显示。

.model small 
.stack 100h
.data 
input   db  13,10,"Enter a number : ","$"
output  db  13,10,"The sum is ","$"

.code
main    proc

mov ax,@data
mov ds,ax

;INPUT 1
mov ah,9
mov dx, offset input 
int 21h
mov ah,1
int 21h
mov bl,al

;INPUT 2
mov ah,9
mov dx, offset input
int 21h
mov ah,1
int 21h
add bl,al

;OUTPUT DISPLAY
mov ah,9
mov dx,offset output
int 21h

mov ah,2
mov dl,bl
int 21h

;END
mov ax,4c00h
int 21h
main    endp
end main

您输入的数字是 ASCII 字符,例如“1”实际上是 31h。因此,当您计算 1+1 时,您将得到 31h+31h=62h,这是 ASCII 字符“b”。

要将您的输入数字转换为其等效整数值,您需要减去‘0’(30h)。

相反,要将整数数字输出为 ASCII 字符,您需要 添加 ‘0’。