汇编语言输出ax时为什么要把值放在一个变量里才能正确输出 20

如下:datasegmentresultdb?,?dataendscodesegmentassumecs:code,ds:datamainprocfarstart:pus... 如下:
data segment
result db ?,?
data ends
code segment
assume cs:code,ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
L:
;初始化数据
mov bh,1
mov bl,1

L1:
mov dl,bh
call output

call mulfun

mov dl,bl
call output

call deng

mov al,bh
mul bl
aam

mov result,al
mov result+1,ah

;输出结果
mov dl,result+1
call output
mov dl,result
call output

call space

inc bl
cmp bl,bh
jna L1

call retxx
mov bl,1
inc bh
cmp bh,9
jna L1
ret
main endp
;输出数
output proc near ;输出
add dl,30h
mov ah,02h
int 21h
ret
output endp
;输出乘号
mulfun proc near
push dx
mov dl,'*'
mov ah,02h
int 21h
pop dx
ret
mulfun endp
;输出等于号
deng proc near
push dx
mov dl,'='
mov ah,02h
int 21h
pop dx
ret
deng endp
;换行
retxx proc near
push dx
mov dl,0ah
int 21h
mov dl,0dh
int 21h
pop dx
ret
retxx endp
;输出空格
space proc near
push dx
mov dl,' '
mov ah,02h
int 21h
pop dx
ret
space endp

code ends
end start
如果把 输出结果 那行的 result 替换成 al, result+1 ah 就不成正确输出

我的意思是,如果改成 这个样子就不能出成确的结果
;输出结果
mov dl,ah
call output
mov dl,al
call output
我以经把值送给提前 DL 了啊~!!
展开
 我来答
百度网友9a020fd
2012-04-30 · TA获得超过383个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:195万
展开全部
程序没错啊。可以运行处结果啊。
更多追问追答
追问
不好意思,我没说清楚~!
我的意思是,如果改成 这个样子就不能出成确的结果
;输出结果
mov dl,ah
call output
mov dl,al
call output
我以经把值送给提前 DL 了啊~!!
追答
mov dl,ah
call output
mov dl,al
call output
因为调用output 子程序后,al的值发生了变化,如果你用另外一个寄存器就不会了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liaozhiwmy
2012-05-09 · TA获得超过434个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:138万
展开全部
int 21h是会改变al的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式