乘法运算可是结果为什么不对
datas segment data1 db 0
data2 db 0
datas ends
stacks segment
db 100 dup(?)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:mov ax,stacks ;送堆栈段地址
mov ss,ax
mov ax,datas ;送代码段地址
mov ds,ax
call input ;输入一个字符并回车,将字符存入data1中
mov data1,al
call input ;输入一个字符并回车,将字符存入data2中
mov data2,al
mov bh,data1 ;将data1,data2中的字符放入寄存器,为运算做准备
mov bl,data2
sub bh,30h ;将字符转化为数值
sub bl,30h
mov al,bl ;两数相乘,乘积保存在ax中
mul bh
call output ;输出运算结果
mov ah,4ch
int 21h
input proc near ;输入一个字符并回车
mov ah,1
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
ret
input endp
output proc near ;输出运算结果
mov cx,10
call divput
mov cx,1
call divput
ret
divput proc near ;按位将运算结果输出
mov dx,0
div cx
mov bx,dx
mov dx,ax
add dx,30h
mov ah,2
int 21h
mov ax,bx
ret
divput endp
output endp
codes ends
end start
运算结果为什么不对呢?