PC 中断系统

实现中断功能的软件和硬件装置称为中断系统。PC 的中断系统构成如图 1 所示。

8086/8088 中断系统构成

图 1 8086/8088 中断系统构成

PC 系列的中断系统可处理 256 个不同的中断。为识别每一个中断,将它们编号为 0~FFH(即 0~255),中断的这个编号叫中断类型号,简称中断号。

从整个系统角度出发,中断可划分成如下 3 种类型。

(1)外部中断(中断源是外部设备),其中断号为 08H~0FH。

(2)内部中断(中断源是内部处理器),其中断号为 00H~07H。

(3)软中断(中断源是中断指令),其中断号为 10H~FFH。

一、外部中断

凡通过 CPU 的 INTR 输入引脚触发的 CPU 中断统称为外部中断。CPU 对这类中断的响应与否取决于中断允许标志 IF 的状态,可用开中断指令 STI 和关中断指令 CLI 加以允许和禁止。因此,外部中断是可屏蔽中断。

外部中断由各种外部设备请求产生,如键盘、打印机、串行口、磁盘驱动器以及各种专用设备等。它们都是通过中断方式与 CPU 进行通信的。由于外设较多,CPU 只有一个可屏蔽中断请求输入引脚 INTR,因此,外部中断源要通过可编程中断控制器 8259A 与 CPU 相连。8086/8088 系统使用一片 8259A 支持 8 个外中断源,80286/80386/80486 系统使用两片 8259A 级连支持 15 个外中断源。一个系统利用一个 8259A 主片和 8 个 8259A 从片的级连至多可管理 64 级外中断。

中断控制器 8259A 具有中断优先级判定功能,故多级外中断可实时地提出中断请求,中断控制器根据对其编程设定的优先级规则,决定将某个中断源的请求向 CPU 发出,并提供相应的中断类型号,使 CPU 接受中断请求后转到相应的中断处理程序为其服务。CPU 响应中断允许多层嵌套。

只要 CPU 在响应某级中断进入中断处理例程之后执行了开中断指令,那么,更高一级的中断请求随时会被响应。

CPU 可真正允许或禁止外中断,不仅通过开中断和关中断指令在程序某一部分允许或禁止外中断,而且,通过对中断控制器中的屏蔽寄存器的编程设定,能将这种允许或禁止中断随意地定位到任何一个外中断源上。

PC 为常用的外部中断安排了固定类型号的中断,如表 1 所示。它们的中断处理程序也由系统提供。

PC 的外部中断源

表 1 PC 的外部中断源

二、内部中断

内部中断是在系统运行时,当内部硬件出错(如内存奇偶校验错、协处理器异常),或微处理器遇到某些特殊事件(如除数零、运算溢出或跟踪标志置位)时引起的一类中断。它们不受中断允许标志 IF 的控制,其中断处理程序一般由系统提供。

内部中断有如下两类。

  1. 非屏蔽中断

    这是连接在 CPU、NMI 输入引脚上的中断源的中断,它不受中断允许标志 IF 的影响,比可屏蔽中断有更高的优先级,一旦在 NMI 引脚上产生了中断请求信号,CPU 都将响应这个中断请求。

    在实模式下定义的非屏蔽中断是当系统出现内存奇偶校验错或协处理器异常所触发的 2 号中断。

  2. 微处理器中断

    在实模式下定义的微处理器中断有 4 种。

    (1)除法错(中断 0)。

    当除法运算出现商超出机器表示范围或除数为 0 时,自动引发 0 号中断。

    (2)单步执行(中断 1)。

    当执行一条指令后检测到跟踪标志 TF 置位时,产生 1 号单步中断。

    (3)断点(中断 3)。

    当执行指令 INT3 时引发该中断,用于在程序某处设置断点,以便调试。

    (4)溢出(中断 4)。

    在溢出情况下(OF=1),若执行指令 INTO 时,便产生 4 号中断。

三、软中断

软中断是指当 CPU 执行指令“INT N”时,便转去执行一个中断类型号为 N 的中断服务程序这样一个过程。软中断无须硬件支持,也不能被屏蔽。

从中断的概念上来说,软中断并不是真正意义上的中断,它更类似于一个段间的过程调用,只是调用过程的机制同真正的中断是相同的。软中断的调用入口地址同所有的中断一样,存放在中断向量表中。这样,它既可被任何程序段调用(只要相应的中断服务程序存在于内存中),又可通过改变中断向量使用一条中断指令实际上执行不同的中断服务程序。这些明显的特点是过程调用无可比拟的。因此,软中断形式不仅被系统支持的各种功能所利用,而且被大量的应用程序所利用。由于 PC 系列已定义 0~7 为内部中断号,8~0FH 为外部中断号,因此,软中断号定义从 10H 到 FFH。

请参阅

(完)

comments powered by Disqus