天天看點

第七章 輸入/輸出與中斷【微機原理】

第七章 輸入/輸出與中斷【微機原理】

  • ​​前言​​
  • ​​第七章 輸入/輸出與中斷​​
  • ​​7.1 I/O接口概述​​
  • ​​7.1.1 I/O接口的作用​​
  • ​​7.1.2 CPU與外設交換的資訊​​
  • ​​7.1.3 I/O接口的基本結構​​
  • ​​7.1.4 I/O端口的編址​​
  • ​​7.2 CPU與外設之間資料傳送的方式​​
  • ​​7.2.1 程式傳送方式​​
  • ​​7.2.2 中斷傳送方式​​
  • ​​7.2.3 直接存儲器存取(DMA)傳送方式​​
  • ​​7.3 中斷技術​​
  • ​​7.3.1 中斷的基本概念​​
  • ​​7.3.2中斷優先級和中斷的嵌套​​
  • ​​7.4 8086/8088中斷系統​​
  • ​​7.4.1 8086/8088的中斷源類型​​
  • ​​7.4.2 中斷向量表​​
  • ​​7.4.3 8086/8088的中斷處理過程​​
  • ​​7.4.4中斷服務程式的設計​​
  • ​​7.5可程式設計中斷控制器Intel 8259A​​
  • ​​7.5.1 8259A的功能​​
  • ​​7.5.2 8259A的内部結構及外部引腳​​
  • ​​7.5.3 8259A的工作方式​​
  • ​​7.5.4 8259A的程式設計​​
  • ​​最後​​

前言

以下内容源自微型計算機原理(第四版)王忠民主編

來源于教學PPT

第七章 輸入/輸出與中斷

7.1 I/O接口概述

7.1.1 I/O接口的作用

I/O接口的作用

接口是介于CPU和外設之間的一種緩沖電路

在CPU和外設之間起到速度比對、信号轉換等作用

第七章 輸入/輸出與中斷【微機原理】

7.1.2 CPU與外設交換的資訊

主機與I/O裝置之間交換的資訊可分為資料資訊、狀态資訊和控制資訊三種。

1.資料資訊

① 資料資訊 它是CPU與外設之間傳送的主要資訊,可分為數字量、模拟量和開關量三種形式。

2.狀态資訊

② 狀态資訊 是外設送往CPU的資訊,作為外設與CPU之間交換資料的聯絡信号,反映了目前外設所處的工作狀态。

3.控制資訊

③ 控制資訊 是CPU通過接口傳送給外設的資訊,用來設定外設(包括接口)的工作方式、控制外設的工作等。

7.1.3 I/O接口的基本結構

I/O端口是接口中存放不同資訊的寄存器 。

接口和端口是兩個不同的概念,若幹個端口加上相應的控制電路才構成接口。

一個典型的IO接口如下圖所示。首先,位址總線經過譯碼确定要進行資訊互動的I/O接口;然後在控制總線控制信号的驅動下進行資料的互動,資料存在于I/O接口的資料緩沖器中,然後通過内部總線在三種寄存器之間傳輸,最終與I/O裝置進行互動。

第七章 輸入/輸出與中斷【微機原理】

7.1.4 I/O端口的編址

接口中每個端口都有一個位址編号,稱為端口位址。

微機系統中,I/O端口的編址方式有兩種,即:統一編址和獨立編址

1.統一編址

I/O端口的統一編址方式

對I/O端口和存儲單元統一編排位址号,由I/O端口位址和存儲單元位址共同構成一個統一的位址空間。

統一編址(存儲器映射I/O編址):即把I/O端口的位址也看作是一個記憶體單元,與記憶體位址統一混合編址。

優點:對外設的操作可以直接使用對記憶體操作指令,指令較多、使用友善。

缺點:記憶體空間減少,采用記憶體操作指令的速度比專用I/O指令慢。

第七章 輸入/輸出與中斷【微機原理】

2.獨立編址

I/O端口的獨立編址方式

建立了兩個位址空間,一個為記憶體位址空間,一個為I/O位址空間。記憶體位址空間和I/O位址空間是相對獨立的。

80x86 CPU組成的微機系統都采用獨立編址方式。

獨立編址(I/O映射編址):即I/O端口與記憶體分開獨立編址,二者各有一套位址空間,井水不犯河水。這樣編址的微處理器都有個M/-IO信号,當使用MOV指令時它自動變成高電平,用IN/OUT指令時它自動變成低電平,

