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值,所以上面的賦值就完成了跳轉到中斷處理程式的功能
為什麼中斷時要處理tf
和if
的值?
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指...