回 帖 发 新 帖 刷新版面

主题:一个小问题

IN AL,40H                ;输入I/O端口中断状态位
TEST AL.80H              ;检查最高位是否有中断申请
JNE INTERRUPT1           ;有,转为中断1服务的中断服务程序


我对这里有JNE不太了解,JNE不是比较不同,相同跳转么?和这个什么关系

回复列表 (共3个回复)

沙发

TEST 用异或来测试两个数...然后根据结果置标志寄存器相应的位...
JNE也可以理解成结果是否为零,不为零就跳转...JE刚好相反
好像理解成:TEST AL,10000000B

板凳

INTERRUPT是低电平有效吗?如果是的话,那么AL的最高位为0时和80H的最高位1来异或结果是1,所以最终结果就不为0,因此JNZ成立,所以跳转到INTERRUPT1,是这样吗?如果有误请原谅,我也是一个汇编初学者。

3 楼

test指令是与指令,同AND,只不过不保存结果,只影响标志位

TEST AL.80H              ;检查最高位是否有中断申请
JNE INTERRUPT1           ;有,转为中断1服务的中断服务程序
这两句是为了测试从40端口传过来的状态

如果次高位为1的话,此时test al,80H不等于零,就去响应了

我来回复

您尚未登录,请登录后再回复。点此登录或注册