内部中断
内部中断是指由软中断指令启动的中断,也可以是在特定条件下由CPU自身启动的中断。
类型
- 由软中断指令启动的中断。
- 在一定条件下由CPU自身启动的中断。
指令
被零除中断(INT 0)
当执行除法指令时,如果出现除数为0或商超出寄存器所能表示的范围的情况,就会触发类型为0的内部中断。这是所有内部中断中优先级最高的一种。
单步中断(INT 1)
当TF=1且IF=1时,每执行一条指令都会引发一次中断,程序控制会转移到单步中断服务程序。这种中断方式对于程序调试非常有用,因为它能够追踪指令流,帮助定位程序错误。
溢出中断(INTO INT 4)
如果指令执行的结果导致溢出标志位OF置1,那么在执行溢出中断指令INTO时,将会触发类型为4的内部中断。需要注意的是,溢出状态并不会自动触发中断,而是需要通过INTO指令来实现。
断点中断(INT 3)
8086/8088指令集包含了一个单字节中断指令INT 3,其作用是让CPU跳转至断点中断服务程序。这个指令允许程序员在程序任意位置设置断点,以便在调试过程中检查程序的运行结果。
指令中断
这是一种由用户定义的双字节中断指令,其中第一个字节是操作码,第二个字节n代表中断类型号。
特点
1. 内部中断可以通过INT n指令产生中断类型码,或者由指令指定,也可能是预设的。
2. 不执行INTA总线周期,CPU也不会发送响应信号INTA。
3. 除了单步中断之外,其他内部中断无法通过软件禁用。
4. 除了单步中断之外,内部中断的优先级高于外部中断。
参考资料
stm32入门学习4-内部中断.CSDN博客.2024-11-05
外部中断和内部中断.博客园.2024-11-05
外部中断和内部中断 硬中断 软中断 中断下半部.CSDN博客.2024-11-05