当前位置: 代码迷 >> 汇编语言 >> 中断引不引响状态寄存器?解决办法
  详细解决方案

中断引不引响状态寄存器?解决办法

热度:7663   发布时间:2013-02-26 00:00:00.0
中断引不引响状态寄存器???
Assembly code
in_cycle:         add cx,01h         cmp cx,1000 ;         jne in_cycle   ;zf=0转到标号处执行,         push dx         mov ah,06h     ;从键盘输入字符,al等于字符         mov dl,0ffh         int 21h         pop dx                  jz pass                  cmp al,1bh     ;如果键入ESC,则返回主菜单         je to_start1         cmp al," "     ;如果键入SPACE,则游戏暂停         je pause         cmp al,[di]    ;输入字母正确!则字母消失         je disappear

在jz pass那里应该是直接跳转到pass的标号里,而不应该执行后面的程序,可程序确是在执行后面的程序,这样我的疑问是谁改变了zf的值??实在是想不通,难道是中断?


------解决方案--------------------------------------------------------
会影响:

、中断指令INT

中断指令INT的一般格式如下:

INT Imm

其中:立即数Imm是一个0~0FFH范围内的整数。

指令执行的步骤:
 
 ◆、把标志寄存器压栈,清除标志位IF和TF; 
◆、把代码段寄存器CS的内容压栈,并把中断服务程序入口地址的高字部分送CS; 
◆、32位段,压32位IP。
 
  相关解决方案