中断源的识别标志, 可用来形成相应的中断服务程序的入口地址或存放中断服务程序的来自首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然360百科,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中具月掌背湖硫耐东望断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断向量的首地址 有了存放中断向量的首地址,从该地址开始的4的急步那门系最个存储单元中取出的就是中断服务程序的入口
是指中断来自服务程序入口地址的偏移量与段基址,一个中断向量占会固耐束吃知命紧女展据4字节空间。中断向量表是8086系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺火序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。
8你极花米以晶0x86系统是把所有的中断向量集中起来,按中断类型号从小到大的顺序存放到存储器的某一区域内,这个存放中断向量的存储区叫做中断向量表,即中断服务程序入口地址表。
由于中断向量表可以在操作系统层面灵活修改,因此,不同的系统的中断向量表可能是不同的。此外,intel在CPU的保护模式下,占用了0x00 ~ 0x1F共32个中断号,在Lin术解际妈愿视具ux下,是从0x20开始用于系统自身的中断的,包括8259芯片的中断重置。
BIOS(实模式)的中断向量表如下:
I/O ADDR | I360百科NT TYPE(16进制) | FUNCTION |
00 ~ 03 | 0 | 除法溢出中断 |
04 ~ 07 | 1 | 单步(用于DEBUG) |
08 ~ 0B | 2 | 非屏蔽中断(NMI) |
0C ~ 0F | 3 | 断点中断(用于DEBUG) |
呢模死刑元沉刚是 10 ~ 13 | 4 | 溢出中断 |
14 ~ 17 | 5 | 打印屏幕 |
穿题加门的磁你 18 ~ 1F | 6/7 | 保留 |
I/O ADDR | INT TYPE(16进制) | FUNCTION |
20 ~ 23 | 8 | 定时器措极却挥令(IRQ0) |
24 ~ 27 | 9 | 键盘(IR项确数杂Q1) |
28 ~ 2B | A | 费歌最很氢团践握刚乙燃 彩色/图形(IRQ2) |
2C ~ 2F | B | 串行通信队分再雷角行根据的该COM2(IRQ3) |
30 ~ 粮社灯入规十本副33 | C | 串行通信COM1(IRQ4) |
34 ~ 3单速命卫品7 | D | LPT2控制器中断(IRQ5) |
38 ~ 3B | E | 磁盘控制器中断(IRQ6) |
3C ~ 3F | F | 随 LPT1控制器中断(IRQ7) |
I/O ADDR | INT TYPE(16进制) | FUNCTION |
40 ~43 | 10 | 视频显示 I/O |
44 ~ 47 | 11 | 设备检验 |
48 ~ 4B | 12 | 测定存储器容费量 |
4C ~ 4F | 13 | 磁盘 I/O |
50 ~ 53 | 气交反显地武易样课 14 | RS-232 串行口 破那I/O |
54 ~ 57 | 15 | 系统描述表指针 |
58 ~ 5B | 16 | 键盘 I/O |
5过必艺C ~ 5F | 17 | 打印机 I/O |
60 ~ 63 | 18 | ROM BASIC 入口代码 |
64 ~ 67 | 19 | 引导装入程序 |
68 ~ 6B | 1A | 日时钟 |
I/O ADDR | INT TYPE(16进制) | FUNCTION |
6C ~ 6F | 1B | Ctrl - Break 控制的软中断 |
频误条轮火以只棉直息 70 ~ 73 | 1C | 定时器控制的软中断 |
74 ~ 77 | 1D | 视频参数块 |
78 ~ 7B | 1E | 软盘参数块 |
7C ~ 7F | 1F | 图形字符扩展码 |
在DOS系统(实模式)下,从0x20开始,用于操作系统本身。
I/O ADDR | INT TYPE(16进制) | FUNCTION |
80 ~ 83 | 20 | DOS 中断返回 |
84 ~ 87 | 21 | DOS 系统功能调用 |
88 ~ 8B | 22 | 程序中止时 DOS 返回地址(用户不能直接调用) |
8C ~ 8F | 23 | Ctrl - Break 处理地址(用户不能直接调用) |
90 ~ 93 | 24 | 严重错误处理(用户不能直接调用) |
94 ~ 97 | 25 | 绝对磁盘读功能 |
98 ~ 9B | 26 | 绝对磁盘写功能 |
9C ~ 9F | 27 | 终止并驻留程序 |
A0 ~ A3 | 28 | DOS安全使用 |
A4 ~ A7 | 29 | 快速写字符 |
A8 ~ AB | 2A | Microsoft 网络接口 |
B8 ~ BB | 2E | 基本 SHELL 程序装入 |
BC ~ BF | 2F | 多路服务中断 |
CC ~ CF | 33 | 鼠标中断 |
104 ~ 107 | 41 | 硬盘参数块 |
118 ~ 11B | 46 | 第二硬盘参数块 |
11C ~ 3FF | 47 ~ FF | BASIC 中断 |
在Linux下(保护模式),没有使用BIOS设置的中断向量表,0x00 ~ 0x1F是CPU保护模式下的默认中断向量,而0x20开始,都是被Linux系统重新设置的。
X86占用的中断向量表如下:
向量号 | 助记符 | 说明 | 类型 | 错误号 | 产生源 |
---|---|---|---|---|---|
0 | #DE | 除出错 | 故障 | 无 | DIV或IDIV指令。 |
1 | #DB | 调试 | 故障/陷阱 | 无 | 任何代码或数据引用,或是INT 1指令。 |
2 | -- | NMI中断 | 中断 | 无 | 非屏蔽外部中断。 |
3 | #BP | 断点 | 陷阱 | 无 | INT 3指令。 |
4 | #OF | 溢出 | 陷阱 | 无 | INTO指令。 |
5 | #BR | 边界范围超出 | 故障 | 无 | BOUND指令。 |
6 | #UD | 无效操作码 | 故障 | 无 | UD2指令或保留的操作码。 |
7 | #NM | 设备不存在 | 故障 | 无 | 浮点或WAIT/FWAIT指令。 |
8 | #DF | 双重错误 | 异常终止 | 有(0) | 任何可产生异常、NMI或INTR的指令。 |
9 | -- | 协处理器段超越(保留) | 故障 | 无 | 浮点指令 |
10 | #TS | 无效的任务状态段TSS | 故障 | 有 | 任务交换或访问TSS |
11 | #NP | 段不存在 | 故障 | 有 | 加载段寄存器或访问系统段 |
12 | #SS | 堆栈段错误 | 故障 | 有 | 堆栈操作或SS寄存器加载 |
13 | #GP | 一般保护错误 | 故障 | 有 | 任何内存引用和其他保护检查 |
14 | #PF | 页面错误 | 故障 | 有 | 任何内存引用 |
15 | -- | (intel保留) | 无 | ||
16 | #MF | x87 FPU浮点错误 | 故障 | 无 | |
17 | #AC | 对齐检查 | 故障 | 有(0) | 对内存中任何数据的引用。 |
18 | #MC | 机器检查 | 异常终止 | 无 | 错误码(若有)和产生源与CPU类型有关。 |
19 | #XF | SIMD浮点异常 | 故障 | 无 |
Linux自己设置的中断以后再添加。