cpu在計算機系統中,除了能夠執行指令,進行運算以外,還應該能夠對外部裝置進行控制,接收它們的輸入,向它們進行輸出。也就是說,cpu除了有運算能力外,還要有I/O能力。
接口晶片和端口
在PC系統的接口卡和主機闆上,裝有各種接口晶片。這些外設接口晶片的内部有若幹寄存器,cpu将這些寄存器當作端口來通路。外設的輸入不直接送入記憶體和cpu,而是送入相關的接口晶片和端口中。cpu向外設的輸出也不是直接送入外設,而實先送入端口中,再由相關的晶片送到外設。
外中斷
當CPU 檢測到可屏蔽中斷資訊時:
- 如果IF=1,則CPU 在執行完目前指令後響應中斷,引發中斷過程;
- 如果IF=0,則不響應可屏蔽中斷。
可屏蔽中斷資訊來自于CPU外部,中斷類型碼是通過資料總線送入CPU的。
8086CPU 提供的設定IF的指令如下:
- sti,用于設定IF=1;
- cli,用于設定IF=0。
對于8086CPU不可屏蔽中斷的中斷類型碼固定為2。是以中斷過程中,不需要取中斷類型碼。
PC機鍵盤的處理過程
鍵盤輸入的處理過程:
- 鍵盤輸入
- 引發9号中斷
- 執行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表示處于删除态;