外中断---汇编学习笔记
外中斷
要及時處理外設的輸入,顯然需要解決兩個問題:
15.1 接口芯片和端口
外設的輸入不直接送入內存和CPU,而是送入相關的接口芯片的端口中;CPU向外設的輸出也不是直接送入外設,而是先送入端口中,再由相關的芯片送到外設。CPU還可以向外設輸出控制命令,而這些控制命令也是先送到相關芯片的端口中,然后再由相關的芯片根據(jù)命令對外設實施控制。
15.2 外中斷信息
有一種中斷信息,來自于CPU外部,當CPU外部有需要處理的事情發(fā)生的時候,比如說,外設的輸入到達,相關的芯片將向CPU發(fā)出相應的中斷信息。CPU在執(zhí)行完當前指令后,可以檢測到發(fā)送過來的中斷信息,引發(fā)中斷過程,處理外設的輸入。
在PC系統(tǒng)中,外中斷源一共有以下兩類。
(1)可屏蔽中斷
可屏蔽中斷是CPU可以不響應的外中斷。CPU是否響應可屏蔽中斷,要看標志寄存器的IF位的設置。如果IF=1,則CPU在執(zhí)行完當前指令后響應中斷,如果IF=0,則不響應可屏蔽中斷。
過程如下:
8086CPU提供的設置IF的指令如下:
sti,設置IF=1 cli,設置IF=0(2)不可屏蔽中斷
不可屏蔽中斷是CPU必須響應的外中斷。當CPU檢測到不可屏蔽中斷信息時,則在執(zhí)行完當前指令后,立即響應,引發(fā)中斷過程。
對于8086CPU,不可屏蔽中斷的中斷類型碼固定為2,所以中斷過程:
幾乎所有由外設引發(fā)的外中斷,都是可屏蔽中斷。當外設有需要處理的事件發(fā)生時,相關芯片向CPU發(fā)出可屏蔽中斷信息。不可屏蔽中斷是在系統(tǒng)中有必須處理的緊急情況發(fā)生時用來通知CPU的中斷信息。在這門課程中,主要討論可屏蔽中斷。
15.3 PC機鍵盤的處理過程
很通俗易懂,略過。
鍵盤輸入的處理過程:
15.4 編寫int 9中斷例程
內容自己看,也很易讀。
檢測點 15.1
(1)仔細分析一下上面的int 9中斷例程,看看是否精簡一下?其實在我們的int 9中斷例程中,模擬int指令調用原int 9中斷例程的程序段可以精簡的,因為在進入中斷例程后,IF和TF都已經置0,沒有必要再進行設置了,對于程序段:
可以精簡為:
pushf call dword ptr ds:[0](2)仔細分析上面程序中的主程序,看看有什么潛在問題?在主程序中,如果在執(zhí)行設置int 9中斷例程的段地址和偏移地址的指令之間發(fā)生了鍵盤中斷,則CPU將轉去一個錯誤的地址執(zhí)行,將發(fā)生錯誤。找出這樣的程序段,改寫它們,排除潛在問題。(提示,注意sti和cli指令的用法)
答:應該在執(zhí)行設置int 9的CS之前將IF置0,設置int 9的IP之后將IF置1(設置新int 9的地方和設置舊int 9的地方,這2處需要將IF置0和置1)。
15.5 安裝新的int 9中斷例程
略過。
CPU對外設輸入的通常處理方法:
實驗15 安裝新的int 9中斷例程
安裝一個新的int 9中斷例程,功能:在DOS下,按下“A”鍵后,除非不再松開,如果松開,就顯示滿屏幕的“A”;其他的按鍵照常處理。
分析:
總結
以上是生活随笔為你收集整理的外中断---汇编学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试题,如何让你从0-1的做一款产品出来
- 下一篇: 产品经理如何晋升为产品总监