1 -- 關於中斷向量的幾點注釋
1. 系統引導時,中斷向量表放在記憶體何處?
系統剛引導時,記憶體0x00000到0x0003FF共1KB的空間用於存放中斷向量表。每個中斷向量佔用4個位元組,共可儲存256個中斷向量。
2. 系統引導時,處在實模式下,只可定址1MB,為什麼要用4個位元組來定址中斷呢處理常式?
剛看到的時候,我也很納悶。我們都知道編程的時候指標都是4個位元組的,可以定址4GB,在實模式下完全可以少用位元組啊?其實實模式的記憶體選址方式是:段值 * 16 + 位移值,就是記憶體位址。而這4個位元組中,2個位元組儲存段值,兩外兩個儲存位移值。所以共有4個位元組。
3. 這篇資料是看書和從網上整理而來的,不同的資料間往往有些衝突的地方,這樣就難免有些錯誤,以後再做修訂。 2 -- 中斷向量表
| 記憶體位址(十六進位) |
對應向量號(十六進位) |
中斷用途 |
| 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 |
除以零 |