INT指令影响AL吗??~~~~~~~~~

anncesky 2010-01-09 12:57:35

CODES SEGMENT
ASSUME CS:CODES
START:
;此处输入代码段代码
MOV AH,01H
INT 21H

MOV DL,' '

MOV AH,02H
INT 21H
;MOV BL,AL 这才是正确的
MOV CX,8

GONEXT:
SHL AL,1;BL,1 这才是正确的
MOV DL,30H
ADC DL,0
MOV AH,02H
INT 21H
LOOP GONEXT

MOV DL,'B'
INT 21H

MOV AH,07H
INT 21H
CODES ENDS
END START

以上就是我的代码,为什么只有在BL里移位才得到正确的结果
我调试发现是
MOV AH,02H
INT 21H
影响的AL
但是我没发现资料说INT会影响AL啊
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gedong_1 2010-01-09
  • 打赏
  • 举报
回复
是的,应该要入栈。。。
  • 打赏
  • 举报
回复
ax或eax一般都作为函数返回值,所以最好不要在al那里保存。如果只处理字符,dh不会变。
cnzdgs 2010-01-09
  • 打赏
  • 举报
回复
软中断几乎都影响AX的值,相关资料中会说明哪些寄存器返回什么内容,凡是提到的寄存器都有可能改变。此外,有些BIOS的bug会导致某些未传递返回值的寄存器也被修改,所以最好把自己使用的寄存器都保护一下。
buffaloiron 2010-01-09
  • 打赏
  • 举报
回复
会的,最好是保护一下。
KingWolfOfSky 2010-01-09
  • 打赏
  • 举报
回复
额,网速好慢
你看《Intel® 64 and IA-32 Architectures Software Developer's Manuals》去吧
这个上面说得很详细的
KingWolfOfSky 2010-01-09
  • 打赏
  • 举报
回复
刚才写windows汇编程序去了
INT是影响到EAX的,默认的中断会通过EAX返回一个值的
我帮你找找资料吧~~
anncesky 2010-01-09
  • 打赏
  • 举报
回复
原来调用DOS子块用到了AX,这子模块没有对AX保护
anncesky 2010-01-09
  • 打赏
  • 举报
回复
靠,那些个资料啊书的都没说
ls251544415 2010-01-09
  • 打赏
  • 举报
回复
我也遇到过这种情况。所以,我在INT前会先push ax,完了再pop ax,就OK了
anncesky 2010-01-09
  • 打赏
  • 举报
回复
汇编块怎么这么冷清啊

21,459

社区成员

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

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