微機原理-第8章-IO接口技術課件_第1頁
微機原理-第8章-IO接口技術課件_第2頁
微機原理-第8章-IO接口技術課件_第3頁
微機原理-第8章-IO接口技術課件_第4頁
微機原理-第8章-IO接口技術課件_第5頁
已閱讀5頁,還剩95頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第8章 I/O 接口技術第8章 I/O 接口技術本章主要內容(1) I/O接口的基本概念(2) I/O控制方式(3) DMA接口技術(4) 中斷系統本章主要內容(1) I/O接口的基本概念8.1 I/O接口概述8.1.1 I/O接口的基本功能 (1) 數據緩沖 (2) 提供聯絡信息 (3) 信號與信息格式的轉換 (4) 設備選擇 (5) 中斷管理 (6) 可編程功能8.1 I/O接口概述8.1.1 I/O接口的基本功能8.1.2 I/O接口的基本結構I/O接口的基本結構如圖8.1所示。8.1.2 I/O接口的基本結構cpu外 圍 設 備 數據輸入寄存器數據輸出寄存器狀態寄存器 控制寄存器中斷控

2、制邏輯數據總線地址總線控制總線圖8.1 I/O 接口的基本結構I/O接口cpu外 圍 設 備 數據輸入寄存器數據輸出寄存器狀8.1.3 I/O端口的編址方式輸入輸出接口包含一組稱為I/O端口的寄存器。為了讓CPU能夠訪問這些I/O端口,每個I/O端口都需有自己的端口地址(或端口號)。在一個微型計算機系統中,如何編排這些I/O接口的端口地址,稱為I/O端口的編址方式。8.1.3 I/O端口的編址方式輸入輸出接口包含一組稱為I常見的I/O端口編址方式有兩種: 一種是I/O端口和存儲器統一編址,也稱存儲器映像的I/O(MemoryMapped I/O)方式;另一種是I/O端口和存儲器分開編址,也稱I

3、/O映像的I/O(I/O Mapped I/O)方式。常見的I/O端口編址方式有兩種: 1. I/O端口和存儲器統一編址 (Memory-mapped I/O)I/O端口和存儲器統一編址的地址空間分布情況如圖8.2所示。1. I/O端口和存儲器統一編址I/O 端口存儲單元I/O 地址空間存儲器地址空間整個地址空間圖8.2 I/O 端口和存儲器統一編址I/O 端口I/O 地址空間存儲器地址空間整個地址空間圖8.這種編址方式的優點是,可以用訪向存儲器的指令來訪問I/O端口,而訪問存儲器的指令功能比較強,不僅有一般的傳送指令,還有算術、邏輯運算指令,以及各種移位、比較指令等,并且可以實現直接對I/O

4、端口內的數據進行處理。例如,若一個存儲器映像的I/O端口地址為3000H, 則可以直接用指令“ADD AL, DS:3000H”對端口的內容進行算術運算。這種編址方式的優點是,可以用訪向存儲器的指令來訪問I/O端口缺點是:由于I/O端口占用了一部分存儲器地址空間,因而使用戶的存儲地址空間相對減小;另外,由于利用訪問存儲器的指令來進行I/O操作,指令的長度通常比單獨I/O指令要長,因而指令的執行時間也較長。微處理器MC6800系列、6502系列以及MC680 x0系列采用這種編址方式。缺點是:2. I/O端口和存儲器單獨編址 (I/O- mapped I/O)I/O端口和存儲器單獨編址的地址空間

