組合語言 內中斷

2021-10-03 22:12:56 字數 2715 閱讀 1044

中斷的意思是指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...