標籤: 暫無標籤

早期的微機系統中將由硬體產生的中斷標識碼(中斷源的識別標誌,可用來形成相應的中斷服務程序的入口地址或存放中斷服務程序的首地址)稱為中斷向量。

1概念介紹

中斷標識碼(中斷類型號):
由硬體(通常是中斷控制器)產生,以標識不同的中斷源。
中斷向量
中斷向量:
中斷服務程序的入口地址。在某些計算機中,中斷向量的位置存放一條跳轉到中斷服務程序入口地址的跳轉指令。
中斷向量地址:
存儲中斷向量的存儲單元地址

2中斷

中斷是指在計算機執行程序的過程中,當出現異常情況或者特殊請求時,計算機停止現行的程序的運行,轉而對這些異常處理或者特殊請求的處理,處理結束后再返回到現行程序的中斷處,繼續執行原程序。
跳轉
跳轉到中斷服務程序的入口地址
在AVR或ARM微處理器中,中斷向量的大小也是4個位元組,但其中存放的不是中斷程服務程序的入口地址,而是可執行的代碼。當響應中斷時,硬體自動執行相應中斷向量處的跳轉代碼,然後跳轉到具體的中斷服務程序的入口地址。

3向量表

CPU是根據中斷號獲取中斷向量值,即對應中斷服務程序的入口地址值。因此為了讓CPU由中斷號查找到對應的中斷向量,就需要在內存中建立一張查詢表,即中斷向量表(在32位保護模式下該表稱為中斷描述符表)。80x86微機支持256個中斷,對應每個中斷需要安排一個中斷服務程序。在 80x86實模式運行方式下,每個中斷向量由4位元組組成。這4位元組指明了一個中斷服務程序的段值和段內偏移值。因此整個向量表的長度為1KB。當 80x86微機啟動時,ROM BIOS中的程序會在物理內存開始地址0x0000:0x0000處初始化並設置中斷向量表,而各中斷的默認中斷服務程序則在BIOS中給出。由於中斷向量表中的向量是按中斷號順序排列,因此給定一個中斷號N,那麼它對應的中斷向量在內存中的位置就是0x0000:N×4,即對應的中斷服務程序入口地址保存在物理內存0x0000:N×4位置處。
在BIOS執行初始化操作時,它設置了兩個8259A晶元支持的16個硬體中斷向量和BIOS提供的中斷號為0x10~0x1f的中斷調用功能向量等。對於實際沒有使用的向量則填入臨時的啞中斷服務程序的地址。以後在系統引導載入操作系統時會根據實際需要修改某些中斷向量的值。例如,對於DOS操作系統,它會重新設置中斷0x20~0x2f的中斷向量值。而對於Linux系統,除了在剛開始載入內核時需要用到BIOS提供的顯示和磁碟讀操作中斷功能,在內核正常運行之前則會在setup.s程序中重新初始化8259A晶元並且在head.s程序中重新設置一張中斷向量表(中斷描述符表)。完全拋棄了BIOS所提供的中斷服務功能。
當Intel CPU運行在32位保護模式下時,需要使用中斷描述符表(Interrupt Descriptor Table,IDT)來管理中斷或異常。IDT是Intel 8086~80186 CPU中使用的中斷向量表的直接替代物。其作用也類似於中斷向量表,只是其中每個中斷描述符項中除了含有中斷服務程序地址以外,還包含有關特權級和描述符類別等信息。Linux操作系統工作於80x86的保護模式下,因此它使用中斷描述符表來設置和保存各中斷的"向量"信息。下面是80X86中斷向量表各個地址表示的中斷用途。
內存地址(十六進位)
對應向量號(十六進位)
中斷用途
BASIC中斷向量
0x3C4 - 0x3FF
F1-FF
未使用
0x218 - 0x3C3
86-F0
BASIC程序運行時提供給BASIC解釋程序作用
0x200 - 0x217
80-85
為BASIC保留
0x1E0 - 0x1FF
78-7F
未使用
0x1DC - 0x1DF
77
硬體中斷15
0x1D8 - 0x1DB
76
硬體中斷14
0x1D4 - 0x1D7
75
硬體中斷13
0x1D0 - 0x1D3
74
硬體中斷12
0x1CC - 0x1CF
73
硬體中斷11
0x1C8 - 0x1CB
72
硬體中斷10
0x1C4 - 0x1C7
71
硬體中斷9
0x1C0 - 0x1C3
70
硬體中斷
0x1A0 - 0x1BF
68-6F
未使用
0x180 - 0x19F
60-67
為用戶程序保留的單元
0x128 - 0x17F
4A-5F
保留
0x124 - 0x127
49
指向鍵盤增強服務變換表
0x120 - 0x123
48
PC機使用,用於把PC機的鍵盤代碼變換為標準的鍵盤代碼
0x11C - 0x11F
47
保留
DOS中斷向量
0x118 - 0x11B
46
第二硬碟參數塊
0x114 - 0x117
45
保留
0x110 - 0x113
44
PC機使用,用於指向低分辯率圖形字元參數表
0x108 - 0x10F
42-43
未使用
0x104 - 0x107
41
硬碟參數塊
0x0C0 - 0x0CB
34-40
未使用
0x0CC - 0x0CF
33
滑鼠中斷
0x0C0 - 0x0CB
30-32
未使用
0x0BC - 0x0BF
2F
多路服務中斷
0x0B8 - 0x0BB
2E
基本SHELL程序裝入
0x0AC - 0x0B7
2B-2D
未使用
0x0A8 - 0x0AB
2A
Microsoft 網路介面
0x0A4 - 0x0A7
29
快速寫字元
0x0A0 - 0x0A3
28
DOS安全使用
0x09C - 0x09F
27
終止並駐留程序
0x098 - 0x09B
26
絕對磁碟寫功能
0x094 - 0x097
25
絕對磁碟讀功能
0x090 - 0x093
24
嚴重錯誤處理(用戶不能直接調用)
0x08C - 0x08F
23
Ctrl+Break 處理地址(用戶不能直接調用)
0x088 - 0x08B
22
程序中止時DOS返回地址(用戶不能直接調用)
0x084 - 0x087
21
DOS系統功能調用
0x080 - 0x083
20
DOS中斷返回
數據表指針
0x07C - 0x07F
1F
圖形字元擴展碼
0x078 - 0x07B
1E
軟盤參數塊
0x074 - 0x077
1D
視頻參數塊
提供給用戶的中斷
0x070 - 0x073
1C
定時器控制的軟中斷
0x06C - 0x06F
1B
Ctrl + Break控制的軟中斷
BIOS中斷
0x068 - 0x06B
1A
時鐘管理
0x064 - 0x067
19
引導裝入程序--系統自舉
0x060 - 0x063
18
BASIC入口代碼--ROM BASIC入口代碼
0x05C - 0x05F
17
印表機輸出
0x058 - 0x05B
16
鍵盤I/O
0x054 - 0x057
15
盒式磁帶I/O
0x050 - 0x053
14
RS-232串列通訊口I/O
0x04C - 0x04F
13
磁碟I/O
0x048 - 0x04B
12
測定存儲器容量
0x044 - 0x047
11
設備檢驗
0x040 - 0x043
10
屏幕顯示I/O
8259中斷向量
0x03C - 0x03F
F
LPT2控制器中斷--并行印表機(IRQ7)
0x038 - 0x03B
E
磁碟控制器中斷--軟磁碟(IRQ6)
0x034 - 0x037
D
LPT2控制器中斷--硬磁碟(并行口)(IRQ5)
0x030 - 0x033
C
非同步通信(primary)--串列通信介面1(IRQ4)
0x02C - 0x02F
B
非同步通信(secondary)--串列通信介面2(IRQ3)
0x028 - 0x02B
A
彩色/圖形(IRQ2)
0x024 - 0x027
9
鍵盤(IRQ1)
0x020 - 0x023
8
定時器(IRQ0)
8088中斷向量
0x01C - 0x01F
7
保留
0x018 - 0x01B
6
保留
0x014 - 0x017
5
列印屏幕
0x010 - 0x013
4
溢出
0x00C - 0x00F
3
斷點指令
0x008 - 0x00B
2
非屏蔽中斷
0x004 - 0x007
1
單步(用於DEBUG)
0x000 - 0x003
0
除以零
中斷向量地址和中斷向量
中斷向量:中斷服務程序的入口地址
中斷向量地址:內存中存放中斷服務程序入口地址的地址
上一篇[狐妹]  

相關評論

同義詞:暫無同義詞