什麼叫遮蔽中斷?允許中斷?怎樣實現? 按照是否可以被遮蔽,可將中斷分為兩大類:不可遮蔽中斷(又叫非遮蔽中斷)和可遮蔽中斷。不可遮蔽中斷源一旦提出請求,CPU必須無條件響應,而對可遮蔽中斷源的請求,CPU可以響應,也可以不響應。CPU一般設定兩根中斷請求輸入線:可遮蔽中斷請求INTR(Interrupt Require)和不可遮蔽中斷請求NMI(NonMaskable Interrupt)。對於可遮蔽中斷,除了受本身的遮蔽位控制外,還都要受一個總的控制,即CPU標誌暫存器中的中斷允許標誌位IF(Iinterrupt Flag)的控制,IF位為1,可以得到CPU的響應,否則,得不到響應。IF位可以由使用者控制,指令STI或Turbo c的Enable()函式,將IF位置1(開中斷),指令CLI或Turbo_c 的Disable()函式,將IF位清0(關中斷)。 典型的非遮蔽中斷源的例子是電源掉電,一旦出現,必須立即無條件地響應,否則進行其他任何工作都是沒有意義的。典型的可遮蔽中斷源的例子是印表機中斷,CPU對印表機中斷請求的響應可以快一些,也可以慢一些,因為讓印表機等待兒是完全可以的。 對於軟中斷,它不受IF位的影響,所以屬於非遮蔽中斷範疇。還有一點,細心的讀者會想到:CPU只有兩根中斷請求輸入線,有多箇中斷源怎麼辦? 一般藉助於外部電路。
什麼叫遮蔽中斷?允許中斷?怎樣實現? 按照是否可以被遮蔽,可將中斷分為兩大類:不可遮蔽中斷(又叫非遮蔽中斷)和可遮蔽中斷。不可遮蔽中斷源一旦提出請求,CPU必須無條件響應,而對可遮蔽中斷源的請求,CPU可以響應,也可以不響應。CPU一般設定兩根中斷請求輸入線:可遮蔽中斷請求INTR(Interrupt Require)和不可遮蔽中斷請求NMI(NonMaskable Interrupt)。對於可遮蔽中斷,除了受本身的遮蔽位控制外,還都要受一個總的控制,即CPU標誌暫存器中的中斷允許標誌位IF(Iinterrupt Flag)的控制,IF位為1,可以得到CPU的響應,否則,得不到響應。IF位可以由使用者控制,指令STI或Turbo c的Enable()函式,將IF位置1(開中斷),指令CLI或Turbo_c 的Disable()函式,將IF位清0(關中斷)。 典型的非遮蔽中斷源的例子是電源掉電,一旦出現,必須立即無條件地響應,否則進行其他任何工作都是沒有意義的。典型的可遮蔽中斷源的例子是印表機中斷,CPU對印表機中斷請求的響應可以快一些,也可以慢一些,因為讓印表機等待兒是完全可以的。 對於軟中斷,它不受IF位的影響,所以屬於非遮蔽中斷範疇。還有一點,細心的讀者會想到:CPU只有兩根中斷請求輸入線,有多箇中斷源怎麼辦? 一般藉助於外部電路。