5、分布如圖8.3所示。 2. I/O端口和存儲器單獨編址 (I/O- ma存儲單元存儲地址空間I/O 端口I/O 地址空間圖8.3 I/O 端口和存儲器單獨編址 存儲單元存儲地址空間I/O 端口I/O 地址空間圖8.3 這種編址方式的優點是:第一,I/O端口不占用存儲器地址,故不會減少用戶的存儲器地址空間;第二,單獨I/O指令的地址碼較短,地址譯碼方便,I/O指令短,執行速度快;第三,采用單獨的I/O指令,使程序中I/O操作和其他操作層次清晰,便于理解。這種編址方式的優點是:這種編址方式的缺點是:第一,單獨I/O指令的功能有限,只能對端口數據進行輸入/輸出操作,不能直接進行移位、比較等其他操作;

6、第二,由于采用了專用的I/O操作時序及I/O控制信號線,因而增加了微處理器本身控制邏輯的復雜性。微處理器Z80系列、Intel 80 x86系列采用了這種編址方式。這種編址方式的缺點是:8.1.4 I/O接口的地址譯碼及片選信號的產生在一個微機系統中通常具有多臺外設,當CPU與外設進行通信時,需要對各個設備所對應的接口芯片進行邏輯選擇,從而實現與相應的設備進行數據交換。這種邏輯選擇功能是由I/O接口電路中的地址譯碼器實現的。目前常見的一種做法是:先通過對I/O端口地址的某幾位高位地址進行譯碼,產生有效的片選信號,從而選中對應的接口芯片,再利用I/O端口地址的低位地址作為對接口芯片內部有關寄存器

7、的選擇。8.1.4 I/O接口的地址譯碼及片選信號的產生在一個微機例如,在IBMPC/XT微機中,其系統板上有數片I/O接口芯片,其中包括DMA控制器8237、中斷控制器8259A、并行接口8255A、計數器/定時器8253等。這些接口芯片必須是在相應的片選信號有效時才能工作。圖8.4所示的就是在該微機系統中片選信號的產生電路。例如,在IBMPC/XT微機中,其系統板上有數片I/O接口 A Y0 B Y1 C Y2 Y3 Y4G2B Y5 G2A Y6 G1 Y7A5A6A874LS138A7A9AENPPICST/C CSINTRCSDMACSIOWWRTDMAPG(寫DMA頁面寄存器)WR

8、TNMIREG(寫NMI屏蔽寄存器)圖8.4 片選信號的產生A5A6A874LS138A7A9AENPPICST/C C8.2 I/O控制方式主機與外圍設備之間的數據傳送控制方式(即I/O控制方式)主要有三種:程序控制方式、中斷控制方式和直接存儲器存取(DMA)方式。8.2.1 程序控制方式程序控制方式是指在程序控制下進行的數據傳送方式。它又分為無條件傳送和程序查詢傳送兩種。1. 無條件傳送方式優點:控制程序簡單。缺點:必須是在外設已準備好的情況下才能使用,否則,傳送就會出錯。 8.2 I/O控制方式主機與外圍設備之間的數據傳送控制方2. 程序查詢傳送方式優點:比無條件傳送要準確和可靠。 缺點

9、: (1)CPU的利用率低; (2)不能滿足實時控制系統對I/O處理的要求。 2. 程序查詢傳送方式準備好?讀取狀態信息輸入數據是否圖8.5 查詢式輸入程序流程圖忙?讀取狀態信息輸出數據否是圖8.6 查詢式輸出程序流程圖準備好?讀取狀態信息輸入數據是否圖8.5 查詢式輸入程序流8.2.2 中斷控制方式與程序查詢方式相比,中斷控制方式的數據交換具有如下特點: (1) 提高了CPU的工作效率; (2) 外圍設備具有申請服務的主動權; (3) CPU可以和外設并行工作; (4) 可適合實時系統對I/O處理的要求。8.2.2 中斷控制方式與程序查詢方式相比,中斷控制方式的8.2.3 DMA方式1. D

10、MA的基本概念采用程序控制方式以及中斷方式進行數據傳送時,都是靠CPU執行程序指令來實現數據的輸入/輸出的。采用程序控制方式及中斷方式時,數據的傳輸率不會很高。對于高速外設,如高速磁盤裝置或高速數據采集系統等,采用這樣的傳送方式,往往滿足不了其數據傳輸率的要求。例如,對于磁盤裝置,其數據傳輸率通常在20萬字節/秒以上,即傳輸一個字節的時間要小于5s。8.2.3 DMA方式1. DMA的基本概念對于通常的PC機來說,執行一條程序指令平均需要幾s時間。顯然,采用程序控制或中斷方式不能滿足這種高速外設的要求。由此產生不需要CPU干預(不需CPU執行程序指令),而在專門硬件控制電路控制之下進行的外設與

11、存儲器間直接數據傳送的方式,稱為直接存儲器存取(Direct Memory Access),簡稱DMA方式。這一專門的硬件控制電路稱為DMA控制器,簡稱DMAC。對于通常的PC機來說,執行一條程序指令平均需要幾s時間。顯CPU外設存儲器總線:執行程序指令的數據傳送路徑; :DMA方式的數據傳送路徑圖8.7 兩種不同的數據傳送路徑CPU外設存儲器總線:執行程序指令的數據傳送路徑; 2. 幾種不同形式的DMA傳送內存外設DMAC輸出輸入外設外設DMAC內存內存DMAC圖 8.8 DMA傳送的幾種形式2. 幾種不同形式的DMA傳送內存外設DMAC輸出輸入外設外8.3 DMA技術8.3.1 DMA控制

12、器的基本功能 (1) 能接收I/O接口的DMA請求,并向CPU發出總線請求信號; (2) 當CPU發出總線回答信號后,接管對總線的控制,進入DMA傳送過程; (3) 能實現有效的尋址,即能輸出地址信息并在數據傳送過程中自動修改地址;8.3 DMA技術8.3.1 DMA控制器的基本功能 (4) 能向存儲器和I/O接口發出相應的讀/寫控制信號; (5) 能控制數據傳送的字節數,控制DMA傳送是否結束; (6) 在DMA傳送結束后,能釋放總線給CPU,恢復CPU對總線的控制。 (4) 能向存儲器和I/O接口發出相應的讀/寫控制信號;8.3.2 DMA控制器的一般結構一個單通道DMA控制器的一般結構及

13、其與I/O接口的連接如圖8.9所示。圖8.9的上半部分是I/O接口,下半部分是DMA控制器。8.3.2 DMA控制器的一般結構計數結束信號(可作為中斷請求信號)控制寄存器 狀態寄存器數據輸入寄存器數據輸出寄存器控制寄存器 狀態寄存器地址寄存器字節計數寄存器數據總線控制總線數據總線控制總線地址總線地址總線地址譯碼器 DMA控制器DMA請求DMA響應中斷請求外設I/O 接口總線回答總線請求圖8.9 DMA控制器的一般結構及其與I/O 接口的連接計數結束信號控制寄存器 狀態寄存器數據輸入寄存器數據輸出寄存8.3.3 DMA控制器的工作方式DMA控制器的工作方式通常有“單字節傳輸方式”、“塊傳輸方式”

14、以及“請求傳輸方式”等。1. 單字節傳輸方式在單字節傳輸方式下,DMA控制器每次請求總線只傳送一個字節數據,傳送完后即釋放總線控制權。在此方式下,總線控制權處于CPU與DMA控制器交替控制之中,其間,總線控制權經過多次交換。2. 塊傳輸方式(也稱成組傳輸方式)塊傳輸方式是指DMA控制器每次請求總線即連續傳送一個數據塊,待整個數據塊全部傳送完成后再釋放總線控制權。8.3.3 DMA控制器的工作方式DMA控制器的工作方式通常3. 請求傳輸方式每傳輸完一個字節,DMA控制器都要檢測由I/O接口發來的“DMA請求”信號是否仍然有效,如果該信號仍有效,則繼續進行DMA傳輸;否則,就暫停傳輸,交還總線控制

15、權給CPU,直至“DMA請求”信號再次變為有效,數據塊傳輸則從剛才暫停的那一點繼續進行下去。3. 請求傳輸方式8.3.4 DMA工作過程在DMA方式下,往往傳送的是一個數據塊,但傳送這個數據塊的具體操作方式,可以采用上面介紹的單字節傳輸方式,也可采用塊傳輸或請求傳輸方式。下面先以從內存輸出一個字節數據到外設的DMA傳送過程為例,具體說明DMA的操作過程。然后再給出以DMA方式輸入一個數據塊的工作過程。以DMA方式從內存輸出一個字節數據到外設的具體工作過程如圖8.10中第步所示。8.3.4 DMA工作過程在DMA方式下,往往傳送的是一個(6) 內存把數據送數據總線(7) 接口鎖存數據內存接口DM

16、A控制器I/O 設備CPU 和總線控制邏輯HOLD HLDA (1) 接口準備就緒,發DMA請求(2) 發總線請求(3) 總線允許 (5) DMA響應(9) CPU收回總線控制權(8)DMA 控制器撤銷總線請求(4) DMA控制器把地址送地址總線數據總線控制總線地址總線圖 8.10 以DMA方式輸出一個字節數據的工作過程(6) 內存把數據送數據總線(7) 接口鎖存數據內存接口DM若從外設往內存輸入一個數據塊(輸入過程),在單字節傳輸方式下,其主要工作過程為:(1)I/O接口準備就緒,向DMA控制器發“DMA請求”信號;(2)DMA控制器向CPU發“總線請求”信號;(3)CPU向DMA控制器發“

17、總線允許”信號; (4)DMA控制器把地址送到地址總線上;(5)DMA控制器向I/O接口發“DMA響應”信號;若從外設往內存輸入一個數據塊(輸入過程),在單字節傳輸方式下(6)DMA控制器發讀I/O接口信號,令I/O接口把數據送到數據總線上;(7)DMA控制器發寫存儲器信號,將數據寫入由地址總線上的地址所指向的內存單元;(8)DMA控制器撤銷總線請求;(9)CPU 收回總線控制權;(10)地址寄存器加1;(11)字節計數寄存器減1;(12)如果字節計數寄存器的值不為零,則返回第(1) 步,否則結束。(6)DMA控制器發讀I/O接口信號,令I/O接口把數據送到8.3.5 可編程DMA控制器823

18、7Intel 8237是一種功能很強的可編程DMA控制器,目前仍在微機系統中廣泛應用(置于南橋芯片中)。采用5MHz時鐘時,其傳輸速率可達1.6MB/s;一片8237內部有4個獨立的DMA通道,每個通道一次DMA傳送的最大長度可達64KB;每個通道的DMA請求都可以分別允許和禁止;不同通道的DMA請求有不同的優先級,優先級可以是固定的,也可以是循環的(可編程設定);4個通道可以分時地為4個外部設備實現DMA傳送,也可以同時使用其中的通道0和通道1實現存儲器到存儲器的直接傳送,還可以用多片8237進行級聯,從而構成更多的DMA通道。8.3.5 可編程DMA控制器8237Intel 8237是8.

19、4 中斷系統8.4.1 基本概念1. 中斷在程序運行時,系統外部、內部或現行程序本身若出現緊急事件,處理器必須立即強行中止現行程序的運行,改變機器的工作狀態并啟動相應的程序來處理這些事件,然后再恢復原來的程序運行,這一過程稱為中斷(interrupt) 。在通用計算機中,為了提高系統的效率,采用CPU與外設并行工作的方式,中斷就作為外設和CPU之間聯系的手段。隨著計算機系列化產品和操作系統的出現,中斷系統的地位更加重要。8.4 中斷系統8.4.1 基本概念1)中斷源能夠向CPU發出中斷請求的中斷來源稱為中斷源。常見的中斷源為:(1) 一般的輸入/輸出設備,如CRT終端、打印機等;(2) 數據通

