首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

这个"死循环"是如何跳出来的

2012-02-02 
这个死循环是怎么跳出来的?在看接口的编程时总有如下 死循环 WAIT:JMPWAIT不知是怎么跳出来的?高手指

这个"死循环"是怎么跳出来的?
在看接口的编程时总有如下 "死循环 "
WAIT:JMP   WAIT
不知是怎么跳出来的?
高手指点~

====================================================================
假设8255的A口、B口、C口、控制寄存器的地址分别为:60H、61H、62H、63H
MOV   AL,   10100000B
OUT   63H,   AL
MOV   AL,   00001101B
OUT   63H,   AL   ;   开中断
MOV   BX,   OFFSET   DATA
MOV   DS,   SEG   INT60
MOV   DX,   OFFSET   INT60
MOV   AX,   2560H
INT   21H   ;   置中断向量,中断号为60H
STI   ;   开标志Flags中IF位
WAIT:JMP   WAIT
INT60:MOV   AL,   [BX]
OUT   60H,   AL
TEST   AL,   ‘$’
JZ   SRET
INC   BX
JMP   INT60
SRET:IRET
========================================================================

[解决办法]
WAIT:JMP WAIT的前面设置了中断服务例程,又执行了开中断指令,如此一来,当端口有动作时会触发中断,这就使JMP WAIT交出了对cpu控制权。
[解决办法]
int8 是硬件实时时钟中断, 每秒发生 18.2 次, 所以它能够在这个判断循环中发生, 但对这个循环来说, 这样的中断是透明的

热点排行