優點:

1、存儲器位址空間不受I/O端口位址空間的影響

2、專用的輸入/輸出指令與通路存儲器指令有明顯差別,便于了解和檢查。

缺點:

1、專用I/O指令增加了指令系統複雜性,且I/O指令類型少,程式設計靈活性較差;

2、要求CPU提供專門的控制信号以區分對存儲器和I/O端口的操作,增加了控制邏輯的複雜性。

7.2 CPU與外設之間資料傳送的方式

7.2.1 程式傳送方式

該方式完全通過執行程式中的I/O指令來控制CPU與外設之間的資料交換

分為無條件傳送和查詢傳送(有條件傳送)

1.無條件傳送

CPU對外設進行輸入/輸出操作時無需考慮外設的狀态,故稱之為無條件傳送方式。

第七章 輸入/輸出與中斷【微機原理】

無條件傳送方式的特點

優點:程式設計和接口電路都很簡單。

缺點:在輸入輸出資料時不考慮外設的狀态默

認外設總是準備好的

适用于:與簡單外設進行少量的不頻繁的資料傳送

2.查詢傳送方式

傳送資料前,先測試外設的狀态,待外設準備就緒後,再執行I/O指令進行資料傳送,否則循環測試等待。

第七章 輸入/輸出與中斷【微機原理】
第七章 輸入/輸出與中斷【微機原理】

查詢傳送方式的特點

優點:能保證主機與外設之間協調同步地工作,且硬體

線路比較簡單,程式也容易實作。

缺點:浪費CPU時間,實時性差。

适用于:資料輸入/輸出不太頻繁且外設較少、對實時

性要求不高的情況。

7.2.2 中斷傳送方式

中斷傳送方式是指當外設需要與CPU進行資訊交換時,由外設向CPU送出請求信号,使CPU暫停正在執行的程式,轉去執行資料的輸入/輸出操作(即中斷處理),資料傳送結束後,CPU再繼續執行被暫停的程式。

第七章 輸入/輸出與中斷【微機原理】
第七章 輸入/輸出與中斷【微機原理】

中斷傳送方式的特點

優點: CPU與外設可以并行工作,不必查詢等待,

工作效率高;系統實時性比查詢方式要好得多。

缺點: 接口電路相對複雜,每進行一次資料傳送都

要轉去執行中斷處理程式,都要進行斷點和

現場的保護和恢複,浪費了很多CPU的時間。

适用于:少量的資料傳送。

7.2.3 直接存儲器存取(DMA)傳送方式

DMA方式适合于在外設和存儲器之間進行大批量的高速資料交換,資料的傳送不依賴CPU執行I/O指令,而是直接由專用的接口晶片DMA控制器(DMAC)來控制。

傳送過程中,CPU暫停指令的執行并讓出總線控制權,由DMA控制器接管總線的控制權。傳送過程全部由硬體實作,是以傳送速率非常高。

7.3 中斷技術

7.3.1 中斷的基本概念

1. 中斷的定義

計算機在執行正常程式過程中,當出現某種異常事件或某種外部請求時,處理器就暫停執行目前的程式,而轉去執行對異常事件或某種外部請求的處理操作。當處理完畢後,CPU再傳回到被暫停執行的程式,繼續執行,這個過程稱為程式中斷。

中斷系統為實作中斷功能而設定的硬體電路和與之相應的軟體,稱為中斷系統。

第七章 輸入/輸出與中斷【微機原理】

2. 中斷源

引起中斷的原因或發出中斷請求的來源稱為中斷源。中斷源可分為硬體中斷源和軟體中斷源兩類。

3. 中斷處理過程

對于單個中斷源的中斷處理過程應包括中斷請求、中斷響應、保護斷點、中斷處理和中斷傳回等五個過程。

① 中斷請求:是中斷源向CPU發出的請求中斷的要求。

軟體中斷源是在CPU内部由中斷指令或程式出錯直接發中斷;

硬體中斷源必須通過專門的電路将中斷請求信号送給CPU,CPU也有專門的引腳接收中斷請求信号。

② 中斷響應:是指當計算機系統接收到中斷請求後應作出的反應。對于可屏蔽中斷的響應要具備兩個條件:一是中斷允許觸發器的狀态為1(即開中斷),二是CPU在執行完現行指令之後。

③ 保護斷點:所謂斷點是指處理完中斷後傳回主程式時執行的第一條指令的位址。保護斷點是為了在中斷處理結束後能正确傳回。