20、道,如磁盤、磁帶等;(3) 實時時鐘,如定時器輸出的作為定時中斷請求信號等;(4) 故障信號,如電源掉電等;(5) 軟件中斷,如為調試程序而設置的中斷源。1)中斷源2) 現代計算機采用的中斷系統的主要目的(1)維持系統的正常工作,提高系統效率;(2)實時處理;(3)為故障處理作準備。2. 中斷響應和處理的一般過程每個中斷源向CPU發出的中斷請求信號通常是隨機的,而大多數CPU都是在現行指令周期結束時,才檢測有無中斷請求信號到來。故在現行指令執行期間,各中斷源必須把中斷請求信號鎖存起來,并保持到CPU響應這個中斷請求后,才清除中斷請求。2) 現代計算機采用的中斷系統的主要目的CPU在執行每條指令

21、的最后一個機器周期的最后一個時鐘周期,檢測中斷請求信號輸入線。若發現中斷請求信號有效,對于可屏蔽中斷還必須CPU開放中斷,則在下一總線周期進入中斷響應周期。進入中斷響應周期后,中斷響應和處理的一般過程如下。進入中斷響應周期后,中斷響應和處理的過程如下:1)關中斷CPU在響應中斷時,發出中斷響應信號INTA*,同時內部自動地關中斷,以禁止接受其他的中斷請求。CPU在執行每條指令的最后一個機器周期的最后一個時鐘周期,檢2)保存斷點把斷點處的指令指針IP值和CS值壓入堆棧,以使中斷處理完后能正確地返回主程序斷點。3)識別中斷源CPU要對中斷請求進行處理,必須找到相應的中斷服務程序的入口地址,這就是中

