中断向量表的中断向量1
发布网友
发布时间:2023-10-16 01:04
我来回答
共2个回答
热心网友
时间:2024-11-25 16:53
是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是8088系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。
热心网友
时间:2024-11-25 16:54
80x86系统是把所有的中断向量集中起来,按中断类型号从小到大的顺序存放到存储器的某一区域内,这个存放中断向量的存储区叫做中断向量表,即中断服务程序入口地址表。
由于中断向量表可以在操作系统层面灵活修改,因此,不同的系统的中断向量表可能是不同的。此外,intel在CPU的保护模式下,占用了0x00
~
0x1F共32个中断号,在Linux下,是从0x20开始用于系统自身的中断的,包括8259芯片的中断重置。
BIOS(实模式)的中断向量表如下:
在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自己设置的中断以后再添加。