④ 中斷處理:是指執行中斷服務子程式,完成中斷服務功能。主要包括保護現場、中斷服務和恢複現場等過程。

⑤ 中斷傳回:是指執行完中斷服務程式後傳回到被中斷的主程式的斷點處,繼續向下執行,即恢複斷點。

7.3.2中斷優先級和中斷的嵌套

1.中斷優先級

中斷請求是随機發生的,當系統具有多個中斷源時,有時會同時出現多個中斷請求,CPU隻能按一定的次序予以響應和處理,這個響應的次序稱為中斷優先級。

對于不同級别的中斷請求,一般的處理原則是:不同按高低 低級讓進階 進階封低級 同級等處理

不同按高低 不同優先級的多個中斷源同時發出中斷請求,按優先級由高到低依次處理。

低級讓進階 低優先級中斷正在處理,出現高優先級請求,應轉去處理高優先級請求,服務結束後再傳回原優先級較低的中斷服務程式繼續執行。(即中斷嵌套)

進階封低級 高優先級中斷正在處理,出現低優先級請求,可暫不響應。

同級等處理 中斷處理時,出現同級别請求,應在目前中斷處理結束以後再處理新的請求。

2.中斷優先級的确定

微機系統中通常用三種方法來确定中斷源的優先級别,即:

  • 軟體查詢法
  • 硬體排隊電路法
  • 專用中斷控制晶片法

1)軟體查詢法

軟體查詢法需要簡單的硬體電路支援。以8個中斷源為例,其硬體電路如圖7.13所示,将8個外設的中斷請求組合起來作為一個端口(中斷寄存器),并将各個外設的中斷請求信号相或,産生一個總的INT信号。

第七章 輸入/輸出與中斷【微機原理】

采用軟體查詢方式,各中斷源的優先級是由查詢順序決定的。

優點:節省硬體

缺點:CPU每次響應中斷時都要對各中斷源進行逐一查詢,是以其響應速度較慢。對于優先級較低的中斷源來說,該缺點更為明顯。

第七章 輸入/輸出與中斷【微機原理】

2)硬體排隊電路法

各個外設的優先級與其接口在排隊電路中的位置有關。響應信号沿鍊式電路進行傳遞時,最靠近CPU并發出中斷請求的接口将首先攔截住響應信号。

第七章 輸入/輸出與中斷【微機原理】

3)專用中斷控制晶片法

軟體查詢和硬體排隊法雖然可以解決中斷優先級控制問題,但實作起來在硬體和軟體上都要做大量的工作,十分麻煩。較為友善的辦法就是利用可程式設計中斷控制器,例如廣泛應用于80x86微機系統中的專用可程式設計中斷控制晶片Intel 8259A,可以實作單片管理8級中斷,通過級聯最多可以用9片8259A管理64級中斷。

7.4 8086/8088中斷系統

7.4.1 8086/8088的中斷源類型

8086/8088 CPU可以處理256種不同類型的中斷,每一種中斷都給定一個編号(0255),稱為中斷類型号,CPU根據中斷類型号來識别不同的中斷源。

8086/8088的中斷源如圖7.17所示。

第七章 輸入/輸出與中斷【微機原理】

8086/8088中斷源的優先級順序由高到低依次為:

軟體中斷(除單步中斷外)

非屏蔽中斷

可屏蔽中斷

單步中斷

7.4.2 中斷向量表

中斷向量 是中斷服務子程式的入口位址。

中斷向量表是存放中斷向量的一個特定的記憶體區域。

8086/8088共有256個中斷類型号,對應256個中斷服務程式的入口位址。所有中斷服務子程式的入口位址都存放在中斷向量表中。每個入口位址的段位址和段内偏移位址占4個存儲單元,是以其中斷向量表長度為1K(256×4)個單元。8086/8088系統的中斷向量表位于記憶體的前1K位元組,位址範圍為00000H~003FFH。

第七章 輸入/輸出與中斷【微機原理】

CPU響應中斷時,把中斷類型号N乘以4,得到對應位址4N,然後把由此位址開始的兩個低位元組單元(4N,4N+1)的内容裝入IP寄存器,再把兩個高位元組單元(4N+2,4N+3)的内容裝入CS寄存器,于是CPU轉入中斷類型号為N的中斷服務子程式。

7.4.3 8086/8088的中斷處理過程

第七章 輸入/輸出與中斷【微機原理】

7.4.4中斷服務程式的設計

