主题:一个小问题
shujujiegou01
[专家分:1070] 发布于 2006-10-11 09:37:00
IN AL,40H ;输入I/O端口中断状态位
TEST AL.80H ;检查最高位是否有中断申请
JNE INTERRUPT1 ;有,转为中断1服务的中断服务程序
我对这里有JNE不太了解,JNE不是比较不同,相同跳转么?和这个什么关系
回复列表 (共3个回复)
沙发
longerhe2 [专家分:30] 发布于 2006-10-12 18:12:00
TEST 用异或来测试两个数...然后根据结果置标志寄存器相应的位...
JNE也可以理解成结果是否为零,不为零就跳转...JE刚好相反
好像理解成:TEST AL,10000000B
板凳
tld5yj [专家分:1310] 发布于 2006-10-12 21:00:00
INTERRUPT是低电平有效吗?如果是的话,那么AL的最高位为0时和80H的最高位1来异或结果是1,所以最终结果就不为0,因此JNZ成立,所以跳转到INTERRUPT1,是这样吗?如果有误请原谅,我也是一个汇编初学者。
3 楼
救世猪猪 [专家分:560] 发布于 2006-10-14 22:38:00
test指令是与指令,同AND,只不过不保存结果,只影响标志位
TEST AL.80H ;检查最高位是否有中断申请
JNE INTERRUPT1 ;有,转为中断1服务的中断服务程序
这两句是为了测试从40端口传过来的状态
如果次高位为1的话,此时test al,80H不等于零,就去响应了
我来回复