埠的讀寫
CPU 的鄰居
- CPU 內部的暫存器
- 記憶體單元
- 埠(各種介面卡、網路卡,顯示卡,主機板上的介面晶片等)
- 各種晶片工作時,都有一些暫存器由 CPU 讀寫
- 從 CPU 角度,將各暫存器當埠,並統一編制
- CPU 用統一的方法與各種裝置通訊
讀寫埠的指令
- 在對 \([0,255]\) 的埠進行讀寫時,埠號用立即數給出
- 在對 \([256,65535]\) 的埠進行讀寫時,埠號放在 DX 中
- IN 和 OUT 指令中,只能用 AX 或 AL 來存放從埠中讀入的資料或要傳送到埠的資料。
- 訪問 8 位埠時用 AL ,訪問 16 位埠時用 AX
I/O 埠分配
IN
功能
CPU 從埠讀取資料
格式
IN 資料 , 埠號
執行時與匯流排相關的操作
- CPU 透過地址線將地址資訊發出
- CPU 透過控制線發出埠讀命令,並選中埠所在的晶片,並通知要從中讀取資料
- 埠所在的晶片將對應埠中的資料透過資料匯流排送入 CPU
OUT
功能
CPU 往埠寫入資料
格式
OUT 埠號 , 資料
CMOS RAM 晶片關於埠讀寫的操作
CMOS RAM 晶片
- 包含一個實時鐘和一個有 128 個儲存單元的 RAM 儲存器
- 128 個位元組的 RAM 中儲存:內部實時鐘、系統配置資訊、相關的程式(用於開機時配置系統資訊)
- CMOS RAM 晶片靠電池供電,關機後其內部的實時鐘仍可正常工作,RAM 中的資訊不丟失
- 該晶片內部有兩個埠,埠地址為 70H 和 71H,CPU 透過這兩個埠讀寫 CMOS RAM
- 70H 地址埠,存放要訪問的 CMOS RAM 單元的地址
- 71H 資料埠,存放從選定的單元中讀取的資料,或要寫入到其中的資料
- 讀取 CMOS RAM 要先將要讀取的單元地址送入 70H 地址埠,再從資料埠 71H 讀出指定單元的內容
CMOS RAM 中儲存的時間資訊
內容 | 秒 | 分 | 時 | 日 | 月 | 年 | ||||
---|---|---|---|---|---|---|---|---|---|---|
地址 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
- 當前時間在 CMOS RAM 中用 6 個位元組存放,用 BCD 碼存放
- 6 個資訊的長度都為 1 個位元組
外設的連線與中斷
CPU 在執行指令過程中,可以檢測到傳送過來的中斷資訊,引發中斷過程,處理外設的輸入。
外中斷 :由外部裝置發生的事件引起的中斷
- 幾乎所有由外設引發的外中斷,都是可遮蔽中斷
- 不可遮蔽中斷在系統中有必須處理的緊急情況發生時用來 CPU 的中斷資訊
可遮蔽中斷
- 可遮蔽中斷時 CPU 可以不響應的外中斷
- CPU 是否響應可遮蔽中斷,要看標誌暫存器 IF 位的設定
- 當 CPU 檢測到可遮蔽中斷資訊時,如果 IF = 1,則 CPU 在執行完當前指令後響應中斷,引發中斷過程;如果 IF = 0,則不影響可遮蔽中斷。
不可遮蔽中斷
- 不可遮蔽中斷是 CPU 必須響應的外中斷
- 當 CPU 檢測到不可遮蔽中斷資訊時,則在執行完當前指令後,立即響應,引發中斷過程
- 對於 8086 CPU 不可遮蔽中斷的中斷型別碼固定為 2
外中斷處理過程
可遮蔽中斷所引發的中斷過程
- 取中斷型別碼(可遮蔽中斷資訊來自於 CPU 外部,中斷型別碼透過資料匯流排送入 CPU)
- 標誌暫存器入棧,IF = 0 , TF = 0(將 IF 置 0 的原因是 :進入中斷處理程式後,禁止其他的可遮蔽中斷,如果在中斷處理程式中需要處理可遮蔽中斷,可以用指令將 IF 置 1)
- CS 和 IP 入棧
- \((IP) = (中斷型別碼 \times 4)\) ,\((CS) = (中斷型別碼 \times 4)\)
不可遮蔽中斷的中斷過程(不必取中斷碼,固定為2)
- 標誌暫存器入棧,IF = 0,TF = 0
- CS 和 IP 入棧
- (IP) = (8) ,(CS) = (0AH)