中斷向量表

存放中斷服務程序的首地址

中斷源的識別標誌,可用來形成相應的中斷服務程序的入口地址或存放中斷服務程序的首地址稱為中斷向量。在Pc/AT中由硬體產生的中斷標識碼被稱為中斷類型號(當然,中斷類型號還有其他的產生方法,如指令中直接給出、CPU自動形成等),即在中斷響應期間8259A產生的是當前請求中斷的最高優先順序的中斷源的中斷類型號。中斷類型號和中斷向量之間有下面的關係:中斷類型號×4=存放中斷向量的首地址 有了存放中斷向量的首地址,從該地址開始的4個存儲單元中取出的就是中斷服務程序的入口。

介紹


是指中斷服務程序入口地址的偏移量與段基值,一個中斷向量佔據4位元組空間。中斷向量表是8088系統內存中最低端1K位元組空間,它的作用就是按照中斷類型號從小到大的順序存儲對應的中斷向量,總共存儲256個中斷向量。在中斷響應過程中,CPU通過從介面電路獲取的中斷類型號(中斷向量號)計算對應中斷向量在表中的位置,並從中斷向量表中獲取中斷向量,將程序流程轉向中斷服務程序的入口地址。

列表


80x86系統是把所有的中斷向量集中起來,按中斷類型號從小到大的順序存放到存儲器的某一區域內,這個存放中斷向量的存儲區叫做中斷向量表,即中斷服務程序入口地址表。
由於中斷向量表可以在操作系統層面靈活修改,因此,不同的系統的中斷向量表可能是不同的。此外,intel在CPU的保護模式下,佔用了0x00 ~ 0x1F共32個中斷號,在Linux下,是從0x20開始用於系統自身的中斷的,包括8259晶元的中斷重置。
BIOS(實模式)的中斷向量表如下:

80x86

I/O ADDRINT TYPE(16進位)FUNCTION
00 ~ 03除法溢出中斷
04 ~ 071單步(用於DEBUG)
08 ~ 0B2非屏蔽中斷(NMI)
0C ~ 0F3斷點中斷(用於DEBUG)
10 ~ 134溢出中斷
14 ~ 175列印屏幕
18 ~ 1F6/7保留

8259主片

I/O ADDRINT TYPE(16進位)FUNCTION
20 ~ 238定時器(IRQ0)
24 ~ 279鍵盤(IRQ1)
28 ~ 2BA彩色/圖形(IRQ2)
2C ~ 2FB串列通信COM2(IRQ3)
30 ~ 33C串列通信COM1(IRQ4)
34 ~ 37DLPT2控制器中斷(IRQ5)
38 ~ 3BE磁碟控制器中斷(IRQ6)
3C ~ 3FFLPT1控制器中斷(IRQ7)

BIOS

I/O ADDRINT TYPE(16進位)FUNCTION
40 ~4310視頻顯示 I/O
44 ~ 4711設備檢驗
48 ~ 4B12測定存儲器容量
4C ~ 4F13磁碟 I/O
50 ~ 5314RS-232 串列口 I/O
54 ~ 5715系統描述表指針
58 ~ 5B16鍵盤 I/O
5C ~ 5F17印表機 I/O
60 ~ 6318ROM BASIC 入口代碼
64 ~ 6719引導裝入程序
68 ~ 6B1A日時鐘

提供用戶中斷

I/O ADDRINT TYPE(16進位)FUNCTION
6C ~ 6F1BCtrl - Break 控制的軟中斷
70 ~ 731C定時器控制的軟中斷
74 ~ 771D視頻參數塊
78 ~ 7B1E軟盤參數塊
7C ~ 7F1F圖形字元擴展碼
在DOS系統(實模式)下,從0x20開始,用於操作系統本身。

DOS

I/O ADDRINT TYPE(16進位)FUNCTION
80 ~ 8320DOS 中斷返回
84 ~ 8721DOS 系統功能調用
88 ~ 8B22程序中止時 DOS 返回地址(用戶不能直接調用)
8C ~ 8F23Ctrl - Break 處理地址(用戶不能直接調用)
90 ~ 9324嚴重錯誤處理(用戶不能直接調用)
94 ~ 9725絕對磁碟讀功能
98 ~ 9B26絕對磁碟寫功能
9C ~ 9F27終止並駐留程序
A0 ~ A328DOS安全使用
A4 ~ A729快速寫字元
A8 ~ AB2AMicrosoft 網路介面
B8 ~ BB2E基本 SHELL 程序裝入
BC ~ BF2F多路服務中斷
CC ~ CF33滑鼠中斷
104 ~ 10741硬碟參數塊
118 ~ 11B46第二硬碟參數塊
11C ~ 3FF47 ~ FFBASIC 中斷

保護模式

在Linux下(保護模式),沒有使用BIOS設置的中斷向量表,0x00 ~ 0x1F是CPU保護模式下的默認中斷向量,而0x20開始,都是被Linux系統重新設置的。
X86佔用的中斷向量表如下:
向量號助記符說明類型錯誤號產生源
#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#MFx87 FPU浮點錯誤故障
17#AC對齊檢查故障有(0)對內存中任何數據的引用。
18#MC機器檢查異常終止錯誤碼(若有)和產生源與CPU類型有關。
19#XFSIMD浮點異常故障
Linux自己設置的中斷以後再添加。