22、斷的識別。4)保護現場為了不使中斷服務程序的運行影響主程序的狀態,必須把斷點處有關寄存器(指在中斷服務程序中要使用的寄存器)的內容以及標志寄存器的狀態壓入堆棧保護。2)保存斷點5)執行中斷服務程序在執行中斷服務程序中,可在適當時刻重新開放中斷,以便允許響應較高優先級的中斷。6)恢復現場并返回把中斷服務程序執行前壓入堆棧的現場信息彈回原寄存器,然后執行中斷返回指令,從而返回主程序繼續運行。5)執行中斷服務程序在上述中斷響應及處理的6項操作中,前3項是中斷響應過程,一般由中斷系統硬件負責完成;后3項是中斷處理過程,通常是由用戶或系統程序設計者編制的中斷處理程序(軟件)負責完成。針對一個具體的系統或

23、機型,中斷服務程序設計者應該清楚該系統在中斷響應時,中斷響應硬件完成了哪些操作(如程序狀態字PSW是否已被壓入堆棧),還需中斷處理軟件(中斷服務程序)完成哪些操作。在上述中斷響應及處理的6項操作中,前3項是中斷響應過程,一般3. 中斷優先級和中斷嵌套1) 中斷優先級在實際系統中,多個中斷請求可能同時出現,但中斷系統只能按一定的次序來響應和處理,這時CPU必須確定服務的次序,即根據中斷源的重要性和實時性,照顧到操作系統處理的方便,對中斷源的響應次序進行確定。這個響應次序稱為中斷優先級(priority)。3. 中斷優先級和中斷嵌套1) 中斷優先級通常,可用軟件查詢法確定中斷優先級,也可用硬件組成

24、中斷優先級編碼電路來實現。現代PC機中多采用可編程中斷控制器(如8259A)來處理中斷優先級問題。(1) 軟件查尋法確定中斷優先級采用軟件查詢法解決中斷優先級只需要少量硬件電路。如圖8.11所示,系統中有多種外部設備,將這些設備的中斷請求信號相“或”,從而產生一個總的中斷請求信號INTR發給CPU。通常,可用軟件查詢法確定中斷優先級,也可用硬件組成中斷優先級圖8.11 軟件查詢接口電路磁盤磁帶CRT顯示鍵盤輸入打印輸出電源故障紙帶輸入保留INTR圖8.11 軟件查詢接口電路磁盤磁帶CRT鍵盤輸入打印輸出當CPU響應中斷請求進入中斷處理程序后,必須在中斷處理程序的開始部分安排一段帶優先級的查詢程

25、序,查詢的先后順序就體現了不同設備的中斷優先級,即先查的設備具有較高的優先級,后查的設備具有較低的優先級。 一般來說總是先查速度較快或是實時性較高的設備。 軟件查詢的流程如圖8.12所示。當CPU響應中斷請求進入中斷處理程序后,必須在中斷處理程序的圖8.12 軟件查詢流程圖保護現場恢復現場A申請服務?B申請服務?C申請服務?外設A中斷服務程序NNN外設B中斷服務程序外設C中斷服務程序YYY圖8.12 軟件查詢流程圖保護現場恢復現場A申請服務?B申請(2) 菊花鏈優先級排隊電路菊花鏈(Daisy Chain)優先級排隊電路是一種優先級管理的簡單硬件方案。它是在每個設備接口設置一個簡單的邏輯電路,

