8086CPU的中斷系統具有256箇中斷,每個中斷用一個唯一的中斷向量號標識。向量號也稱為向量號或型別號,它用一個位元組表示:0——255,對應256箇中斷。8086的中斷可以分成外部中斷和內部中斷兩類。
(1)外部中斷
外部中斷是來自8086CPU之外的原因引起的程式中斷。它又分成兩種情況:
·可遮蔽中斷——外部的這個中斷請求可以在CPU的內部被遮蔽掉,即CPU可以控制它是否引起程式中斷。標誌暫存器中的中斷允許標誌IF就是用於控制可遮蔽中斷的。
·非遮蔽中斷——外部的這個中斷請求不能在CPU的內部被遮蔽,CPU必須執行它的處理程式。8086為非遮蔽中斷分配了中斷向量號02。
(2)內部中斷
內部中斷是由於8086CPU內部執行程式引起的程式中斷。它又分成多種情況:
·除法錯中斷——在執行除法指令時,若除數為0或商超過了暫存器所能表達的範圍,則產生除法錯中斷。8086為它分配的向量號為0。
·指令中斷——執行中斷呼叫指令INTn就產生指令中斷,也稱為軟體中斷,它的向量號就是n。
INTn指令為2位元組指令(機器碼為11001101—n—,第2個位元組就是中斷向量號n),但向量號為3的指令中斷(INT3)是1位元組指令(11001100),較特殊,常用做程式除錯的斷點中斷。
除錯程式DEBUG中的G命令就是利用斷點中斷(3號中斷)中止被除錯程式的。使用DEBUG除錯程式時,如果在程式段最後加上一條INT3指令,就可以停止程式執行,而不必設定斷點了。
·溢位中斷——在執行溢位中斷指令INTO時,若溢位標誌OF為1,則產生溢位中斷。它的向量號為4。
·單步中斷——若單步標誌TF為1,則在每條指令執行結束後都產生單步中斷。它的向量號為1。
除錯程式DEBUG中的T命令就利用了單步中斷。
8086CPU的中斷系統具有256箇中斷,每個中斷用一個唯一的中斷向量號標識。向量號也稱為向量號或型別號,它用一個位元組表示:0——255,對應256箇中斷。8086的中斷可以分成外部中斷和內部中斷兩類。
(1)外部中斷
外部中斷是來自8086CPU之外的原因引起的程式中斷。它又分成兩種情況:
·可遮蔽中斷——外部的這個中斷請求可以在CPU的內部被遮蔽掉,即CPU可以控制它是否引起程式中斷。標誌暫存器中的中斷允許標誌IF就是用於控制可遮蔽中斷的。
·非遮蔽中斷——外部的這個中斷請求不能在CPU的內部被遮蔽,CPU必須執行它的處理程式。8086為非遮蔽中斷分配了中斷向量號02。
(2)內部中斷
內部中斷是由於8086CPU內部執行程式引起的程式中斷。它又分成多種情況:
·除法錯中斷——在執行除法指令時,若除數為0或商超過了暫存器所能表達的範圍,則產生除法錯中斷。8086為它分配的向量號為0。
·指令中斷——執行中斷呼叫指令INTn就產生指令中斷,也稱為軟體中斷,它的向量號就是n。
INTn指令為2位元組指令(機器碼為11001101—n—,第2個位元組就是中斷向量號n),但向量號為3的指令中斷(INT3)是1位元組指令(11001100),較特殊,常用做程式除錯的斷點中斷。
除錯程式DEBUG中的G命令就是利用斷點中斷(3號中斷)中止被除錯程式的。使用DEBUG除錯程式時,如果在程式段最後加上一條INT3指令,就可以停止程式執行,而不必設定斷點了。
·溢位中斷——在執行溢位中斷指令INTO時,若溢位標誌OF為1,則產生溢位中斷。它的向量號為4。
·單步中斷——若單步標誌TF為1,則在每條指令執行結束後都產生單步中斷。它的向量號為1。
除錯程式DEBUG中的T命令就利用了單步中斷。