为什么我的汇编输出在字母位置? (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’。
我正在使用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’。