8086中斷知識以及編寫0號中斷處理程式

2021-10-09 05:02:30 字數 1426 閱讀 6870

int n指令的格式為:int n,n為中斷型別碼

cpu執行int中斷,實際上就相當於引發乙個n號中斷的中斷過程,他的大致執行過程如下:

取中斷型別n

標誌暫存器入棧,置if=0,tf=0(為什麼要這一步,後面有解釋)

// 這一步可以模擬為

pushf //標誌暫存器入棧

;下面的步驟完成置if和tf

pushf

pop ax

and ax,11111100b

push ax

popf //置if=0,tf=0

cs和ip入棧

令ip=(n*4),cs=(n*4+2)

8086的中斷向量表是放在0位址處的,而每乙個中斷向量由兩個字組成,低位字存放ip值,高位字存放cs值,所以上面的賦值就完成了跳轉到中斷處理程式的功能

為什麼中斷時要處理tfif的值?

tf位:cpu提供的單步中斷支援

cpu在執行完一次指令後,如果檢測到標誌暫存器tf=1,則產生單步中斷,引發中斷過程。單步中斷的中斷型別碼為1,也就是說:cpu在執行完一條指令後,如果檢測到tf=1,那麼就會轉去執行1號中斷處理程式

作用:為單步除錯程式提供支援,例如debug的t命令

if位:外中斷之可遮蔽中斷與不可遮蔽中斷

if=1:cpu在執行完一條指令後會檢測有無外中斷產生,並且響應這個外中斷,如鍵盤滑鼠等的輸入

if=0:cpu在執行完一條指令不會響應可遮蔽中斷

相關指令

sti 設定if=1

cli 設定if=0 (close interupt)

本來是想寫9號中斷處理程式的,有一些錯誤沒處理好

1.安裝

安裝過程就是,先儲存原來的中斷處理程式的cs和ip,然後通過movsb指令將我們寫的程式傳送到0000:0200處,然後更改0號中斷向量表的位址指向我們安裝的程式位址。

s段就是我們自己寫的中斷處理程式,當發生溢位時會在螢幕上列印乙個綠色的a,最後三行是通過retf指令呼叫了原來的0號中斷處理程式

2.執行

8086學習(四)中斷

為什麼要用io介面?答 四個不匹配 速平格時,就這樣記了,沒法記的。針對這幾個不匹配,用不同的方法,例如設定緩衝以匹配速度,設定電平轉換電路,設定格式轉換電路,設定時序控制電路等 緩衝器與鎖存器各用在什麼地方?很顯然了,緩衝器用於匯流排上,起到緩衝作用,提高匯流排驅動能力 電平匹配 鎖存器具有暫存資...

8086彙編學習筆記9 中斷

中斷訊號可以來自cpu內部或外部。一.8086cpu內部中斷訊號有 1 除法錯誤 2 單步執行 3 執行into指令 4 執行int指令 1.中斷碼 8086用乙個位元組來描述中斷碼,可以表示256中不同的中斷資訊。除法錯誤中斷碼為0 單步執行中斷碼為1 執行into指令中斷碼為4 執行int n指...

8086彙編學習筆記9 中斷

中斷訊號可以來自cpu內部或外部。一.8086cpu內部中斷訊號有 1 除法錯誤 2 單步執行 3 執行into指令 4 執行int指令 1.中斷碼 8086用乙個位元組來描述中斷碼,可以表示256中不同的中斷資訊。除法錯誤中斷碼為0 單步執行中斷碼為1 執行into指令中斷碼為4 執行int n指...