版权归原作者所有,如有侵权,请联系我们

[科普中国]-可屏蔽中断标志

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

CPU响应中断的两个控制条件

从外设发出中断请求到cpu响应中断,有两个控制条件是起决定性作用的,一是该外设的中断请求是否屏蔽,另一个是CPU是否允许响应中断。这两个条件分别是由中断屏蔽寄存器(IMR)和标志寄存器(FLAGS)中的中断允许位(IF)控制。2

中断屏蔽寄存器的I/O端口地址是21H,它的8位对应控制8个外部设备,通过设置这个寄存器的某位为0或者1来允许或禁止某外部设备的中断。某位为0表示允许某种外设中断请求,某位为1表示某种外设的中断请求被屏蔽。在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器 ,以确定允许用中断方式工作的外部设备。2

外部设备向CPU发出中断请求,CPU是否相应还与标志寄存器中的中断标志位IF有关。如果IF等于0,cpu就禁止响应任何外设的中断,也就是说,CPU将不会产生中断来处理外设的请求。如果IF等于1,则允许CPU响应外设的中断请求。2

中断屏蔽技术中断屏蔽技术主要用于多重中断。

多重中断的概念当CPU正在执行某个中断服务程序时,另一个中断源又提出了新的中断,而且此中断的优先级比正在运行的服务程序高,CPU响应了这个新的请求,暂时停止正在运行的服务程序,转去执行新的中断服务程序,这称为多重中断,又称中断嵌套;如果新中断服务程序的优先级比正在运行的服务程序低,CPU则不会响应这个新的请求。如果与优先度无关,CPU对所有新的请求都不予响应,待执行完当前的服务程序后再响应,即为单重中断,中断系统若要具有处理多重中断的功能,必须具备各项条件。3

实现多重中断的条件提前设置开中断指令

CPU进入中断周期后,由中断隐指令自动将使能全局中断标志位置零,即关中断,这就意味着CPU在执行中断服务程序中禁止响应新的中断请求。CPU若想再次响应中断请求,必须开中断,这一任务通常由中断服务程序中的开中断指令实现。3

优先级别高的中断源有权中断优先级别低的中断源

为了保证级别低的中断源不干扰比其级别高的中断源的中断处理过程。可采用屏蔽技术**。3**

屏蔽技术当中断源被屏蔽(屏蔽触发器mask=1),此时即使完成触发器D=1,中断查询信号到来时刻只能将中断请求触发器INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。若该中断源未被屏蔽(mask=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,该信号送至排队器进行优先级判断。3

可屏蔽中断处理过程中的标志位的处理微处理器获得外部中断源的中断号后,把标志寄存器FLAGS压入堆栈,并置IF=0,关闭中断;置陷阱标志(当陷阱标志被设置为1时,CPU进入单步模式,所谓单步模式就是CPU在每执行一步指令后都产生一个单步中断。主要用于程序的调试)为0,防止单步执行。中断服务程序执行完毕之后,要返回主程序,因此,要恢复断点和标志寄存器的内容。4