26、以便根據優先級順序來傳遞或截留CPU發出的中斷響應信號INTA*,以實現響應中斷的優先順序。(3)可編程中斷控制器中斷優先級管理的第三種方法是利用專門的可編程中斷控制器,如可編程中斷控制器8259A。(2) 菊花鏈優先級排隊電路2) 中斷嵌套當CPU正在執行優先級較低的中斷服務程序時,允許響應比它優先級高的中斷請求,而將正在處理的中斷暫時掛起,這就是中斷嵌套。此時,CPU首先為級別高的中斷服務,待優先級高的中斷服務結束后,再返回到剛才被中斷的較低的那一級,繼續為它進行中斷服務。如圖8.13所示。2) 中斷嵌套圖8.13 中斷嵌套示意圖STIIRETSTIIRET.圖8.13 中斷嵌套示意圖ST

27、IIRETSTIIRET.中斷嵌套的深度(中斷服務程序又被中斷的層次)受到堆棧容量的限制。所以在編寫中斷服務程序時,必須要考慮有足夠的堆棧單元來保留多次中斷的斷點信息及有關寄存器的內容。中斷嵌套的深度(中斷服務程序又被中斷的層次)受到堆棧容量的限8.4.2 80 x86實模式的中斷系統1. 中斷的分類中斷分類的方式很多。根據其重要性和緊急程度可分為可屏蔽中斷和不可屏蔽中斷,根據中斷源的位置可分為內部中斷和外部中斷,根據進入中斷的方式可分為自愿中斷和強迫中斷等。實模式下的80 x86有一個簡單而靈活的中斷系統,每個中斷都有一個中斷類型碼(也叫中斷類型號),以供CPU進行識別。實模式下的80 x8

28、6最多能處理256種不同的中斷,對應的中斷類型碼為0255。8.4.2 80 x86實模式的中斷系統1. 中斷的分類中斷可以由CPU外的硬設備啟動,也可由軟件中斷指令啟動,在某些情況下,也可由CPU自身啟動。根據中斷源的位置,將實模式下的80 x86系統的中斷分為內部中斷和外部中斷兩大類,如圖8.14所示。內部中斷來自CPU內部,包括指令中斷INT n、溢出中斷(INTO)、除法錯(除數為0)中斷、單步中斷、斷點中斷(INT 3)等幾種。中斷可以由CPU外的硬設備啟動,也可由軟件中斷指令啟動,在某圖8.14 80 x86實模式系統的中斷分類INT n 指令中 斷 邏 輯斷點中斷(INT 3)溢

29、出中斷(INTO, OF=1)單步中斷(TF=1)除法錯中斷軟件中斷(內部中斷)非屏蔽中斷請求中斷控制器(8259A)NMIINTRIRQ0.IRQ7可 屏 蔽 中 斷 硬件中斷(外部中斷)圖8.14 80 x86實模式系統的中斷分類INT n 指80 x86實模式系統中可引入的外部中斷分為可屏蔽中斷和不可屏蔽中斷兩大類。不可屏蔽中斷也叫非屏蔽中斷,通過CPU的NMI 引腳進入,它不受中斷允許標志IF的屏蔽,一般將比較緊急、需要系統立即響應的中斷定義為非屏蔽中斷。可屏蔽中斷是通過CPU的INTR引腳進入的,并且只有當中斷允許標志IF=1時,可屏蔽中斷才能進入。在一個系統中,通過中斷控制器(如8

30、259A)的配合工作,可屏蔽中斷可以有幾個甚至幾十個。外部中斷也叫硬件中斷,內部中斷也叫軟件中斷。80 x86實模式系統中可引入的外部中斷分為可屏蔽中斷和不可屏需要說明的是,對于工作于保護模式下的80386以上微處理器,把外部中斷稱為“中斷”,把內部中斷稱為“異常”(exception)。關于保護模式下的中斷和異常的相關概念和操作過程,這里不再做專門介紹。需要說明的是,對于工作于保護模式下的80386以上微處理器,2. 中斷向量表所謂中斷向量(interrupt vector),實際上就是中斷服務程序的入口地址,每個中斷類型對應一個中斷向量。每個中斷向量占4字節的存儲單元。其中:前兩個字節單元

