首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

大家帮忙看一下代码,不知为什么不能正确显示结果。该如何解决

2012-02-06 
大家帮忙看一下代码,不知为什么不能正确显示结果。功能:计算zx-y+3并显示结果x10,y4。.modelsmall.stack

大家帮忙看一下代码,不知为什么不能正确显示结果。
;功能:计算   z=x-y+3   并显示结果x=10,y=4。

.model   small
.stack   200h
.data

z   dw   1   dup(?)
x   dw   10
y   dw   4

.code

mov   ax,   @data
mov   ds,   ax

mov   ax,   x
sub   ax,   y
add   ax,   3
mov   z,   ax
call   disp1
call   disp2

mov   ax,   4c00h
int   21h

disp1   proc

mov   dl,   ah
                or   dl,   30h
                mov   ah,   2
int   21h
                ret

disp1   endp

disp2   proc

mov   dl,   al
or   dl,   30h
mov   ah,   2
int   21h
ret

disp2   endp

end

[解决办法]
要显示 x=10, 需要显示字符串 "x= " 以及将 x 的数值转换为字符串显示输出才可以. int21h 的 02h 功能只是显示 dl 寄存器中的字符而已
[解决办法]
调用disp1的时候,al的值被修改了,导致disp2显示不正常
把disp1 proc和disp2 proc 改成下面这样就可以了
disp1 proc
push ax ;保存ax的值
mov dl, ah
or dl, 30h
mov ah, 2
int 21h
pop ax
ret

disp1 endp

disp2 proc
push ax ;保存ax的值
mov dl, al
or dl, 30h
mov ah, 2
int 21h
pop ax
ret

disp2 endp

热点排行