非屏蔽外部中断
当收到NM1传入的中断请求信号时,不管是否处于开中断状态,CPU总是会响应中断。
非屏蔽外部中断主要由电源掉电,存储器出错,或总线奇偶校验错等紧急故障产生,要求CPU及时处理。
五、内部中断
CPU内部某个事件引起的中断称为内部中断。内部中断由CPU在执行某些指令时产生,也叫做软中断。内部中断不受中断允许标志IF的控制。
1、中断指令INT 引起的中断
格式: INT n
其中n是0~0FFH的立即数,执行后产生一个类型号为n的中断。
例: INT 21H产生一个21H中断,转入对应的中断处理,即转入DOS系统功能服务程序。
MOV AH, 01
INT 21H
输入功能调用。
2、CPU遇到特殊情况引起的中断
除法中断,除数为0或商超出了规定的范围,产生一个除法错误中断,中断类型号为0
MOV AX, 1234D
MOV CL, 3
DIV CL
上述代码产生0号中断。为避免中断,应改写:
MOV AX, 1234D
MOV CL, 3
XOR DX, DX
XOR CH, CH
DIV CX
溢出中断
使用INT0来检测溢出中断错误。在OF=1时执行。
该指令溢出中断类型号为4.如果OF=0执行该指令不会产生中断。
3、用于调试的中断
单步
如果TF=1,每条指令产生一个单步中断。
中断时,TF=0,所以不会以单步方式执行单步处理程序。
通常,由调试工具把TF置为1。单步处理程序中可报告各寄存器当前的内容。
断点中断
8086,8088中中断指令INT3执行后产生类型号为3的中断,称为断点中断。
六、中断优先级和中断嵌套
优先级:
内部中断 > 非屏蔽中断 > 可屏蔽中断 > 单步中断
中断命令寄存器可改变可屏蔽中断内的设备中断优先级。默认优先级为0~7
中断嵌套:
在中断处理程序时,又发生中断,叫做中断嵌套。发生非屏蔽中断时,也会引起中断嵌套。
例:
PUSH DS
MOV AX, SEG INT.ROUT
MOV DS, AX
MOV DX, OFFSET INT.ROUT
MOV AL, 9
MOV AH, 25H
INT 21H
POP DS