中斷向量表

中斷向量表

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

基本信息

介紹

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

列表

80x86系統是把所有的中斷向量集中起來,按中斷類型號從小到大的順序存放到存儲器的某一區域內,這個存放中斷向量的存儲區叫做中斷向量表,即中斷服務程式入口地址表。

由於中斷向量表可以在作業系統層面靈活修改,因此,不同的系統的中斷向量表可能是不同的。此外,intel在CPU的保護模式下,占用了0x00 ~ 0x1F共32箇中斷號,在Linux下,是從0x20開始用於系統自身的中斷的,包括8259晶片的中斷重置。

BIOS(實模式)的中斷向量表如下:

80x86

I/O ADDR INT 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 保留

8259主片

I/O ADDR INT TYPE(16進制) FUNCTION
20 ~ 23 8 定時器(IRQ0)
24 ~ 27 9 鍵盤(IRQ1)
28 ~ 2B A 彩色/圖形(IRQ2)
2C ~ 2F B 串列通信COM2(IRQ3)
30 ~ 33 C 串列通信COM1(IRQ4)
34 ~ 37 D LPT2控制器中斷(IRQ5)
38 ~ 3B E 磁碟控制器中斷(IRQ6)
3C ~ 3F F LPT1控制器中斷(IRQ7)

BIOS

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
5C ~ 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開始,用於作業系統本身。

DOS

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自己設定的中斷以後再添加。

相關詞條

相關搜尋

熱門詞條

聯絡我們