『壹』 中斷向量表和中斷程序是放在哪裡的
中斷向量表和中斷程序是放在哪裡的?
中斷向量表
中斷向量(矢量)表也稱中斷指示表。中斷向量表放在存儲單元地址的最低部位0000H到003FFH,佔有1K位元組的存儲空間。中斷向量表分成256組(類型碼),每組由兩個字(即4個位元組)組成一個雙字長的指針。每個雙字指針指示一種中斷類型,最多能識別256種不同類型的中斷。通過這張中斷向量表產生出各個中斷服務程序的入口地址。
在雙字長指針的高地址中存放的字是中斷服務程序入口地址所在的代碼段的基址(CS),低地址字是中斷服務程序入口地址相對於段基址的補償值(IP)。CPU通過CS和IP的值得到一個20位的地址,它就是中斷服務程序的實際入口地址,過程見圖8-3。計算方法同求一個存儲器單元實際地址的方法一樣,就是將CS基址左移4位,然後加上IP的補償值。
=====================================================
哪些內部中斷的程序都是固化在BIOS中?
int1-20是bios中斷,固化在ROM晶元中
int21專門用於dos中斷。
======================================================
INT21的功能號也是表示地址的嗎?
王爽匯編上給出的表述是:
int指令的格式為:intn,n為中斷類型碼,他的功能是引發中斷.
cpu執行intn指令,相當於引發一個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的中斷服務程序。