当前位置:文档之家› 中断向量表地址

中断向量表地址





80x86实模式系统允许引入的中断可达256个,因此需 占用1K字节的存储空间来存放这256个中断服务程序 入口地址。 80x86实模式系统把中断服务程序入口地址信息设置在 存储器的最低端,即从00000H~003FFH的1K字节存 储空间中。 这一存储空间就叫中断向量表,如图13.6所示。



在中断向量表中,各中断向量按中断类型码从0到255 顺序存放。这样,知道了中断类型码,很快就可算出 相应中断向量的存放位置,从而取出中断向量。 例如,中断类型码为27H的中断所对应的中断向量应存 放在从0000H:009CH开始的4个连续字节单元中。 如果相应存储单元的内容如图13.7所示,那么27H号中 断的中断服务程序的入口地址即为8765H:4321H。
2. 中断嵌套 当CPU正在执行优先级较低的中断服务程序时,允许 响应比它优先级高的中断请求,而将正在处理的中断 暂时挂起,这就是中断嵌套。 此时,CPU首先为级别高的中断服务,待优先级高的 中断服务结束后,再返回到刚才被中断的较低的那一 级,继续为它进行中断服务。 如图13.4所示。
陷阱是在引起异常的指令执行之后触发的一种异常。 在转入异常处理程序时,引起陷阱的指令已完成。陷 阱处理程序执行完,返回到引起陷阱指令的下一条指 令。软中断指令INT n 是陷阱的例子。 中止是在系统出现严重的不可恢复的事件时触发的一 种异常。产生中止后,正执行的程序不能恢复执行, 系统要重新启动才能恢复正常运行状态。
13.1.2 中断响应和处理过程


CPU在执行每条指令的适当时刻,检测中断请求信号。 若发现中断请求信号有效,对于可屏蔽中断还必须 CPU开放中断,则在下一机器周期进入中断响应周期。 进入中断响应周期后,中断响应和处理的过程如下:
1. 关中断 CPU在响应中断时,发出中断响应信号INTA,同时内 部自动地关中断,以禁止接受其他的中断请求。 2. 保存断点 把断点处的指令指针IP值和CS值压入堆栈,以使中断 处理完后能正确地返回主程序断点。
例13.3 中断类型码为17H,若中断服务程序的入口 地址为2340H:7890H,试指出中断向量表中存放该中 断向量的4个字节单元的地址及内容。 解: 由于中断类型码为17H,所以中断向量表中存放相 应中断向量的4个字节单元的地址分别为0000:005CH、 0000:005DH、0000:005EH、0000:005FH,4个字节 单元的内容分别为 。
图13.7 中断向量的存放格式
0000:009FH
87H 65H
43H 21H
0000:009CH




由于中断向量在中断向量表中是按中断类型码(也称 中断向量号)顺序存放的,所以每个中断向量的地址 可由中断类型码乘以4计算出来。 CPU响应中断时,只要把中断类型码N左移2位(乘以 4),即可得到中断向量在中断向量表中的对应地址 4N(该中断向量所占4个字节单元的第一个字节单元的 地址)。 然后把由此地址开始的两个低字节单元的内容装入IP 寄存器: IP ← (4N, 4N+1) 再把两个高字节单元的内容装入 CS 寄存器: CS ←(4N+2, 4N+3)
INT n 指令
断点中断 溢出中断 单步中断 (INT 3) (INTO, OF=1) (TF=1)
除法错 中断
软件中断(内部中断)
中 断 控 制 器 (8259A)
IRQ7
. . . .
可 屏 蔽 中 断
硬件中断(外部中断)
关于中断分类的补充说明
为了支持多任务和虚拟存储器等功能,80386及以上 CPU 把外部中断称为“中断”(interrupt),把内部中断 称为“异常”(exception) 。与8086一样,它也最多 处理256种中断和异常。 根据引起异常的程序是否可被恢复和恢复点的不同, 又把异常分为三类: 故障(fault) 陷阱(trap) 中止(abort) 把对应的异常处理程序分别称为故障处理程序、陷阱 处理程序和中止处理程序。
00000H 00001H
低地址
3×4=000CH 0000CH (中断向量表地址) (0000:000CH)
OOH(IPL) 0AH(IPH) 00H(CSL) 1EH(CSH)
1EA00H (1E00:0A00H) FFFFFH 中断服务程序
高地址
例13.2 中断类型码为20H,则中断服务程序的入口地址 存放在中断向量表从0000:0080H开始的4个字节单元 中。若这4个字节单元的内容分别为: (0000:0080H)= 10H (0000:0081H)= 20H (0000:0082H)= 30H (0000:0083H)= 40H 试指出相应的中断服务程序的入口地址。 解: 中断服务程序的入口地址为 。
第 13 章 中断系统
本章主要内容
(1)中断及中断处理的基本概念 (2)80x86实模式中断系统 (3)可编程中断控制器8259A
13.1 基本概念
13.1.1 中断的定义 在程序运行时,系统外部、内部或现行程序本身若出 现紧急事件,处理器必须立即强行中止现行程序的运 行,改变机器的工作状态并启动相应的程序来处理这 些事件,然后再恢复原来的程序运行,这一过程称为 中断。