中斷服務程式的一般結構如圖所示。如前所述,在進入中斷處理前,硬體已自動關中斷,若想讓該中斷處理能被更進階别的中斷源中斷,則需事先加入開中斷指令。中斷服務程式的最後一定要有中斷傳回指令IRET,以保證斷點的恢複。

第七章 輸入/輸出與中斷【微機原理】

使用者在設計中斷服務程式時要預先确定一個中斷類型号,确定了中斷類型号,還要把中斷服務入口位址置入中斷向量表,以保證在中斷響應時CPU能自動轉入與該類型号相對應的中斷服務程式。

将中斷服務程式入口位址置入中斷向量表的方法有兩種:DOS系統功能調用法和直接裝入法。

1.中斷向量表的建立

1.DOS系統功能調用法(INT 21H)

功能号:
      (AH)=25H。
  入口參數:
      (AL)=中斷類型号
      (DS)=中斷服務程式入口位址的段位址
      (DX)=中斷服務程式入口位址的偏移位址       

如中斷服務子程式名為INT60,中斷類型号為60H

PUSH DS           ;保護DS
LEA  DX,INT60    ;取服務程式偏移位址
MOV  AX,SEG INT60;取服務程式段位址
MOV  DS,AX
MOV  AH,25H      ;送功能号
MOV  AL,60H      ;送中斷類型号
INT  21H          ;DOS功能調用
POP  DS           ;恢複DS       
第七章 輸入/輸出與中斷【微機原理】

2.直接裝入法

用傳送指令直接将中斷服務子程式首位址INT60置入向量表中。設中斷類型号為60H(此類型号對應的向量表位址為從00180H即0000H: 0180H開始的四個連續存儲單元)。程式段如下:

XOR  AX,AX
   MOV  DS,AX
   MOV  AX,OFFSET INT60
   MOV  DS:[0180H],AX ;置偏移位址
   MOV  AX,SEG INT60
   MOV  DS:[0180H+2],AX;置段位址       

2.程式設計舉例

編寫中斷服務程式實作在螢幕上顯示字元串“This is a Interruption Service Program!”。設中斷類型号取60H,采用DOS功能調用法置中斷服務程式入口位址,通過軟中斷指令INT 60H實作中斷服務程式的調用。程式設計如下:

int_1.asm

DATA  SEGMENT
MESG  DB 'This is a Interruption Service Program!$'
DATA  ENDS
CODE  SEGMENT
       ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
PUSH    DS          
MOV   DX,OFFSET DISP60  ;取DISP60的偏移位址
MOV   AX,SEG DISP60   ;取中斷服務程式DISP60的段位址
MOV   DS,AX
MOV   AH,25H      
MOV   AL,60H      
INT   21H           
POP   DS    
      
INT     60H
MOV   AH,4CH
INT     21H

DISP60  PROC  FAR                  ;中斷服務程式DISP60
        MOV    DX,OFFSET MESG
        MOV    AH,09H
        INT     21H
        IRET
DISP60  ENDP
CODE   ENDS
         END  START

      

在本例的中斷服務程式中無須保護現場和恢複現場。

結果1

說明:此為VS CODE執行結果

其中,Do you need to keep the DosBox[Y,N]

不是程式本身的輸出結果

第七章 輸入/輸出與中斷【微機原理】

int_2.asm

DATA  SEGMENT
MESG  DB 'This is a Interruption Service Program!$'
DATA  ENDS
CODE  SEGMENT
       ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
PUSH    DS              
XOR  AX,AX
   MOV  DS,AX
   MOV  AX,OFFSET DISP60
   MOV  DS:[0180H],AX ;置偏移位址
   MOV  AX,SEG DISP60
   MOV  DS:[0180H+2],AX;置段位址           
POP   DS    
         
INT     60H
MOV   AH,4CH
INT     21H

DISP60  PROC  FAR                  ;中斷服務程式DISP60
        MOV    DX,OFFSET MESG
        MOV    AH,09H
        INT     21H
        IRET
DISP60  ENDP
CODE   ENDS
         END  START      

結果2

說明:此為VS CODE執行結果

其中,Do you need to keep the DosBox[Y,N]

不是程式本身的輸出結果

第七章 輸入/輸出與中斷【微機原理】

7.5可程式設計中斷控制器Intel 8259A

7.5.1 8259A的功能

7.5.2 8259A的内部結構及外部引腳

7.5.3 8259A的工作方式

7.5.4 8259A的程式設計