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

co_diy 2007-06-18 01:26:36
;功能:计算 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
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newerC 2007-06-18
  • 打赏
  • 举报
回复
调用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
zara 2007-06-18
  • 打赏
  • 举报
回复
要显示 x=10, 需要显示字符串 "x=" 以及将 x 的数值转换为字符串显示输出才可以. int21h 的 02h 功能只是显示 dl 寄存器中的字符而已

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