中斷向量表和中斷程式是放在哪裡的?
中斷向量表
中斷向量(向量)表也稱中斷指示表。中斷向量表放在儲存單元地址的最低部位0000H到003FFH,佔有1K位元組的儲存空間。中斷向量表分成256組(型別碼),每組由兩個字(即4個位元組)組成一個雙字長的指標。每個雙字指標指示一種中斷型別,最多能識別256種不同型別的中斷。透過這張中斷向量表產生出各個中斷服務程式的入口地址。
在雙字長指標的高地址中存放的字是中斷服務程式入口地址所在的程式碼段的基址(CS),低地址字是中斷服務程式入口地址相對於段基址的補償值(IP)。CPU透過CS和IP的值得到一個20位的地址,它就是中斷服務程式的實際入口地址,過程見圖8-3。計算方法同求一個儲存器單元實際地址的方法一樣,就是將CS基址左移4位,然後加上IP的補償值。
=====================================================
哪些內部中斷的程式都是固化在BIOS中?
int 1 -20 是bios中斷, 固化在ROM晶片中
int21 專門用於dos中斷。
======================================================
INT 21的功能號也是表示地址的嗎?
王爽彙編上給出的表述是:
int指令的格式為: int n, n為中斷型別碼, 他的功能是引發中斷.
cpu執行int n指令, 相當於引發一個n號中斷的中斷過程, 執行過程如下.
(1) 取中斷型別碼n;
(2) 標誌暫存器入棧,IF=0,TF=0
(3) CS、IP入棧
(4) (IP)=(n*4), (CS)=(n*4+2)
每個中斷向量具有一個相應的中斷型別號碼,由中斷型別號碼確定在中斷向量表中的中斷向量。中斷型別號碼乘4,將給出中斷向量表中的中斷向量入口第一位元組的絕對地址(因為每個中斷向量佔4個位元組)。舉例說明,若中斷型別號碼為3,它指出中斷向量表的第4個入口,則這個向量的第一位元組的地址為:
3型別碼×4=1210=00001100B=00CH
若型別3中,我們安排放置的CS=1E00H和IP=0A00H,則它們形成的服務程式的入口地址為1EA00H。CPU一旦響應中斷型別3,則將轉去執行從地址1EA00H(1EA00H=10H*CS+IP=10H*1E00H+0A00H)開始的型別3的中斷服務程式。
中斷向量表和中斷程式是放在哪裡的?
中斷向量表
中斷向量(向量)表也稱中斷指示表。中斷向量表放在儲存單元地址的最低部位0000H到003FFH,佔有1K位元組的儲存空間。中斷向量表分成256組(型別碼),每組由兩個字(即4個位元組)組成一個雙字長的指標。每個雙字指標指示一種中斷型別,最多能識別256種不同型別的中斷。透過這張中斷向量表產生出各個中斷服務程式的入口地址。
在雙字長指標的高地址中存放的字是中斷服務程式入口地址所在的程式碼段的基址(CS),低地址字是中斷服務程式入口地址相對於段基址的補償值(IP)。CPU透過CS和IP的值得到一個20位的地址,它就是中斷服務程式的實際入口地址,過程見圖8-3。計算方法同求一個儲存器單元實際地址的方法一樣,就是將CS基址左移4位,然後加上IP的補償值。
=====================================================
哪些內部中斷的程式都是固化在BIOS中?
int 1 -20 是bios中斷, 固化在ROM晶片中
int21 專門用於dos中斷。
======================================================
INT 21的功能號也是表示地址的嗎?
王爽彙編上給出的表述是:
int指令的格式為: int n, n為中斷型別碼, 他的功能是引發中斷.
cpu執行int n指令, 相當於引發一個n號中斷的中斷過程, 執行過程如下.
(1) 取中斷型別碼n;
(2) 標誌暫存器入棧,IF=0,TF=0
(3) CS、IP入棧
(4) (IP)=(n*4), (CS)=(n*4+2)
每個中斷向量具有一個相應的中斷型別號碼,由中斷型別號碼確定在中斷向量表中的中斷向量。中斷型別號碼乘4,將給出中斷向量表中的中斷向量入口第一位元組的絕對地址(因為每個中斷向量佔4個位元組)。舉例說明,若中斷型別號碼為3,它指出中斷向量表的第4個入口,則這個向量的第一位元組的地址為:
3型別碼×4=1210=00001100B=00CH
若型別3中,我們安排放置的CS=1E00H和IP=0A00H,則它們形成的服務程式的入口地址為1EA00H。CPU一旦響應中斷型別3,則將轉去執行從地址1EA00H(1EA00H=10H*CS+IP=10H*1E00H+0A00H)開始的型別3的中斷服務程式。