微機原理——8086中斷類型以及中斷向量表、中斷響應、中斷返回

先驗知識回顧

控制寄存器回顧

1
PSW是Program Status Word的縮寫,即程序狀態字(也叫程序狀態寄存器)
CS:段代碼寄存器。

1、8086中斷類型

8086用8位二進制碼錶示一箇中斷類型,共有256箇中斷,可分爲兩大類:
1
中斷結構:
2

1、外部可屏蔽中斷

由INTR引入,受到標誌寄存器中的中斷允許標誌位IF控制。
IF=0:CPU不響應INTR中斷;
IF=1:CPU響應INTR中斷;
INTR中斷的類型碼範圍:8~255;

2、外部不可屏蔽中斷

由NMI引入,不受到中斷允許寄存器標誌位IF控制。
NMI信號有效,且8086現行指令執行結束,且沒有DMA請求:響應NMI中斷
NMI中斷類型碼:2

3、除法錯中斷

在執行DIV或者IDIV指令時,除數爲0或商超過寄存器能夠表達的範圍(商溢出):執行中斷。
中斷類型號:0.
(我尋思着,在做除法操作的時候就可以避免這種現象的存在,沒有必要搞箇中斷啊。。。)

4、單步中斷

受到標誌位寄存器中的陷阱標誌位TF控制。
TF=1:CPU每執行完一條指令就引起一個內部中斷。
TF=0:無
中斷類型號:0
用途:用於實現但不操作,是一種強有力的調試手段。(聯繫debug中相關操作)

5、斷點中斷

由INT3指令產生的內部中斷。
在程序調試過程中,需要跟蹤程序走向,瞭解程序執行過程中的中間結果時,可以用INT3指令臨時替代原有的指令,稱爲設置斷點。
中斷類型號:3

6、溢出中斷

受到標誌寄存器中的溢出標誌位OF控制。
若上條指令執行結果使OF=1,則產生中斷。
中斷類型號:4

7、軟中斷

由INTn指令產生。
中斷類型碼:n

2、8086中斷向量表

兩個知識點:
中斷向量:中斷指針,是中斷服務程序的入口地址
中斷向量表:中斷類型號與對應的中斷服務函數入口地址的換算表。
8086的中斷向量表如下:
1

3、8086中斷響應

1、外部可屏蔽中斷響應

1、等待當前指令結束,然後進入中斷響應週期。
2、CPU獲取中斷類型號
3、當前的PSW、CS、IP的內容依次壓入棧中。(保存了斷點的狀態和斷點地址,以便返回時恢復)
4、清除PSW中的IF位和TF位。(IF=0意味着關中斷,這裏不包含中斷嵌套)
5、把中斷服務函數的入口地址置入IP和CS
6、完成響應,進入中斷服務函數

2、外部不可屏蔽中斷響應

中斷請求在NMI端加入。
等待當前指令執行結束.如果同時出現非屏蔽和可屏蔽中斷請求,CPU優先響應非可屏蔽。
中斷類型號由硬件決定,不需要從外部獲取。其他操作與可屏蔽中斷相同

3、內部中斷響應

內部中斷的響應操作的共同特點:
1、中斷類型號來源於:指令碼、CPU硬件,不需要從外部獲取
2、沒有INTA’信號的響應週期
3、不受到IF位的控制,但單步中斷受TF位控制
4、除單步中斷之外,其他內部中斷都比外部中斷優先響應
5、同樣執行可屏蔽中斷的3、4、5操作
特別說明:
中斷響應時應清除TF標誌位意味着什麼?
TF=1,沒執行完一條指令都引起一次單步中斷。如果不清除,將不停地引起中斷,每次中斷都執行同一條指令而不能反悔。
所以,中斷服務函數期間TF=0,等到IRET指令恢復PSW值是,才恢復TF位。

4、8086中斷返回

無論內部外部中斷,中斷返回都是由中斷服務函數的末尾設置IRET指令實現的。
IRET指令的操作是:恢復斷點處的地址和PSW內容:依次從堆棧中彈出保存的IP、CS、PSW值,使被中斷的程序繼續執行


參考書籍:

《微機原理與接口技術》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章