【正确答案】可设置如下中断屏蔽字:
MOV AL, 11111101B ;中断屏蔽寄存器中,D1为0表示允许键盘中断,D1=1表示禁止键盘中断
OUT 21H,AL ;21H是中断屏蔽寄存器的I/O端口地址
如果系统中要新增设键盘中断,则可用下列指令实现:
IN AL,21H
MOV AL,11111101B
OUT 21H, AL
在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许用中断方式工作的外部设备。
外部设备向CPU发出中断请求,CPU是否响应还与标志寄存器中的中断标志位I有关。如果I=0,CPU就禁止响应任何外设的中断,也就是说,CPU将不会产生中断来处外设的请求;如果I=1,就允许CPU响应外设的中断请求。有两条指令能设置或清除1位:
STI设置中断允许位(I=1)
CLI消除中断允许位(I=0)
允许CPU响应外设的中断清求(I=1)也叫做开中断,反之叫做关中断(I=0)。
当任何类型的中断发生时,当前的FLAGS要保存入栈,然后清除I位进入中断处理程序。如果允许在一个中断处理程序的执行过程中发生中断,则必须用一条STI指令开中断。当执行到中断返回指令IRET时,又取出FLAGS先前的值,其中I为1,CPU将允许外中断再次发生。
有一种特殊的外部中断和I标志位无关,这就是非屏蔽中断。非屏蔽中断的类型号为2,CPU不能禁止非屏蔽中断。如果系统使用了这种类型的中断,那么CPU总会响应的,所以非屏蔽中断主要用于一些紧急的故障处理,如电源掉电等。
【答案解析】