31、存放中斷服務程序入口地址的偏移量(IP),低字節在前,高字節在后;后兩個字節單元存放中斷服務程序入口地址的段基值(CS),也是低字節在前,高字節在后。2. 中斷向量表所謂中斷向量(interrupt vect80 x86實模式系統允許引入的中斷可達256個,因此需占用1K字節的存儲空間來存放這256個中斷服務程序入口地址。80 x86實模式系統把中斷服務程序入口地址信息設置在存儲器的最低端,即從00000H003FFH的1K字節存儲空間中。這一存儲空間就叫中斷向量表,如圖8.15所示。80 x86實模式系統允許引入的中斷可達256個,因此需占用1圖8.15 實模式系統的中斷向量表CSIPCSI

32、PCSIPCSIPCSIPCSIPCSIP類型255(十進制)類型32類型31(十進制)供用戶定義的中斷(共224個)類型5類型4類型3類型2類型1類型0保留的中斷(共27個)專用的中斷(共5個)0000: 03FFH0000:007FH0000:007EH 0000:0014H0000:0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H溢出中斷斷點中斷非屏蔽中斷單步中斷除數為0中斷圖8.15 實模式系統的中斷向量表CSCSCSCSCSCS在中斷向量表中,

33、各中斷向量按中斷類型碼從0到255順序存放。這樣,知道了中斷類型碼,很快就可算出相應中斷向量的存放位置,從而取出中斷向量。例如,中斷類型碼為27H的中斷所對應的中斷向量應存放在從0000H:009CH開始的4個連續字節單元中。如果相應存儲單元的內容如圖8.16所示,那么27H號中斷的中斷服務程序的入口地址即為8765H:4321H。在中斷向量表中,各中斷向量按中斷類型碼從0到255順序存放。圖8.16 中斷向量的存放格式87H65H43H21H0000:009FH0000:009CH圖8.16 中斷向量的存放格式87H0000:009FH由于中斷向量在中斷向量表中是按中斷類型碼(也稱中斷向量號

34、)順序存放的,所以每個中斷向量的地址可由中斷類型碼乘以4計算出來。CPU響應中斷時,只要把中斷類型碼N左移2位(乘以4),即可得到中斷向量在中斷向量表中的對應地址4N(該中斷向量所占4個字節單元的第一個字節單元的地址)。然后把由此地址開始的兩個低字節單元的內容裝入IP寄存器: IP (4N, 4N+1) 再把兩個高字節單元的內容裝入 CS 寄存器: CS (4N+2, 4N+3)由于中斷向量在中斷向量表中是按中斷類型碼(也稱中斷向量號)順這就是使程序轉入中斷類型碼為N的中斷服務程序的控制過程,如下面例8.1所示。至于中斷類型碼N的來源,對于不同的中斷類型(內部中斷、外部中斷),情況有所不同,詳

35、見后述。例8.1 若中斷類型碼為3,則由中斷類型碼取得中斷服務程序入口地址的過程如圖8.17所示。這就是使程序轉入中斷類型碼為N的中斷服務程序的控制過程,如下圖8.17 根據中斷類型碼取得中斷服務程序入口地址OOH(IPL)0AH(IPH)00H(CSL)1EH(CSH)中斷服務程序00000H00001H0000CH(0000:000CH) 1EA00H(1E00:0A00H)FFFFFH高地址低地址34000CH(中斷向量地址)圖8.17 根據中斷類型碼取得中斷服務程序入口地址000例8.2 中斷類型碼為20H,則中斷服務程序的入口地址存放在中斷向量表從0000:0080H開始的4個字節單

36、元中。若這4個字節單元的內容分別為:(0000:0080H)= 10H(0000:0081H)= 20H(0000:0082H)= 30H(0000:0083H)= 40H試指出相應的中斷服務程序的入口地址。解: 中斷服務程序的入口地址為 。例8.2 中斷類型碼為20H,則中斷服務程序的入口地址存放例8.3 中斷類型碼為17H,若中斷服務程序的入口地址為2340H:7890H,試指出中斷向量表中存放該中斷向量的4個字節單元的地址及內容。解: 由于中斷類型碼為17H,所以中斷向量表中存放相應中斷向量的4個字節單元的地址分別為0000:005CH、0000:005DH、0000:005EH、000

37、0:005FH,4個字節單元的內容分別為 。 例8.3 中斷類型碼為17H,若中斷服務程序的入口地址為3. 外部中斷由外部的中斷請求信號啟動的中斷,稱為外部中斷,也稱硬件中斷。80 x86 CPU為外部中斷提供兩條引線,即NMI和INTR,用來輸入中斷請求信號。1) 非屏蔽中斷從NMI引腳進入的中斷為非屏蔽中斷,它不受中斷允許標志IF的影響。非屏蔽中斷的類型碼為2,因此,非屏蔽中斷處理子程序的入口地址存放在08H、09H、0AH和0BH這4個字節單元中 。3. 外部中斷由外部的中斷請求信號啟動的中斷,稱為外部中2) 可屏蔽中斷一般外部設備請求的中斷都是從CPU的INTR端引入的可屏蔽中斷。當C

38、PU接收到一個可屏蔽中斷請求時,如果中斷允許標志IF為1,那么CPU就會在執行完當前指令后響應這一中斷請求。至于IF的設置和清除,則可以通過指令或調試工具來實現。CPU響應外部可屏蔽中斷時,往INTA引腳上先后發兩個負脈沖。外設接口收到第二個負脈沖以后,立即往數據總線上送出中斷類型碼,以供CPU讀取。2) 可屏蔽中斷4. 內部中斷內部中斷也稱軟件中斷。它是由于CPU執行了INT n(含INT 3)、INTO指令,或者由于除法出錯以及進行單步操作所引起的中斷,主要包括INT n指令中斷、斷點中斷、溢出中斷、除法錯中斷以及單步中斷。4. 內部中斷內部中斷也稱軟件中斷。(1) INT n 指令中斷。

