首页 理论教育 中断触发方式及类型码

中断触发方式及类型码

时间:2023-11-03 理论教育 版权反馈
【摘要】:这三种软中断的触发方式各不相同。溢出中断的中断类型码为4,在INTO指令执行时被触发。单步中断的触发由处理机TF标志位控制,如果TF标志位被置1,则在每条指令执行结束后处理机都会触发一次单步中断。如果IF位为1,则中断事件将被处理机响应,硬中断被触发,对应的中断处理程序得到执行;如果IF位为0,则中断事件被屏蔽。

中断触发方式及类型码

在基于X86处理机的微机系统中,中断根据其触发源的不同而被分为硬中断和软中断(或外中断和内中断),它们的触发方式是不同的。

1.软中断的触发

X86处理器的软中断又称内中断,是由处理器内部原因触发的中断。软中断可以分成三类:处理机错误中断、调试中断和系统陷入。这三种软中断的触发方式各不相同。

●处理机错误中断

处理机错误中断是由处理机运行过程中发生的一些特定错误而触发的。这类中断有两种:除法错中断和溢出中断。除法错中断是在除法运算过程中除数为0或除数过小造成商无法被正确表示引起的,其中断类型码为0,中断将在除法指令执行时被触发。

和除法错中断有所不同,溢出中断的触发有两个先决条件:处理机的OF标志位为1,以及执行了INTO指令。溢出中断的中断类型码为4,在INTO指令执行时被触发。

●调试中断

调试中断用于调试程序,有两种:单步中断和断点中断。单步中断的触发由处理机TF标志位控制,如果TF标志位被置1,则在每条指令执行结束后处理机都会触发一次单步中断。单步中断的中断类型码为1。

断点中断由断点中断指令INT 3触发,处理机执行到INT 3指令的时候,就会触发类型码为3的断点中断。

断点中断用于在调试程序时设置断点使用。在使用类似DEBUG这样的调试程序对被调试程序设置断点时,调试程序会把被调试程序要设置断点的地址中包含的指令替换为INT 3指令,使得程序执行到该地址时可以通过断点中断返回到调试程序的控制之下。这时调试程序再将INT 3指令还原为原来的指令,完成一次断点过程。虽然汇编助记符完全相同,但是和用作处理机陷入指令的INT n指令不同,INT 3指令产生的机器码为一个字节(CC),而不是INT n指令的两个字节(CD n)。这是由于INT 3指令需要被用于替换任何指令,所以在指令集设计的时候INT 3指令被特殊设计为一个单字节指令。

●系统陷入

当处理机执行到用于系统陷入的INT n指令时,将触发对应类型的中断,转到相应的中断服务程序处理。INT n指令一般被用于系统陷入,通过INT n指令调用某些特定的系统功能。

INT n指令中的n可以是0~255的任何一个值,也就是说,程序可以通过INT n指令触发任何一种类型的中断。但是,对于某些中断(如溢出中断和后面要提到的硬中断),其中断处理程序被用来对特定场景进行处理(比如键盘上的某个键被按下、串行通信接口有振铃信号等),使用INT n指令触发这些中断可能会引发一些不可预知的错误。(www.xing528.com)

2.硬中断的触发

X86硬中断又称为外中断,是由处理机外部原因触发的中断。根据触发源的不同,硬中断又被分为不可屏蔽中断和可屏蔽中断两种。

不可屏蔽中断(或称作非屏蔽中断)来自于处理机的NMI引脚,该引脚上的信号上升沿将触发中断类型码为2的外中断。不可屏蔽中断不能被处理机中断屏蔽标志位IF屏蔽,一般被用于诸如电源失效等非常紧急的意外处理,有时也被用于处理实时时钟,以保证实时时钟的准确性。

可屏蔽中断来自于处理机的INTR引脚,该引脚上的高电平代表中断事件的发生,此时处理机根据中断屏蔽位的状态决定是否响应该中断。如果IF位为1,则中断事件将被处理机响应,硬中断被触发,对应的中断处理程序得到执行;如果IF位为0,则中断事件被屏蔽。IF位可以通过STI和CLI指令进行置1或清0,由于STI指令置IF位为1将允许处理机响应可屏蔽中断,所以STI指令又被称作开中断指令,类似地,CLI指令又被称作关中断指令。

在基于X86处理机的微型计算机系统中,处理机的INTR引脚通常和可编程中断控制器Intel 8259A的中断请求信号INT相连接,接收8259A的中断请求。系统中的外围设备(如键盘、定时器、串行/并行接口等)的中断请求线连接到8259A的中断请求输入端IRn上,由8259A统一管理这些外围设备的中断请求。由于8259A可以通过将对应中断屏蔽位设为1(禁止中断请求)或0(允许中断请求)针对每个不同的外围设备中断请求进行单独屏蔽,所以,一个外围设备的中断请求能够得到处理机的响应要满足三个先决条件:

●处理机允许中断(IF=1);

●可编程中断控制器8259A允许该外围设备中断(对应的中断屏蔽位为0);

●没有更高级别的中断发生。

3.中断的优先级

当多个中断事件同时发生时,处理机应当响应哪个中断事件就取决于中断的优先级,高优先级的中断将优先得到响应。在X86处理机中,中断的优先级从高到低排列如下:

其中,可屏蔽中断的优先级还根据中断源设备的连接次序而不同,在当前基于X86系列微处理机的微机系统中,定时器中断在各种可屏蔽中断中具有最高优先级,键盘中断其次……,这些设备的优先级是根据它们连接到8259A可编程中断控制器的连接方式决定的,连接在IR0引脚上的设备(定时器)具有最高优先级,其次是IR1(键盘)、IR2、……

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