中斷的意思是指cpu不在接著(剛執行的指令)向下執行,而是轉去處理這個特殊資訊,而這個特殊的資訊我們可以稱其為中斷資訊。中斷資訊是要求cpu馬上進行某種處理,並向所要進行的該種處理提供了必備的引數的通知資訊。
對於8086cpu,當cpu內部有下面的情況發生的時候,將產生響應的中斷資訊。
而中斷資訊中必須包含中斷型別碼的資料來標識終端資訊的**。中斷型別碼為乙個位元組型資料,可以表示256種中斷資訊的**。
在8086cpu中的終端型別碼如下。
我們編寫的,用來處理中斷資訊的程式被稱為中斷處理程式。
要想執行中斷處理程式如何從8位終端型別碼得到處理程式的段位址和偏移位址呢?
中斷向量表在記憶體0000:0000到0000:03ff的1024個單元中儲存,其中存放著256個中斷資訊的**所對應的中斷處理程式的入口,這個入口位址包括段位址和偏移位址,所以乙個表項佔兩個位元組,高位址字存放段位址,低位址字存放偏移位址。cpu只要知道了中斷型別碼,就可以將中斷型別碼作為中斷向量表的表項號,定位相應的表項,從而得到中斷處理程式的入口位址。
中斷過程就是用中斷型別碼找到中斷向量,並用它設定cs和ip的過程。
下面是8086cpu在收到中斷資訊後,所引發的中斷過程。
更簡潔的表述中斷過程,如下:
取得中斷型別碼 n;
pushf
tf=0
,if=
0push cs
push ip
(ip)
=(n*4)
,(cs)
=(n*4+
2)
中斷處理程式的編寫方法和子程式的比較相似,下面是常規的步驟:
iret指令的功能用彙編語法描述為:
pop ip
pop cs
popf
iret通常和硬體自動完成的中斷過程配合使用。中斷過程中,暫存器入棧的順序和iret剛好相對應。
;因為除法溢位隨時可能發生,cpu隨時都可能將cs:ip只想程式的入口,執行程式,所以我們將程式放入記憶體中。
;因為系統要處理的中斷事件遠沒有達到256個,所以在中斷向量表中,有許多單元是空的。
assume cs:code
code segment
start:
;安裝:將中斷處理程式**送入中斷向量表中。
mov ax,cs
mov ds,ax
mov si,offset do0 ;ds:si指向源位址
mov ax,
0 mov es,ax
mov di,
200h ;es:di指向目的位址
mov cx,offset do0end-offset do0 ;設定cx為傳輸長度 ;
-是編譯器識別的運算符號,編譯器可以用它來進行兩個常數的減法。
cld ;設定傳輸方向為正
rep movsb
;設定中斷向量:將do0的入口位址,寫入中斷向量表的0號表項中,使do0為0號中斷的中斷處理程式
mov ax,
0 mov es,ax
mov word ptr es:[0
*4],
200h
mov word ptr es:[0
*4+2
],0 mov ax,
4c00h
int21h
;中斷處理程式**
do0: jmp short do0start
db "overflow!"
;放在data段執行完後記憶體被系統釋放資料可能被覆蓋
do0start:
mov ax,cs
mov ds,ax
mov si,
202h ;ds:si指向字串,複製到0
:200處
mov ax,
0b800h
mov es,ax
mov di,12*
160+36*
2;顯示位置
mov cx,
9 s:
mov al,
[si]
mov es:
[di]
,al inc si
add di,
2 loop s
mov ax,
4c00h
int21h do0end:nop
code ends
end start
基本上,cpu在執行完一條指令之後,如果監測到標誌暫存器的tf位為1,則產生單步中斷,引發中斷過程。單步中斷的中斷型別碼為1,則它所引發的中斷過程如下。
tf陷阱標誌(trap flag):用於除錯的單步方式操作;
tf = 1時每條指令執行後產生陷阱,由系統控制計算機;
tf = 0時cpu正常工作。
if中斷標誌(interrupt flag);
if = 1允許cpu響應可遮蔽中斷請求;
if = 0關閉中斷。
如上所述,如果tf=1,則執行好一條指令後,cpu就要轉去執行1號中斷處理程式。
組合語言 內中斷
內中斷 在執行完當前正在執行的指令之後,檢測到從cpu內部發過來的或內部產生的一種特殊資訊,並且可以立即對所接收到的資訊進行處理 中斷資訊可以 於cpu外部和內部 內中斷的產生 1除法錯誤 0 2單步執行 1 3執行into指令 4 into 溢位中斷 4執行int指令,該指令格式 int n 指令...
組合語言 內中斷
中斷的意思是指cpu不在接著 剛執行的指令 向下執行,而是轉去處理這個特殊資訊,而這個特殊的資訊我們可以稱其為中斷資訊。中斷資訊是要求cpu馬上進行某種處理,並向所要進行的該種處理提供了必備的引數的通知資訊。對於8086cpu,當cpu內部有下面的情況發生的時候,將產生響應的中斷資訊。而中斷資訊中必...
組合語言 筆記 內中斷
中斷資訊 cpu不再接著向下執行,而是轉去處理這個特殊資訊 cpu內部有下面的情況發生時,將產生相應中斷資訊 8086cpu用稱為中斷型別碼的資料表示中斷資訊 用來處理中斷資訊的程式稱為中斷處理程式 一般來說,需要針對不同的中斷信心編寫不同的處理程式 中斷型別碼的作用就是用來定位中斷處理程式 cpu...