39、 80 x86系統提供了直接調用中斷處理子程序的手段,這就是中斷指令INT n。指令中的中斷類型碼n告訴CPU調用哪個中斷處理子程序。(2) 除法錯中斷(類型0)在執行除法指令DIV 或IDIV 后,若所得的商超出了目標寄存器所能表示的范圍,比如用數值0作除數,則CPU立即產生一個0型中斷。(1) INT n 指令中斷。 (3) 溢出中斷(類型4)若上一條指令執行的結果使溢出標志位OF置1,則緊接著執行INTO指令時,將引起類型為4的內部中斷,CPU將轉入溢出錯誤處理。若OF=0時,則INTO指令執行空操作,即INTO指令不起作用。 INTO指令通常安排在算術運算指令之后,以便在發生溢出時能及

40、時處理。(3) 溢出中斷(類型4)(4) 單步中斷(類型1)當把CPU標志寄存器的TF位置為1以后,CPU便處于單步工作方式。在單步工作方式下,CPU每執行完一條指令,就會自動產生一個1 型中斷,進入1型中斷處理程序。此處理程序顯示CPU內部各寄存器的內容并告知某些附帶的信息。(4) 單步中斷(類型1)(5) 斷點中斷 (類型3)與單步中斷類似,斷點中斷也是一種調試程序的手段,并且常常和單步中斷結合使用。對一個大的程序,不可能對整個程序全部用單步方式來調試,而只能先將程序中的某一錯誤確定在程序中的一小段中,再對這一小段程序用單步方式跟蹤調試。斷點中斷就是用來達到這個目的的。(5) 斷點中斷 (

41、類型3)內部中斷的特點是:(1) 中斷類型碼由CPU內部自動提供(含從INT n指令中自動提取),不需要執行中斷響應總線周期(INTA總線周期)去讀取中斷類型碼。(2) 除單步中斷外,所有內部中斷都不可以用軟件的方法來禁止(屏蔽)。單步中斷可以通過軟件將TF標志置1或清0來予以允許或禁止。(3) 除單步中斷外,所有內部中斷的優先級都比外部中斷高。內部中斷的特點是:5. 中斷響應和中斷處理過程圖8.18 給出了可屏蔽中斷從中斷請求信號產生到中斷服務程序結束并返回被中斷程序的全過程。5. 中斷響應和中斷處理過程圖8.18 給出了可屏蔽中斷從圖8.18 可屏蔽中斷全過程 INTR _ INTAIPC

42、SPSW(FR)中斷類型碼寄存器 CPU完成現行指令, 發出中斷響應信號 Q中斷請求中斷屏蔽 接口發中斷請求信號INTR CPU讀取中斷類型碼N新的(IP)新的(CS)舊的(IP)舊的(CS)舊的(PSW)被中斷的程序.STI.IRET中斷服務程序.存儲器中斷向量表16位4N4N+2清除IF和TF 轉入中斷服務程序 返回被中斷的程序開放中斷(可選) 現行PSW、CS、IP壓棧 IRET指令使舊的IP、CS、PSW彈出堆棧CPU外設接口取CS、IP新值圖8.18 可屏蔽中斷全過程 由圖8.18可見,首先由外設接口產生中斷請求信號送往CPU的INTR引腳上。CPU是否響應取決于其內部的中斷允許標志

43、位IF,如果IF為0,則在IF變成1以前CPU不會響應該中斷請求;如果IF為1,則CPU在完成正在執行的指令后,便開始響應中斷,從INTA引腳發出中斷響應信號INTA*給外設接口,該響應信號將使外設接口(或專門的中斷控制電路如8259A)把8位的中斷類型碼通過數據總線送給CPU。之后相繼完成下列步驟:(1) CPU讀取中斷類型碼N;(2) 依次把PSW、CS和IP的當前內容壓入堆棧;由圖8.18可見,首先由外設接口產生中斷請求信號送往CPU的 (3) 清除IF和TF標志;(4) 把字存儲單元4N的內容送入IP,4N+2的內容送入CS。此時,將從新的CS:IP值所指處開始執行中斷服務程序。若允許

44、中斷嵌套,則可在中斷服務程序中保存相關寄存器的內容之后安排一條開放中斷指令STI。這是因為CPU響應中斷后便自動清除了IF和TF標志位,當中斷服務程序執行了STI指令后,IF標志位又被重新置1,以便讓優先級較高的中斷請求能夠得到響應;在中斷服務程序的最后安排一條中斷返回指令IRET,控制CPU返回到被中斷的程序。 (3) 清除IF和TF標志;CPU響應外部非屏蔽中斷NMI或各種內部中斷時的操作順序基本上與上述過程相同,不同之處是響應這些中斷時不需要從外部讀取中斷類型碼,它們的中斷類型碼是由CPU內部自動產生或直接從指令流中獲取的。一旦CPU識別NMI中斷請求或內部中斷請求時,便會自動轉入它們各

