8.2 中断

在计算机系统中,引入中断的最初目的是为了提高系统的输入输出性能。随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序、分时系统、实时处理、程序监视和跟踪等领域。

8.2.1 中断的基本概念

下面只简单介绍与汇编语言程序设计有关的中断知识,使本章的知识具有一定完整性。有关中断的详细 介绍可参阅《计算机组成原理》课程中的相关章节。

1、中断和中断源

所谓中断就是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中断源,称处理紧急事务的程序为中断服务程序或中断处理程序。 计算机系统还根据紧急事务的紧急程度,把中断分为不同的优先级,并规定:高优先级的中断能暂停低优先级的中断服务程序的执行。

计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入输出请求,如:键盘输入引起的中断,通信端口接受信息引起的中断等;还有一些计算机内部的异常事件,如:0作除数、奇偶校验错等。

CPU在执行程序时,是否响应中断要取决于以下三个条件能否同时满足:

(1)、有中断请求;
(2)、允许CPU接受中断请求;
(3)、一条指令执行完,下一条指令还没有开始执行。

条件(1)是响应中断的主体。除用指令INT所引起的软件中断之外,其它中断请求信号是随机产生的,程序员是无法预见的。

程序员可用程序部分地控制条件(2)是否满足,即可用指令STICLI来允许或不允许CPU响应可屏蔽的外部中断。而对于不可屏蔽中断和内部中断,CPU一定会响应它们的,程序员是无控制权的。CPU一定会执行这些中断的中断服务程序。

2、断向量表和中断服务程序

中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的入口地址(偏移量和段地址)。在微机系统中,该向量表有256个元素(0~0FFH),每个元素占4个字节,总共1K字节,其在内存中的存储形式及其存储内容如图8.2所示。

图8.2中的“中断偏移量”和“中断段地址”是指该中断服务程序入口单元的“偏移量”和“段地址”。由此不难看出:假如中断号为n,那么,在中断向量表中存储该中断处理程序的入口地址的单元地址为:4n。

表8.2说明了前16个中断向量表中列举了部分常用的中断号。

图8.2 中断向量表

表8.2 部分常用的中断号及其含义

中断号 含义 中断号 含义
0 除法出错 8 定时器
1 单步 9 键盘
2 非屏蔽中断 A 未用
3 断点 B COM2
4 溢出 C COM1
5 打印屏幕 D 硬盘(并行口)
6 未用 E 软盘
7 未用 F 打印机