8.2 中断
8.2 中断
在计算机系统中,引入中断的最初目的是为了提高系统的输入输出性能。随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序、分时系统、实时处理、程序监视和跟踪等领域。
8.2.1 中断的基本概念
下面只简单介绍与汇编语言程序设计有关的中断知识,使本章的知识具有一定完整性。有关中断的详细 介绍可参阅《计算机组成原理》课程中的相关章节。
1、中断和中断源
所谓中断就是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中断源,称处理紧急事务的程序为中断服务程序或中断处理程序。 计算机系统还根据紧急事务的紧急程度,把中断分为不同的优先级,并规定:高优先级的中断能暂停低优先级的中断服务程序的执行。
计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入输出请求,如:键盘输入引起的中断,通信端口接受信息引起的中断等;还有一些计算机内部的异常事件,如:0作除数、奇偶校验错等。
CPU在执行程序时,是否响应中断要取决于以下三个条件能否同时满足:
(1)、有中断请求;
(2)、允许CPU接受中断请求;
(3)、一条指令执行完,下一条指令还没有开始执行。
条件(1)是响应中断的主体。除用指令INT所引起的软件中断之外,其它中断请求信号是随机产生的,程序员是无法预见的。 程序员可用程序部分地控制条件(2)是否满足,即可用指令STI和CLI来允许或不允许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 | 打印机 |