45、自的中斷服務程序。CPU響應外部非屏蔽中斷NMI或各種內部中斷時的操作順序基本判斷與思考: 若在主程序中已使IF=1(開中),則在響應中斷請求并執行完中斷服務程序返回主程序后,IF 標志位是否為1決定于在中斷服務程序中是否執行了STI指令。判斷與思考:8.4.3 可編程中斷控制器8259A 8259A是一種典型的可編程中斷控制器。利用單片8259A能控制8級中斷,通過級聯方式最多可構成64級的中斷系統。 8259A能判斷一個中斷請求輸入信號是否有效,是否符合信號的電氣規定,是否被屏蔽,并能進行優先級的判決。CPU響應中斷后,8259A還能在中斷響應周期將被響應中斷的中斷類型碼送給CPU。 82

46、59A是一個設計十分成功的可編程中斷控制器。早在8位微處理器(如8080,8085)的年代就已經推出了,并被廣泛應用于80 x86系統中。8.4.3 可編程中斷控制器8259A 8259A是一種典型雖然在現代PC機主板上已經看不到單獨的8259A芯片,但實際上它已被集成到專門的芯片組之中。今天,8259A的結構及功能邏輯,仍然是人們學習可編程中斷控制器、熟悉和理解中斷響應和處理過程的典型結構和基本電路。 雖然在現代PC機主板上已經看不到單獨的8259A芯片,但實際8.4.4 中斷服務程序設計1. 中斷服務程序的一般結構中斷服務程序的一般結構如圖8.19所示。由該圖可見,在中斷服務程序的開始部分

47、,通常要安排幾條PUSH指令,把將要在中斷服務程序中用到的寄存器的內容壓入堆棧保存,以便在中斷服務結束時再從堆棧中彈出,恢復原先的內容,這通常稱為“保存現場”。8.4.4 中斷服務程序設計1. 中斷服務程序的一般結構 圖8.19 中斷服務程序的一般結構微機原理-第8章-IO接口技術由于進入中斷處理程序時IF已被清除,所以在執行中斷處理程序的過程中,將不再響應其他外部可屏蔽中斷請求。如果希望在當前這個中斷處理過程中能夠響應更高級的中斷請求,實現中斷嵌套,則需用STI指令把IF置1,重新開放中斷。接下來是中斷服務程序的主體部分,即中斷服務程序應完成的主要操作,這與實際的應用有關。如果它的任務是某種

48、出錯處理,一般要顯示輸出一系列信息。如果它是對一個I/O設備進行服務,就按I/O設備的端口地址輸入或輸出一個單位(字節或字)的數據。由于進入中斷處理程序時IF已被清除,所以在執行中斷處理程序的在中斷服務程序的末尾需恢復原來的程序環境,需用幾條POP指令(或一條POPA指令)從堆棧中彈出被保護寄存器的內容。這稱為“恢復現場”。中斷服務程序的最后一條指令必須是IRET指令。執行IRET指令將從堆棧中彈出舊的IP、CS以及標志寄存器FR的內容。這樣就恢復了原來的程序環境,程序將從被中斷的地點繼續執行。 在中斷服務程序的末尾需恢復原來的程序環境,需用幾條POP指令2. 在中斷向量表中置入中斷向量1)

49、用MOV指令直接進行傳送用MOV指令直接進行傳送即是利用MOV指令直接將中斷服務程序的入口地址送入中斷向量表的相應地址單元中。具體地說,就是將中斷服務程序入口地址的偏移量存放到物理地址為4N(N為中斷類型號)的字單元之中,將中斷服務程序入口地址的段基值存放到物理地址為4N+2的字單元中。如下列程序段所示:2. 在中斷向量表中置入中斷向量1) 用MOV指令直接進行傳MOV AX , 0 MOV ES , AX MOV BX , N*4 MOV AX , OFFSET INTHAND MOV ES:WORD PTRBX, AX ;置入中斷服務程序入口地 址的偏移量MOV AX , SEG INTH

50、AND MOV ES: WORD PTRBX+2, AX ;置入中斷服務程序入口地址的段基值 INTHAND: 中斷服務程序 IRETMOV AX , 0 2) 利用DOS功能調用法DOS功能調用(INT 21H)專門提供了在中斷向量表中存、取中斷向量的手段,功能號分別是25H和35H。 (1) 設置中斷向量(25H功能調用)25H功能調用把由AL指定的中斷類型的中斷向量(預置于DS:DX中)放入中斷向量表中。其基本使用方法為: 預置: AH =25H AL =中斷類型號 DS : DX =中斷向量 執行: INT 21H 2) 利用DOS功能調用法DOS功能調用(INT 21H)專例8.4

51、PUSH DS ;保存DSMOV AX , SEG INTHAND MOV DS , AX ;將中斷服務程序入口地址的段基值預置于DS中MOV DX , OFFSET INTHAND ;將中斷服務程序入口地址的偏移量預置于DX中MOV AL , N ;送中斷類型碼NMOV AH , 25H INT 21H ;在中斷向量表中設置中斷向量POP DS ;恢復DS執行上述程序段,即可把對應于中斷類型碼N的中斷向量置于中斷向量表之中。例8.4 (2) 取中斷向量(35H功能調用)35H功能調用把由AL指定中斷類型的中斷向量從中斷向量表中取到ES:BX中。其基本使用方法為: 預置: AH = 35H AL = 中斷類型號 執行: INT 21H 返回參數: ES:BX = 中斷向量 例如: MOV AL , N ;送中斷類型碼N

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論