图13.2 软件查询流程图
保护现场 Y
A申请服务?
N B申请服务?
N C申请服务? N 恢复现场 Y Y
外设A中断服务程序
外设B中断服务程序
外设C中断服务程序
(2) 菊花链优先级排队电路 菊花链优先级排队电路是一种优先级管理的简单硬件 方案。它是在每个设备接口设置一个简单的逻辑电路, 以便根据优先级顺序来传递或截留CPU发出的中断响 应信号INTA,以实现响应中断的优先顺序。 典型的菊花链优先级结构如图13.3(a) 所示。
图13.4 中断嵌套示意图
STI
STI
. . . .
. . IRET . .
. . . IRET .


中断嵌套的深度(中断服务程序又被中断的层次)受 到堆栈容量的限制。 所以在编写中断服务程序时,必须要考虑有足够的堆 栈单元来保留多次中断的断点信息及有关寄存器的内 容。
13.2

80x86实模式的中断系统
13.2.1 中断的分类




中断分类的方式很多。 根据进入中断的方式可分为自愿中断和强迫中断。 根据其重要性可分为可屏蔽中断和不可屏蔽中断。 根据中断源的位置可分为内部中断和外部中断等等。 如图13.5所示。

图13.5 80x86实模式系统的中断分类
非屏蔽中断请求
NMI 中 断 逻 辑 INTR IRQ0
13.2.2 中断向量表
所谓中断向量(interrupt vector),实际上就是中断 服务程序的入口地址,每个中断类型对应一个中断向 量。 每个中断向量占4字节的存储单元。 其中: 前两个字节单元存放中断服务程序入口地址的偏移量 (IP),低字节在前,高字节在后; 后两个字节单元存放中断服务程序入口地址的段基值 (CS),也是低字节在前,高字节在后。

13.2.3 外部中断
由外部的中断请求信号启动的中断,称为外部中断,也 称硬件中断。 80x86 CPU为外部中断提供两条引线,即NMI和INTR, 用来输入中断请求信号。 1. 非屏蔽中断 从NMI引脚进入的中断为非屏蔽中断,它不受中断允 许标志IF的影响。 非屏蔽中断的类型码为2,因此,非屏蔽中断处理子程 序的入口地址存放在08H、09H、0AH和0BH这4个字节 单元中 。
图13.3 菊花链优先级结构 (a) 菊花链排队电路
设备1
设备2
设备3
接口
中断响应信号
中断请求
接口
接口
菊花链 逻辑
菊花链 逻辑
菊花链 逻辑
CPU
INTA
INTR
集电极开路门
+5V
图13.3 菊花链优先级结构 (b) 菊花链逻辑
中断响应信号 (低电平有效)
中断 请求 信号 (高电平有效)
INTA
INTR
3. 识别中断源 CPU要对中断请求进行处理,必须找到相应的中断服 务程序的入口地址,这就是中断的识别。 4. 保护现场 为了不使中断服务程序的运行影响主程序的状态,必 须把断点处有关寄存器(指在中断服务程序中要使用的 寄存器)的内容以及标志寄存器的状态压入堆栈保护。
5. 执行中断服务程序 在执行中断服务程序中,可在适当时刻重新开放中断, 以便允许响应较高优先级的中断。 6. 恢复现场并返回 即把中断服务程序执行前压入堆栈的现场信息弹回原 寄存器,然后执行中断返回指令,从而返回主程序继 续运行。
图13.6 实模式系统的中断向量表
类型255 (十进制) 供用户定义的中断 (共224个) ︽︾ 类型32 类型31 (十进制) 保留的中断 (共27个) ︽︾ 类型5 类型4 类型3 专用的中断 (共5个) 类型2 类型1 类型0 CS IP CS IP CS IP CS IP CS IP
CS IP


这就是使程序转入中断类型码为N的中断服务程序的控 制过程,如下面例1所示。 至于中断类型码N的来源,对于不同的中断类型(内部 中断、外部中断),情况有所不同,详见后述。
例13.1 若中断类型码为3,则由中断类型码取得中断服 务入口地址的过程如图13.8所示。
图13.8 根据中断类型码取得中断服务程序入口地址

13.1.3
中断优先级和中断嵌套
1. 中断优先级 在实际系统中,多个中断请求可能同时出现,但中断 系统只能按一定的次序来响应和处理,这时CPU必须 确定服务的次序,即根据中断源的重要性和实时性, 照顾到操作系统处理的方便,对中断源的响应次序进 行确定。 这个响应次序称为中断优先级(priority)。
相关主题