天天看點

彙編語言-外中斷

  cpu在計算機系統中,除了能夠執行指令,進行運算以外,還應該能夠對外部裝置進行控制,接收它們的輸入,向它們進行輸出。也就是說,cpu除了有運算能力外,還要有I/O能力。

接口晶片和端口

  在PC系統的接口卡和主機闆上,裝有各種接口晶片。這些外設接口晶片的内部有若幹寄存器,cpu将這些寄存器當作端口來通路。外設的輸入不直接送入記憶體和cpu,而是送入相關的接口晶片和端口中。cpu向外設的輸出也不是直接送入外設,而實先送入端口中,再由相關的晶片送到外設。

外中斷

當CPU 檢測到可屏蔽中斷資訊時:

  1. 如果IF=1,則CPU 在執行完目前指令後響應中斷,引發中斷過程;
  2. 如果IF=0,則不響應可屏蔽中斷。

可屏蔽中斷資訊來自于CPU外部,中斷類型碼是通過資料總線送入CPU的。

8086CPU 提供的設定IF的指令如下:

  1. sti,用于設定IF=1;
  2. cli,用于設定IF=0。

對于8086CPU不可屏蔽中斷的中斷類型碼固定為2。是以中斷過程中,不需要取中斷類型碼。

PC機鍵盤的處理過程

鍵盤輸入的處理過程:

  1. 鍵盤輸入
  2. 引發9号中斷
  3. 執行int 9中斷例程

  按下一個鍵時,開關接通,該晶片就産生一個掃描碼,掃描碼說明了按下的鍵在鍵盤上的位置。掃描碼被送入主機闆上的相關接口晶片的寄存器中,該寄存器的端口位址為60H。

  松開按下的鍵時,也産生一個掃描碼,掃描碼說明了松開的鍵在鍵盤上的位置。松開按鍵時産生的掃描碼也被送入60H端口中。

  掃描碼長度為一個位元組,通碼的第7位為0,斷碼的第7位為1,即:斷碼 = 通碼+80H

彙編語言-外中斷

  BIOS鍵盤緩沖區可以存儲15個鍵盤輸入,因為int9中斷例程除了接收掃描碼外,還要産生和掃描碼對應的字元碼,是以在BIOS鍵盤緩沖區中,一個鍵盤輸入用一個字單元存放,高位位元組存放掃描碼,低位位元組存放字元碼。

  0040:17 單元存儲鍵盤狀态位元組,該位元組記錄了控制鍵和切換鍵的狀态。鍵盤狀态位元組各位記錄的資訊如下:

  • 0:右shift狀态,置1表示按下右shift鍵;
  • 1:左shift狀态,置1表示按下左shift鍵;
  • 2:CTRL狀态,置1表示按下CTRL鍵;
  • 3:alt狀态,置1表示按下alt鍵;
  • 4:scroll lock狀态,置1表示scroll 訓示燈亮;
  • 5:NumLock狀态,置1表示小鍵盤輸入的是數字;
  • 6:CapsLock狀态,置1表示輸入大寫字母;
  • 7:insert狀态,置1表示處于删除态;

繼續閱讀