《微型計算機原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷
《《微型計算機原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷》由會員分享,可在線閱讀,更多相關《《微型計算機原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷(143頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第7章 輸入/輸出與中斷 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.2 CPU與外設之間數(shù)據(jù)傳送的方式與外設之間數(shù)據(jù)傳送的方式 7.3 中斷技術中斷技術 7.4 8086/8088 中斷系統(tǒng)中斷系統(tǒng) 7.5 可編程中斷控制器可編程中斷控制器Intel 8259A 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.1.1 I/O接口的作用接口的作用 主機與外界交換信息稱為輸入/輸出(I/O)。主機與外界的信息交換是通過輸入/輸出設備進行的。一般的輸入/輸出設備都是機械的或機電相結合的產(chǎn)物,比如常規(guī)的外設有鍵盤、顯示器、打印機、掃描儀、磁盤機、鼠標器等,它們相對于高
2、速的中央處理器來說,速度要慢得多。此外,不同外設的信號形式、數(shù)據(jù)格式也各不相同。因此,外部設備不能與CPU直接相連,需要通過相應的電路來完成它們之間的速度匹配、信號轉換,并完成某些控制功能。通常把介于主機和外設之間的一種緩沖電路稱為I/O接口電路,簡稱I/O接口(Interface),如圖7.1所示。對于主機,I/O接口提供了外部設備的工作狀態(tài)及數(shù)據(jù);對于外部設備,I/O接口記憶了主機送給外設的一切命令和數(shù)據(jù),從而使主機與外設之間協(xié)調(diào)一致地工作。 第7章 輸入/輸出與中斷 圖7.1 主機與外設的連接CPUI/O接口外設第7章 輸入/輸出與中斷 對于微型計算機來說,設計微處理器CPU時,并不設計
3、它與外設之間的接口部分,而是將輸入/輸出設備的接口電路設計成相對獨立的部件,通過它們將各種類型的外設與CPU連接起來,從而構成完整的微型計算機硬件系統(tǒng)。 因此,一臺微型計算機的輸入/輸出系統(tǒng)應該包括I/O接口、I/O設備及相關的控制軟件。一個微機系統(tǒng)的綜合處理能力,系統(tǒng)的可靠性、兼容性、性價比,甚至在某個場合能否使用都和I/O系統(tǒng)有著密切的關系。輸入/輸出系統(tǒng)是計算機系統(tǒng)的重要組成部分之一,任何一臺高性能計算機,如果沒有高質(zhì)量的輸入/輸出系統(tǒng)與之配合工作,計算機的高性能便無法發(fā)揮出來。 第7章 輸入/輸出與中斷 7.1.2 CPU與外設交換的信息與外設交換的信息 主機與I/O設備之間交換的信息
4、可分為數(shù)據(jù)信息、狀態(tài)信息和控制信息三類。 1數(shù)據(jù)信息 數(shù)據(jù)信息又分為數(shù)字量、模擬量和開關量三種形式。 1) 數(shù)字量 數(shù)字量是計算機可以直接發(fā)送、接收和處理的數(shù)據(jù)。例如,由鍵盤、顯示器、打印機及磁盤等I/O外設與 CPU交換的信息,它們是以二進制形式表示的數(shù)或以ASCII碼表示的數(shù)符。 第7章 輸入/輸出與中斷 2) 模擬量 當計算機應用于控制系統(tǒng)中時,輸入的信息一般為來自現(xiàn)場的連續(xù)變化的物理量,如溫度、壓力、流量、位移、濕度等,這些物理量通過傳感器并經(jīng)放大處理得到模擬電壓或電流,這些模擬量必須先經(jīng)過模擬量向數(shù)字量的轉換(A/D轉換)后才能輸入計算機。反過來,計算機輸出的控制信號都是數(shù)字量,也必
5、須先經(jīng)過數(shù)字量向模擬量的轉換(D/A轉換),把數(shù)字量轉換成模擬量才能去控制現(xiàn)場。 第7章 輸入/輸出與中斷 3) 開關量 開關量可表示兩個狀態(tài),如開關的斷開和閉合,機器的運轉與停止,閥門的打開與關閉等。這些開關量通常要經(jīng)過相應的電平轉換才能與計算機連接。開關量只要用一位二進制數(shù)即可表示。 第7章 輸入/輸出與中斷 2. 狀態(tài)信息 狀態(tài)信息作為CPU與外設之間交換數(shù)據(jù)時的聯(lián)絡信息,反映了當前外設所處的工作狀態(tài),是外設通過接口送往CPU的。CPU通過對外設狀態(tài)信號的讀取,可得知輸入設備的數(shù)據(jù)是否準備好、輸出設備是否空閑等情況。對于輸入設備,一般用準備好(READY)信號的高低來表明待輸入的數(shù)據(jù)是否
6、準備就緒;對于輸出設備,則用忙(BUSY)信號的高低表示輸出設備是否處于空閑狀態(tài),如為空閑狀態(tài),則可接收CPU輸出的信息,否則CPU要暫停送數(shù)。因此,狀態(tài)信息能夠保障CPU與外設正確地進行數(shù)據(jù)交換。 第7章 輸入/輸出與中斷 3控制信息 控制信息是CPU通過接口傳送給外設的,CPU通過發(fā)送控制信息設置外設(包括接口)的工作模式、控制外設的工作。如外設的啟動信號和停止信號就是常見的控制信息。實際上,控制信息往往隨著外設的具體工作原理不同而含義不同。 雖然數(shù)據(jù)信息、狀態(tài)信息和控制信息含義各不相同,但在微型計算機系統(tǒng)中,CPU通過接口和外設交換信息時,只能用輸入指令(IN)和輸出指令 (OUT)傳送
7、數(shù)據(jù),所以狀態(tài)信息、控制信息也是被作為數(shù)據(jù)信息來傳送的,即把狀態(tài)信息作為一種輸入數(shù)據(jù),而把控制信息作為一種輸出數(shù)據(jù),這樣,狀態(tài)信息和控制信息也通過數(shù)據(jù)總線來傳送。但在接口中,這三種信息是在不同的寄存器中分別存放的。 第7章 輸入/輸出與中斷 7.1.3 I/O接口的基本結構接口的基本結構 I/O接口的基本結構如圖7.2所示。每個接口電路中都包含一組寄存器,CPU與外設進行信息交換時,各類信息在接口中存入不同的寄存器,一般稱這些寄存器為I/O端口,簡稱為口(Port)。用來保存CPU和外設之間傳送的數(shù)據(jù)(如數(shù)字、字符及某種特定的編碼等)、對輸入/輸出數(shù)據(jù)起緩沖作用的數(shù)據(jù)寄存器稱為數(shù)據(jù)端口;用來存
8、放外設或者接口部件本身狀態(tài)的狀態(tài)寄存器稱為狀態(tài)端口;用來存放CPU發(fā)往外設的控制命令的控制寄存器稱為控制端口。 第7章 輸入/輸出與中斷 CBABDBCPU數(shù)據(jù)端口狀態(tài)端口I/O設備譯碼控制端口圖7.2 一個典型的I/O接口 第7章 輸入/輸出與中斷 正如每個存儲單元都有一個物理地址一樣,每個端口也有一個地址與之相對應,該地址稱為端口地址。有了端口地址,CPU對外設的輸入/輸出操作實際上就是對I/O接口中各端口的讀/寫操作。數(shù)據(jù)端口一般是雙向的,數(shù)據(jù)是輸入還是輸出,取決于對該端口地址進行操作時CPU發(fā)往接口電路的讀/寫控制信號。由于狀態(tài)端口只做輸入操作,控制端口只做輸出操作,因此,有時為了節(jié)省
9、系統(tǒng)地址空間,在設計接口時往往將這兩個端口共用一個端口地址,再用讀/寫信號來分別選擇訪問。 應該指出,輸入/輸出操作所用到的地址總是對端口而言,而不是對接口而言的。接口和端口是兩個不同的概念,若干個端口加上相應的控制電路才構成接口。 第7章 輸入/輸出與中斷 7.1.4 I/O端口的編址端口的編址 微型計算機系統(tǒng)中I/O端口編址方式有兩種:I/O端口與內(nèi)存單元統(tǒng)一編址和 I/O端口與內(nèi)存單元獨立編址。 1I/O端口與內(nèi)存單元統(tǒng)一編址 這種編址方式是對I/O端口和存儲單元按照存儲單元的編址方法統(tǒng)一編排地址號,由I/O端口地址和存儲單元地址共同構成一個統(tǒng)一的地址空間。例如,對于一個有16根地址線的
10、微機系統(tǒng),若采用統(tǒng)一編址方式,其地址空間的結構如圖7.3所示。 第7章 輸入/輸出與中斷 圖7.3 I/O端口與內(nèi)存單元統(tǒng)一編址存儲器I/O端口0000HXXXXHFFFFH整個地址空間(XXXX+1)HI/O端口第7章 輸入/輸出與中斷 采用統(tǒng)一編址方式后,CPU對I/O端口的輸入/輸出操作如同對存儲單元的讀/寫操作一樣,所有訪問內(nèi)存的指令同樣都可用于訪問I/O端口,因此無需專門的I/O指令,從而簡化了指令系統(tǒng)的設計;同時,對存儲器的各種尋址方式也同樣適用于對I/O端口的訪問,給使用者提供了很大的方便。但由于I/O端口占用了一部分存儲器地址空間,因而相對減少了內(nèi)存的地址可用范圍。 第7章 輸
11、入/輸出與中斷 2I/O端口與內(nèi)存單元獨立編址 在這種編址方式中,建立了兩個地址空間,一個為內(nèi)存地址空間,一個為I/O地址空間。內(nèi)存地址空間和I/O地址空間是相對獨立的,通過控制總線來確定CPU到底要訪問內(nèi)存還是I/O端口。為確保控制總線發(fā)出正確的信號,除了要有訪問內(nèi)存的指令之外,系統(tǒng)還要提供用于CPU與I/O端口之間進行數(shù)據(jù)傳輸?shù)妮斎?輸出指令。 第7章 輸入/輸出與中斷 80 x86 CPU組成的微機系統(tǒng)都采用獨立編址方式。在8086/8088系統(tǒng)中,共有20根地址線對內(nèi)存尋址,內(nèi)存的地址范圍是00000HFFFFFH;用地址總線的低16位對I/O端口尋址,所以I/O端口的地址范圍是000
12、0HFFFFH,如圖7.4所示。CPU在訪問內(nèi)存和外設時,使用了不同的控制信號來加以區(qū)分。例如,當8086 CPU的M/IO信號為1時,表示地址總線上的地址是一個內(nèi)存地址;為0時,則表示地址總線上的地址是一個端口地址。 第7章 輸入/輸出與中斷 00000HFFFFFH存儲器I/OFFFFH0000H圖7.4 I/O端口與內(nèi)存單元獨立編址 第7章 輸入/輸出與中斷 采用獨立編址方式后,存儲器地址空間不受I/O端口地址空間的影響,專用的輸入/輸出指令與訪問存儲器指令有明顯區(qū)別,便于理解和檢查。但是,專用I/O指令增加了指令系統(tǒng)復雜性,且I/O指令類型少,程序設計靈活性較差;此外,還要求CPU提供
13、專門的控制信號以區(qū)分對存儲器和I/O端口的操作,增加了控制邏輯的復雜性。 第7章 輸入/輸出與中斷 3I/O端口的地址譯碼 微機系統(tǒng)常用的I/O接口電路一般都被設計成通用的I/O接口芯片,一個接口芯片內(nèi)部可以有若干可尋址的端口。因此,所有接口芯片都有片選信號線和用于片內(nèi)端口尋址的地址線。例如,某接口芯片內(nèi)有四個端口地址,則該芯片外就會有兩根地址線。本書第8章中將詳細介紹幾種常用的I/O接口芯片。 第7章 輸入/輸出與中斷 I/O端口地址譯碼的方法有多種,一般的原則是把CPU用于I/O端口尋址的地址線分為高位地址線和低位地址線兩部分,將低位地址線直接連到I/O接口芯片的相應地址引腳,實現(xiàn)片內(nèi)尋址
14、,即選中片內(nèi)的端口;將高位地址線與CPU的控制信號組合,經(jīng)地址譯碼電路產(chǎn)生I/O接口芯片的片選信號。 第7章 輸入/輸出與中斷 7.2 CPU與外設之間數(shù)據(jù)傳送的方式與外設之間數(shù)據(jù)傳送的方式 7.2.1 程序傳送方式程序傳送方式 1無條件傳送方式無條件傳送方式 微機系統(tǒng)中的一些簡單的外設,如開關、繼電器、數(shù)碼管、發(fā)光二極管等,在它們工作時,可以認為輸入設備已隨時準備好向CPU提供數(shù)據(jù),而輸出設備也隨時準備好接收CPU送來的數(shù)據(jù),這樣,在CPU需要同外設交換信息時,就能夠用IN或OUT指令直接對這些外設進行輸入/輸出操作。由于在這種方式下CPU對外設進行輸入/輸出操作時無需考慮外設的狀態(tài),故稱之
15、為無條件傳送方式。 第7章 輸入/輸出與中斷 對于簡單外設,若采用無條件傳送方式,其接口電路也很簡單。如簡單外設作為輸入設備時,輸入數(shù)據(jù)保持時間相對于CPU的處理時間要長得多,所以可直接使用三態(tài)緩沖器和數(shù)據(jù)總線相連,如圖7.5(a)所示。當執(zhí)行輸入的指令時,讀信號有效,選擇信號M/處于低電平,因而三態(tài)緩沖器被選通,使其中早已準備好的輸入數(shù)據(jù)送到數(shù)據(jù)總線上,再到達CPU。所以要求CPU在執(zhí)行輸入指令時,外設的數(shù)據(jù)是準備好的,即數(shù)據(jù)已經(jīng)存入三態(tài)緩沖器中。 第7章 輸入/輸出與中斷 (b)至外設數(shù)據(jù)總線(DB)地址總線(AB)鎖存器來自CPU的數(shù)據(jù)地址譯碼器WRIOM/(a)來自外設的數(shù)據(jù)數(shù)據(jù)總線(
16、DB)地址譯碼器地址總線(AB)1三態(tài)緩沖器至CPURDIOM/1圖7.5 無條件傳送方式(a) 無條件傳送數(shù)據(jù)輸入;(b) 無條件傳送數(shù)據(jù)輸出 第7章 輸入/輸出與中斷 簡單外設為輸出設備時,由于外設取數(shù)的速度比較慢,要求CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時間,因而一般都需要鎖存器,如圖7.5(b)所示。CPU執(zhí)行輸出指令時,M/IO和WR信號有效,于是,接口中的輸出鎖存器被選中,CPU輸出的信息經(jīng)過數(shù)據(jù)總線送入輸出鎖存器中,輸出鎖存器保持這個數(shù)據(jù),直到外設取走。 無條件傳送方式下,程序設計和接口電路都很簡單,但是為了保證每一次數(shù)據(jù)傳送時外設都能處于就緒狀態(tài),傳送不能太頻繁。對少量的
17、數(shù)據(jù)傳送來說,無條件傳送方式是最經(jīng)濟實用的一種傳送方法。 第7章 輸入/輸出與中斷 2查詢傳送方式查詢傳送方式 查詢傳送也稱為條件傳送,是指在執(zhí)行輸入指令(IN)或輸出指令(OUT)前,要先查詢相應設備的狀態(tài),當輸入設備處于準備好狀態(tài),輸出設備處于空閑狀態(tài)時,CPU才執(zhí)行輸入/輸出指令與外設交換信息。為此,接口電路中既要有數(shù)據(jù)端口,還要有狀態(tài)端口。 查詢傳送方式的流程圖見圖7.6。從圖中可以看出,采用查詢方式完成一次數(shù)據(jù)傳送要經(jīng)歷如下過程: (1) CPU從接口中讀取狀態(tài)字。 (2) CPU檢測相應的狀態(tài)位是否滿足“就緒”條件。 (3) 如果不滿足,則重復(1)、(2)步;若外設已處于“就緒”
18、狀態(tài),則傳送數(shù)據(jù)。 第7章 輸入/輸出與中斷 圖7.6 查詢傳送方式的流程圖NYY取外設狀態(tài)外設準備就緒?N開始傳送數(shù)據(jù)傳送完否?結束第7章 輸入/輸出與中斷 圖7.7給出的是采用查詢傳送方式進行輸入操作的接口電路。輸入設備在數(shù)據(jù)準備好之后向接口發(fā)選通信號,此信號有兩個作用:一方面將外設中的數(shù)據(jù)送到接口的鎖存器中;另一方面使接口中的一個D觸發(fā)器輸出“1”,從而使三態(tài)緩沖器的READY位置“1”。CPU輸入數(shù)據(jù)前先用輸入指令讀取狀態(tài)字,測試READY位,若READY位為“1”,說明數(shù)據(jù)已準備就緒,再執(zhí)行輸入指令讀入數(shù)據(jù)。由于在讀入數(shù)據(jù)時信號已將狀態(tài)位READY清0,于是可以開始下一個數(shù)據(jù)輸入過程
19、。 第7章 輸入/輸出與中斷 選通狀態(tài)信息READY數(shù)據(jù)總線DB至CPU地址譯碼器&5 V鎖存器數(shù)據(jù)緩沖器三態(tài)緩沖器Q D輸入設備數(shù)據(jù)狀態(tài)端口譯碼輸出數(shù)據(jù)端口譯碼輸出RRD&IO/MRD地址總線AB圖7.7 查詢式輸入的接口電路 第7章 輸入/輸出與中斷 圖7.8給出的是采用查詢傳送方式進行輸出操作的接口電路。CPU輸出數(shù)據(jù)時,先用輸入指令讀取接口中的狀態(tài)字,測試BUSY位,若BUSY位為0,表明外設空閑,此時CPU才執(zhí)行輸出指令,否則CPU必須等待。執(zhí)行輸出指令時由端口選擇信號、M/IO信號和寫信號共同產(chǎn)生的選通信號將數(shù)據(jù)總線上的數(shù)據(jù)打入接口中的數(shù)據(jù)鎖存器,同時將D觸發(fā)器置1。D觸發(fā)器的輸出
20、信號一方面為外設提供一個聯(lián)絡信號,通知外設將鎖存器鎖存的數(shù)據(jù)取走;另一方面使狀態(tài)寄存器的BUSY位置1,告訴CPU當前外設處于忙狀態(tài),從而阻止CPU輸出新的數(shù)據(jù)。輸出設備從接口中取走數(shù)據(jù)后,會送一個回答信號ACK,該信號使接口中的D觸發(fā)器置0,從而使狀態(tài)寄存器中的BUSY位清0,以便開始下一個數(shù)據(jù)輸出過程。 第7章 輸入/輸出與中斷 去CPUDB輸出設備&數(shù)據(jù)地址譯碼器數(shù)據(jù)端口譯碼輸出地址總線DB狀態(tài)端口譯碼輸出狀態(tài)寄存器BUSY5 V鎖存器QD數(shù)據(jù)總線DB來自CPU選通信號ACKWRIO/MR&RDIO/M圖7.8 查詢式輸出的接口電路 第7章 輸入/輸出與中斷 查詢傳送方式的主要優(yōu)點是能保
21、證主機與外設之間協(xié)調(diào)同步地工作,且硬件線路比較簡單,程序也容易實現(xiàn)。但是,在這種方式下,CPU花費了很多時間查詢外設是否準備就緒,在這些時間里CPU不能進行其他的操作;此外,在實時控制系統(tǒng)中,若采用查詢傳送方式,由于一個外設的輸入/輸出操作未處理完畢就不能處理下一個外設的輸入/輸出,故不能達到實時處理的要求。因此,查詢傳送方式有兩個突出的缺點:浪費CPU時間,實時性差。所以,查詢傳送方式適用于數(shù)據(jù)輸入/輸出不太頻繁且外設較少、對實時性要求不高的情況。 不論是無條件傳送方式還是查詢傳送方式,都不能發(fā)現(xiàn)和處理預先無法估計的錯誤和異常情況。為了提高CPU的效率、增強系統(tǒng)的實時性,并且能對隨機出現(xiàn)的各
22、種異常情況做出及時反應,通常采用中斷傳送方式。 第7章 輸入/輸出與中斷 7.2.2 中斷傳送方式中斷傳送方式 中斷傳送方式是指當外設需要與CPU進行信息交換時,由外設向CPU發(fā)出請求信號,使CPU暫停正在執(zhí)行的程序,轉去執(zhí)行數(shù)據(jù)的輸入/輸出操作,數(shù)據(jù)傳送結束后,CPU再繼續(xù)執(zhí)行被暫停的程序。 查詢傳送方式是由CPU來查詢外設的狀態(tài),CPU處于主動地位,而外設處于被動地位。中斷傳送方式則是由外設主動向CPU發(fā)出請求,等候CPU處理,在沒有發(fā)出請求時,CPU和外設都可以獨立進行各自的工作。目前的微處理器都具有中斷功能,而且已經(jīng)不僅僅局限于數(shù)據(jù)的輸入/輸出,而是在更多的方面有重要的應用。例如實時控
23、制、故障處理以及BIOS和DOS功能調(diào)用等。第7章 輸入/輸出與中斷 中斷傳送方式的優(yōu)點是:CPU不必查詢等待,工作效率高,CPU與外設可以并行工作;由于外設具有申請中斷的主動權,故系統(tǒng)實時性比查詢方式要好得多。但采用中斷傳送方式的接口電路相對復雜,而且每進行一次數(shù)據(jù)傳送就要中斷一次CPU,CPU每次響應中斷后,都要轉去執(zhí)行中斷處理程序,且都要進行斷點和現(xiàn)場的保護和恢復,浪費了很多CPU的時間。故這種傳送方式一般適合于少量的數(shù)據(jù)傳送。對于大批量數(shù)據(jù)的輸入/輸出,可采用高速的直接存儲器存取方式,即DMA方式。 第7章 輸入/輸出與中斷 7.2.3 直接存儲器存取直接存儲器存取(DMA)傳送方式傳
24、送方式 1DMA傳送方式簡介傳送方式簡介 DMA傳送方式是在存儲器和外設之間、存儲器和存儲器之間直接進行數(shù)據(jù)傳送(如磁盤與內(nèi)存間交換數(shù)據(jù)、高速數(shù)據(jù)采集、內(nèi)存和內(nèi)存間的高速數(shù)據(jù)塊傳送等),傳送過程無需CPU介入,這樣,在傳送時就不必進行保護現(xiàn)場等一系列額外操作,傳輸速度基本取決于存儲器和外設的速度。DMA傳送方式需要一個專用接口芯片DMA控制器(DMAC)對傳送過程加以控制和管理。在進行DMA傳送期間,CPU放棄總線控制權,將系統(tǒng)總線交由DMAC控制,由DMAC發(fā)出地址及讀/寫信號來實現(xiàn)高速數(shù)據(jù)傳輸。傳送結束后DMAC再將總線控制權交還給CPU。一般微處理器都設有用于DMA傳送的聯(lián)絡線。 第7章
25、 輸入/輸出與中斷 控制/狀態(tài)DMA響應數(shù)據(jù)READYDMA請求HLDAHOLDDMA控制器數(shù)據(jù)端口控制/狀態(tài)端口地址寄存器CPUDMA請求觸發(fā)器數(shù)據(jù)緩沖輸入設備數(shù)據(jù)計數(shù)器存儲器圖7.9 DMA系統(tǒng)結構框圖 第7章 輸入/輸出與中斷 2DMA控制器的工作方式 1) 單字節(jié)傳輸方式 在該方式下,DMAC每次控制總線后只傳輸一個字節(jié),傳輸完后即釋放總線控制權。這樣CPU至少可以得到一個總線周期,并進行有關操作。 2) 成組傳輸方式(塊傳輸方式) 第7章 輸入/輸出與中斷 3) 請求傳輸方式 在該方式下,每傳輸完一個字節(jié),DMAC都要檢測I/O接口發(fā)來的DMA請求信號是否有效。若有效,則繼續(xù)進行DM
26、A傳輸;否則就暫停傳輸,將總線控制權交還給CPU,直至DMA請求信號再次變?yōu)橛行В購膭偛艜和5哪且稽c繼續(xù)傳輸。 第7章 輸入/輸出與中斷 3DMA操作的基本過程 1) DMAC的初始化 DMAC的初始化主要做如下幾方面工作: (1) 指定數(shù)據(jù)的傳送方向。即指定外設對存儲器是做讀操作還是寫操作,這就要對控制/狀態(tài)寄存器中的相應控制位置數(shù)。 (2) 指定地址寄存器的初值。即給出存儲器中用于DMA傳送的數(shù)據(jù)區(qū)的首地址。 (3) 指定計數(shù)器的初值。即明確有多少數(shù)據(jù)需要傳送。 第7章 輸入/輸出與中斷 2) DMA數(shù)據(jù)傳送 DMA數(shù)據(jù)傳送(以數(shù)據(jù)輸入為例)按以下步驟進行: (1) 外圍設備發(fā)選通脈沖,
27、把輸入數(shù)據(jù)送入緩沖寄存器,并使DMA請求觸發(fā)器置1。 (2) DMA請求觸發(fā)器向控制/狀態(tài)端口發(fā)準備就緒信號,同時向DMA控制器發(fā)DMA請求信號。 (3) DMA控制器向CPU發(fā)出總線請求信號(HOLD)。 第7章 輸入/輸出與中斷 (4) CPU在完成了現(xiàn)行機器周期后,即響應DMA請求,發(fā)出總線允許信號(HLDA),并由DMA控制器發(fā)出DMA響應信號,使DMA請求觸發(fā)器復位。此時,由DMA控制器接管系統(tǒng)總線。 (5) DMA控制器發(fā)出存儲器地址,并在數(shù)據(jù)總線上給出數(shù)據(jù),隨后在讀/寫控制信號線上發(fā)出寫的命令。 (6) 來自外設的數(shù)據(jù)被寫入相應存儲單元。 (7) 每傳送一個字節(jié),DMA控制器的地
28、址寄存器加1,從而得到下一個地址,字節(jié)計數(shù)器減1。返回(5),傳送下一個數(shù)據(jù)。如此循環(huán),直到計數(shù)器的值為0,數(shù)據(jù)傳送完畢。 第7章 輸入/輸出與中斷 3) DMA結束 DMA傳送完畢,由DMAC撤消總線請求信號,從而結束DMA操作。CPU撤消總線允許信號,恢復對總線的控制。 前面介紹的三種傳送方式各有利弊,在實際使用時,要根據(jù)具體情況選擇既能滿足要求,又盡可能簡單的方式。 第7章 輸入/輸出與中斷 7.3 中中 斷斷 技技 術術 7.3.1 中斷的基本概念中斷的基本概念 1中斷的定義 在CPU執(zhí)行程序的過程中,出現(xiàn)了某種緊急或異常的事件(中斷請求),CPU需暫停正在執(zhí)行的程序,轉去處理該事件(
29、執(zhí)行中斷服務程序),并在處理完畢后返回斷點處繼續(xù)執(zhí)行被暫停的程序,這一過程稱為中斷。斷點處是指返回主程序時執(zhí)行的第一條指令的地址。中斷過程如圖7.10所示。為實現(xiàn)中斷功能而設置的硬件電路和與之相應的軟件,稱為中斷系統(tǒng)。 第7章 輸入/輸出與中斷 圖7.10 中斷過程示意圖繼續(xù)執(zhí)行斷點主程序中斷服務程序有中斷請求中斷處理返回斷點第7章 輸入/輸出與中斷 2中中斷源斷源 任何能夠引發(fā)中斷的事件都稱為中斷源,可分為硬件中斷源和軟件中斷源兩類。硬件中斷源主要包括外設(如鍵盤、打印機等)、數(shù)據(jù)通道(如磁盤機、磁帶機等)、時鐘電路(如定時計數(shù)器8253)和故障源(如電源掉電)等;軟件中斷源主要包括為調(diào)試程
30、序設置的中斷(如斷點、單步執(zhí)行等)、中斷指令(如INT 21H等)以及指令執(zhí)行過程出錯(如除法運算時除數(shù)為零)等。 第7章 輸入/輸出與中斷 3中斷處理過程中斷處理過程 對于一個中斷源的中斷處理過程應包括以下幾個步驟,即中斷請求、中斷響應、保護斷點、中斷處理和中斷返回。 1) 中斷請求 中斷請求是中斷源向CPU發(fā)出的請求中斷的要求。軟件中斷源是在CPU內(nèi)部由中斷指令或程序出錯直接引發(fā)中斷;而硬件中斷源必須通過專門的電路將中斷請求信號傳送給CPU,CPU也有專門的引腳接收中斷請求信號。例如,8086/8088 CPU用INTR引腳(可屏蔽中斷請求)和NMI引腳(非屏蔽中斷請求)接收硬件中斷請求信
31、號。一般外設發(fā)出的都是可屏蔽中斷請求。 第7章 輸入/輸出與中斷 &輸入鎖存器數(shù)據(jù)總線中斷請求D端口譯碼地址總線Q中斷屏蔽INT5 V輸入設備三態(tài)緩沖器Q&RD圖7.11 中斷請求與屏蔽接口電路 第7章 輸入/輸出與中斷 當外設準備好一個數(shù)據(jù)時,便發(fā)出選通信號,該信號一方面把數(shù)據(jù)存入接口的鎖存器中,另一方面使中斷請求觸發(fā)器置1。此時,如果中斷屏蔽觸發(fā)器Q端的狀態(tài)為1,則產(chǎn)生了一個發(fā)往CPU的中斷請求信號INT。中斷屏蔽觸發(fā)器的狀態(tài)決定了系統(tǒng)是否允許該接口發(fā)出中斷請求。可見,要想產(chǎn)生一個中斷請求信號,需滿足兩個條件:一是要由外設將接口中的中斷請求觸發(fā)器置1,二是要由CPU將接口中的中斷屏蔽觸發(fā)器
32、Q端置1。 第7章 輸入/輸出與中斷 2) 中斷響應 CPU在每條指令執(zhí)行的最后一個時鐘周期檢測其中斷請求輸入端,判斷有無中斷請求,若CPU接收到了中斷請求信號,且此時CPU內(nèi)部的中斷允許觸發(fā)器的狀態(tài)為1,則CPU在現(xiàn)行指令執(zhí)行完后,發(fā)出INTA信號響應中斷。從圖7.11中可以看到,一旦進入中斷處理,立即清除中斷請求信號。這樣可以避免一個中斷請求被CPU多次響應。 圖7.12給出了CPU內(nèi)部產(chǎn)生中斷響應信號的邏輯電路。對于8086/8088 CPU可以用開中斷(STI)或關中斷(CLI)指令來改變中斷允許觸發(fā)器(即IF標志位)的狀態(tài)。 第7章 輸入/輸出與中斷 &R1允許中斷開中斷指令關中斷指
33、令CPUCPU響應中斷信號INTRRESETSQ圖7.12 CPU內(nèi)部設置中斷允許觸發(fā)器 第7章 輸入/輸出與中斷 3) 保護斷點 CPU一旦響應中斷,需要對其正在執(zhí)行程序的斷點信息進行保護,以便在中斷處理結束后仍能回到該斷點處繼續(xù)執(zhí)行。對于8086/8088 CPU,保護斷點的過程由硬件自動完成,主要工作是關中斷、將標志寄存器內(nèi)容入棧保存以及將CS和IP內(nèi)容入棧保存。 第7章 輸入/輸出與中斷 4) 中斷處理 中斷處理的過程實際就是CPU執(zhí)行中斷服務程序的過程。用戶編寫的用于CPU為中斷源進行中斷處理的程序稱為中斷服務程序。由于不同中斷源在系統(tǒng)中的作用不同,所要完成的功能不同,因此,不同中斷
34、源的中斷服務程序內(nèi)容也各不相同。例如,對于圖7.11所示的輸入設備,其中斷服務程序的主要任務是用輸入指令(IN)從接口中的數(shù)據(jù)端口向CPU輸入數(shù)據(jù)。 第7章 輸入/輸出與中斷 另外,主程序中有些寄存器的內(nèi)容在中斷前后需保持一致,不能因中斷而發(fā)生變化,但在中斷服務程序中又用到了這些寄存器,為了保證在返回主程序后仍能從斷點處繼續(xù)正確執(zhí)行,還需要在中斷服務程序的開頭對這些寄存器內(nèi)容進行保護(即保護現(xiàn)場),在中斷服務程序的末尾恢復這些寄存器的內(nèi)容(即恢復現(xiàn)場)。保護現(xiàn)場和恢復現(xiàn)場一般用PUSH和POP指令實現(xiàn),所以要特別注意寄存器內(nèi)容入棧和出棧的次序。 第7章 輸入/輸出與中斷 5) 中斷返回 執(zhí)行完
35、中斷服務程序,返回到原先被中斷的程序,此過程稱為中斷返回。為了能正確返回到原來程序的斷點處,在中斷服務程序的最后應專門放置一條中斷返回指令(如8086/8088的IRET指令)。中斷返回指令的作用實際上是恢復斷點,也就是保護斷點的逆過程。 第7章 輸入/輸出與中斷 7.3.2 中斷優(yōu)先級和中斷的嵌套中斷優(yōu)先級和中斷的嵌套 1中斷優(yōu)先級 中斷請求是隨機發(fā)生的,當系統(tǒng)具有多個中斷源時,有時會同時出現(xiàn)多個中斷請求,CPU只能按一定的次序予以響應和處理,這個響應的次序稱為中斷優(yōu)先級。對于不同級別的中斷請求,一般的處理原則是: (1) 不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級由高到低依次處理。
36、第7章 輸入/輸出與中斷 (2) 低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應轉去處理高優(yōu)先級請求,服務結束后再返回原優(yōu)先級較低的中斷服務程序繼續(xù)執(zhí)行。 (3) 高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應。 (4) 中斷處理時,出現(xiàn)同級別請求,應在當前中斷處理結束以后再處理新的請求。 第7章 輸入/輸出與中斷 2中斷優(yōu)先級的確定 在微機系統(tǒng)中通常用三種方法來確定中斷源的優(yōu)先級別,即軟件查詢法、硬件排隊電路法和專用中斷控制芯片法。本節(jié)簡要介紹前兩種方法,第三種方法將在本章的最后一節(jié)作詳細介紹。 1) 軟件查詢法 軟件查詢法需要簡單的硬件電路支持。以8個中斷源為例,其硬件電路如圖7.13所示
37、,將8個外設的中斷請求組合起來作為一個端口(中斷寄存器),并將各個外設的中斷請求信號相或,產(chǎn)生一個總的INT信號。 第7章 輸入/輸出與中斷 任一個外設有中斷請求,該電路都可向CPU發(fā)中斷請求信號(INT),CPU響應后進入中斷處理程序,在中斷處理程序的開始先把中斷寄存器的內(nèi)容讀入CPU,再對寄存器內(nèi)容進行逐位查詢,查到某位狀態(tài)為1,表示與該位相連的外設有中斷請求,于是轉到與其相應的中斷服務程序,同時該外設撤消其中斷請求信號。軟件查詢方式的流程圖如圖7.14所示。 第7章 輸入/輸出與中斷 1CPUD7INTRINT 1中斷寄存器INTD0INT 2INT 8圖7.13 軟件查詢法的硬件電路
38、第7章 輸入/輸出與中斷 對1號中斷源服務NNNYYY斷點保護INT 1?INT 2?對2號中斷源服務對n號中斷源服務INT n?圖7.14 軟件查詢方式的流程圖 第7章 輸入/輸出與中斷 對于圖7.13所示電路,設中斷寄存器端口號為n,則軟件查詢的程序段如下: IN AL,n TEST AL,80H ;1號外設有請求? JNZ II1;有,轉1號中斷服務程序 TEST AL,40H ;2號外設有請求? JNZ II2 ;有,轉2號中斷服務程序第7章 輸入/輸出與中斷 可以看出,采用軟件查詢方式,各中斷源的優(yōu)先級是由查詢順序決定的,最先查詢的設備,其優(yōu)先級最高,最后查詢的設備,其優(yōu)先級最低。采
39、用軟件查詢方式的優(yōu)點是節(jié)省硬件。但是,由于CPU每次響應中斷時都要對各中斷源進行逐一查詢,所以其響應速度較慢。對于優(yōu)先級較低的中斷源來說,該缺點更為明顯。 第7章 輸入/輸出與中斷 2) 硬件排隊電路硬件排隊電路 采用硬件排隊電路法,各個外設的優(yōu)先級與其接口在排隊電路中的位置有關。常用的硬件優(yōu)先權排隊電路有鏈式優(yōu)先權排隊電路、硬件優(yōu)先級編碼加比較器的排隊電路等。圖7.15給出了一個鏈式優(yōu)先級排隊電路。 第7章 輸入/輸出與中斷 圖7.15中,當響應信號沿鏈式電路進行傳遞時,最靠近CPU并發(fā)出中斷請求的接口將首先攔截住響應信號,CPU進入相應外設的中斷處理程序,在服務完成后,該外設撤消其中斷請求
40、,解除對下一級外設的封鎖。例如,當CPU收到中斷請求信號并響應中斷時,若1號外設有中斷請求(高電平),則立即向1號外設接口發(fā)出應答信號,同時封鎖2號、3號等外設的中斷請求,轉去對1號外設服務;若1號外設沒有中斷請求,而2號外設有中斷請求時,響應信號便傳遞給2號外設,向2號外設接口發(fā)出應答信號,同時封鎖3號外設的中斷請求;若CPU在為2號外設進行中斷服務時1號外設發(fā)出了中斷請求,CPU會掛起對2號外設的服務轉去對1號外設服務,1號外設處理結束后,再繼續(xù)為2號外設服務??梢钥闯?,鏈式優(yōu)先級排隊電路不僅能夠確定各中斷源的優(yōu)先級,而且在相應軟件的配合下,可實現(xiàn)高級別的請求中斷低級別的服務(即中斷的嵌套
41、)。 第7章 輸入/輸出與中斷 響應3#中斷請求“ 1”應答2#應答3#應答1#1#中斷請求2#中斷請求&INT&圖7.15 鏈式中斷優(yōu)先級電路 第7章 輸入/輸出與中斷 上述兩種方法雖然可以解決中斷優(yōu)先級控制問題,但實現(xiàn)起來在硬件和軟件上都要做大量的工作,十分麻煩。目前,最方便的辦法就是利用廠家提供的可編程中斷控制器,這樣的器件在各種微機中得到普遍應用。本章后面將介紹廣泛應用于80 x86微機系統(tǒng)中的專用可編程中斷控制芯片8259A。 第7章 輸入/輸出與中斷 3中斷嵌套中斷嵌套 CPU在執(zhí)行低級別中斷服務程序時,又收到較高級別的中斷請求,CPU暫停執(zhí)行低級別中斷服務程序,轉去處理這個高級別
42、的中斷,處理完后再返回低級別中斷服務程序,這個過程稱為中斷嵌套,如圖7.16所示。 高級中斷請求低級中斷請求STISTI主程序低級中斷服務程序高級中斷服務程序圖7.16 中斷嵌套示意圖 第7章 輸入/輸出與中斷 一般CPU響應中斷請求后,在進入中斷服務程序前,硬件會自動實現(xiàn)關中斷,這樣,CPU在執(zhí)行中斷服務程序時將不能再響應其他中斷請求。為了實現(xiàn)中斷嵌套,應在低級別中斷服務程序的開始處加一條開中斷指令STI。能夠?qū)崿F(xiàn)中斷嵌套的中斷系統(tǒng),其軟、硬件設計都非常復雜,如果采用了可編程中斷控制器,就會方便很多。 第7章 輸入/輸出與中斷 7.4 8086/8088中斷系統(tǒng)中斷系統(tǒng) 7.4.1 8086
43、/8088的中斷源類型的中斷源類型 8086/8088 CPU可以處理256種不同類型的中斷,每一種中斷都給定一個編號(0255),稱為中斷類型號,CPU根據(jù)中斷類型號來識別不同的中斷源。8086/8088的中斷源如圖7.17所示。從圖中可以看出8086/8088的中斷源可分為兩大類:一類來自CPU的外部,由外設的請求引起,稱為硬件中斷(又稱外部中斷);另一類來自CPU的內(nèi)部,由執(zhí)行指令時引起,稱為軟件中斷(又稱內(nèi)部中斷)。 第7章 輸入/輸出與中斷 NMI(17號引腳)中 斷 邏 輯非屏蔽中斷請求INT 2硬件(外部)中斷軟件(內(nèi)部)中斷可屏蔽中斷請求中斷類型號32255INTR(18號引腳
44、)中斷指令INT nN32255溢出中斷INTOINT 4斷點中斷INT 3單步中斷(TF1)INT 1除法錯誤INT 0圖7.17 8086/8088中斷源 第7章 輸入/輸出與中斷 1軟件中斷軟件中斷(內(nèi)部中斷內(nèi)部中斷) 8086/8088的軟件中斷主要有五種,分為三類。 1) 處理運算過程中某些錯誤的中斷處理運算過程中某些錯誤的中斷 執(zhí)行程序時,為及時處理運算中的某些錯誤,CPU以中斷方式中止正在運行的程序,提醒程序員改錯。 (1) 除法錯中斷(中斷類型號為0)。在8086/8088 CPU執(zhí)行除法指令(DIV/IDIV)時,若發(fā)現(xiàn)除數(shù)為0,或所得的商超過了CPU中有關寄存器所能表示的最
45、大值,則立即產(chǎn)生一個類型號為0的內(nèi)部中斷,CPU轉去執(zhí)行除法錯中斷處理程序。 第7章 輸入/輸出與中斷 (2) 溢出中斷INTO(中斷類型號為4)。CPU進行帶符號數(shù)的算術運算時,若發(fā)生了溢出,則標志位OF=1,若此時執(zhí)行INTO指令,會產(chǎn)生溢出中斷,打印出一個錯誤信息,結束時不返回,而把控制權交給操作系統(tǒng)。若OF=0,則INTO不產(chǎn)生中斷,CPU繼續(xù)執(zhí)行下一條指令。INTO指令通常安排在算術指令之后,以便在溢出時能及時處理。例如: ADD AX,BXINTO;測試加法的溢出 第7章 輸入/輸出與中斷 2) 為調(diào)試程序設置的中斷 (1) 單步中斷(中斷類型號為1)。當TF=1時,每執(zhí)行一條指令
46、,CPU會自動產(chǎn)生一個單步中斷。單步中斷可一條一條指令地跟蹤程序流程,觀察各個寄存器及存儲單元內(nèi)容的變化,幫助分析錯誤原因。單步中斷又稱為陷阱中斷,主要用于程序調(diào)試。 (2) 斷點中斷(中斷類型號為3)。調(diào)試程序時可以在一些關鍵性的地方設置斷點,它相當于把一條INT 3 指令插入到程序中,CPU每執(zhí)行到斷點處,INT 3 指令便產(chǎn)生一個中斷,使CPU轉向相應的中斷服務程序。 第7章 輸入/輸出與中斷 3) 中斷指令INT n引起的中斷(中斷類型號為n) 程序設計時,可以用INT n指令來產(chǎn)生軟件中斷,中斷指令的操作數(shù)n給出了中斷類型號,CPU執(zhí)行INT n指令后,會立即產(chǎn)生一個類型號為n的中斷
47、,轉入相應的中斷處理程序來完成中斷功能。 第7章 輸入/輸出與中斷 2硬件中斷(外部中斷) 8086/8088 CPU有兩條外部中斷請求線NMI(非屏蔽中斷)和INTR(可屏蔽中斷)。 1) 非屏蔽中斷NMI(中斷類型號為2) 整個系統(tǒng)只有一個非屏蔽中斷,它不受IF標志位的屏蔽。出現(xiàn)在NMI上的請求信號是上升沿觸發(fā)的,一旦出現(xiàn),CPU將予以響應。非屏蔽中斷一般用于緊急故障處理。 第7章 輸入/輸出與中斷 2) 可屏蔽中斷INTR 可屏蔽中斷請求信號從INTR引腳送往CPU,高電平有效,受IF標志位屏蔽,IF0時,對于所有從INTR引腳進入的中斷請求,CPU均不予響應;另外,也可以在CPU外部的
48、中斷控制器(8259A)中以及各個I/O接口電路中對某一級中斷或某個中斷源單獨進行屏蔽。 第7章 輸入/輸出與中斷 當外設的中斷請求未被屏蔽,且IF=1,則CPU在當前指令周期的最后一個T狀態(tài)去采樣INTR引腳,若有效,CPU予以響應。CPU將執(zhí)行兩個連續(xù)的中斷響應周期,送出兩個中斷響應信號 INTA。第一個響應周期,CPU將地址及數(shù)據(jù)總線置高阻;在第二個響應周期,外設向數(shù)據(jù)總線輸送一個字節(jié)的中斷類型號,CPU讀入后,就可在中斷向量表中找到該類型號的中斷服務程序的入口地址,轉入中斷處理。 值得注意的是,對于非屏蔽中斷和軟件中斷,其中斷類型號由CPU內(nèi)部自動提供,不需去執(zhí)行中斷響應周期讀取中斷類
49、型號。 第7章 輸入/輸出與中斷 38086/8088中斷源的優(yōu)先級 8086/8088中斷源的優(yōu)先級順序由高到低依次為:軟件中斷(除單步中斷外)、非屏蔽中斷、可屏蔽中斷、單步中斷。 在PC機系統(tǒng)中,外設的中斷請求通過中斷控制器8259A連接到CPU的INTR引腳,外設中斷源的優(yōu)先級別由8259A進行管理。 第7章 輸入/輸出與中斷 7.4.2 中斷向量表中斷向量表 中斷向量表是存放中斷向量的一個特定的內(nèi)存區(qū)域。所謂中斷向量,就是中斷服務程序的入口地址。對于8086/8088系統(tǒng),所有中斷服務程序的入口地址都存放在中斷向量表中。 8086/8088可以處理256種中斷,每種中斷對應一個中斷類型
50、號,每個中斷類型號與一個中斷服務程序的入口地址相對應。每個中斷服務程序的入口地址占4個存儲單元,其中低地址的兩個單元存放中斷服務程序入口地址的偏移量(IP);高地址的兩個單元存放中斷服務程序入口地址的段地址(CS)。256個中斷向量要占25641024個單元,即中斷向量表長度為1K個單元。8086/8088系統(tǒng)的中斷向量表位于內(nèi)存的前1K字節(jié),地址范圍為00000H003FFH。8086/8088的中斷向量表如圖7.18所示。 第7章 輸入/輸出與中斷 00000H00003H00008H0000BH00004H00007H0000CH0000FH00010H00013H00014H0007F
51、H00080H003FCHIP內(nèi)容CS內(nèi)容類型0中斷入口地址(除法出錯)專用中斷(5個)用戶自定義中斷(224個)系統(tǒng)保留中斷(27個)類型1中斷入口地址(單步中斷)類型2中斷入口地址(NMI)類型3中斷入口地址(斷點中斷)類型4中斷入口地址(溢出中斷)類型5中斷入口地址類型31中斷入口地址類型32中斷入口地址類型255中斷入口地址圖7.18 8086/8088的中斷向量表 第7章 輸入/輸出與中斷 圖7.18所示的中斷向量表中有5個專用中斷(類型0類型4),它們已經(jīng)有固定用途;27個系統(tǒng)保留的中斷(類型5類型31)供系統(tǒng)使用,不允許用戶自行定義;224個用戶自定義中斷(類型32類型255),
52、這些中斷類型號可供軟中斷INT n或可屏蔽中斷INTR使用,使用時,要由用戶自行填入相應的中斷服務程序入口地址。(其中有些中斷類型已經(jīng)有了固定用途,例如,類型21H的中斷已用做DOS的系統(tǒng)功能調(diào)用)。 第7章 輸入/輸出與中斷 由于中斷服務程序入口地址在中斷向量表中是按中斷類型號順序存放的,因此每個中斷服務程序入口地址在中斷向量表中的位置可由“中斷類型號4”計算出來。CPU響應中斷時,把中斷類型號N乘以4,得到對應地址4N(該中斷服務程序入口地址所占4個單元的第一個單元的地址),然后把由此地址開始的兩個低字節(jié)單元(4N,4N+1)的內(nèi)容裝入IP寄存器,再把兩個高字節(jié)單元(4N+2,4N+3)的
53、內(nèi)容裝入CS寄存器,于是CPU轉入中斷類型號為N的中斷服務程序。 這種采用向量中斷的方法,CPU可直接通過向量表轉向相應的處理程序,而不需要去逐個檢測和確定中斷源,因而可以大大加快中斷響應的速度。 第7章 輸入/輸出與中斷 7.4.3 8086/8088的中斷處理過程的中斷處理過程 FLAGS 入棧NNN完成當前指令有內(nèi)部中斷嗎?從指令中或內(nèi)部獲得中斷類型號從外部得到中斷類型號TEMP=1?令TEMPTF調(diào)中斷處理程序YYY有NMI中斷嗎?有INTR中斷嗎?TF1?執(zhí)行下一條指令NNNNY中斷類型號2YIF1?中斷類型號1清IF、TFCS、IP入棧返回斷點FLAGS出棧IP、CS出棧中斷服務有
54、NMI?(1)(1)(1)(1)(2)(3)(4)(5)YY圖7.19 8086/8088 CPU中斷處理的基本過程 第7章 輸入/輸出與中斷 在圖示流程中,(1)(5)是CPU的內(nèi)部處理,由硬件自動完成。 所有內(nèi)部中斷(除法錯、INT n、INTO、單步和斷點中斷)以及NMI中斷不需要從數(shù)據(jù)總線上讀取中斷類型碼,而INTR中斷需由CPU讀取中斷類型碼,其中斷類型碼由發(fā)出INTR信號的接口電路提供。 該流程圖還反映出了8086/8088系統(tǒng)中各中斷源優(yōu)先級的高低。 第7章 輸入/輸出與中斷 7.4.4 中斷服務程序的設計中斷服務程序的設計 中斷服務程序的一般結構如圖7.20所示。如前所述,若該
55、中斷處理能被更高級別的中斷源中斷,則需加入開中斷指令。在中斷服務程序的最后,一定要有中斷返回指令,以保證斷點的恢復。 用戶在設計中斷服務程序時要預先確定一個中斷類型號,不論是采用軟件中斷還是硬件中斷,都只能在系統(tǒng)預留給用戶的類型號中選擇。 第7章 輸入/輸出與中斷 關中斷保護現(xiàn)場開中斷中斷服務恢復現(xiàn)場中斷返回圖7.20 中斷服務程序的一般結構 第7章 輸入/輸出與中斷 1DOS系統(tǒng)功能調(diào)用法系統(tǒng)功能調(diào)用法 功能號:(AH)=25H。 入口參數(shù):(AL)=中斷類型號 (DS)=中斷服務程序入口地址的段地址 (DX)=中斷服務程序入口地址的偏移地址 第7章 輸入/輸出與中斷 下面程序段完成中斷類型
56、號為60H的入口地址置入。PUSH DS;保護DSMOV DX,OFFSET INT60;取服務程序偏移地址MOV AX,SEG INT60;取服務程序段地址MOV DS,AXMOV AH,25H;送功能號MOV AL,60H;送中斷類型號INT 21H;DOS功能調(diào)用 POP DS;恢復DS 第7章 輸入/輸出與中斷 2直接裝入法 用傳送指令直接將中斷服務程序首地址置入矢量表中。設中斷類型號為60H(此類型號對應的矢量表地址為從00180H開始的四個連續(xù)存儲單元)。程序段如下:XOR AX,AXMOV DS,AXMOV AX,OFFSET INT60MOV DS:0180H,AX;置服務程序
57、偏移地址MOV AX,SEG INT60 MOV DS:0180H+2,AX;置服務程序所在代碼段的段地址 第7章 輸入/輸出與中斷 7.5 可編程中斷控制器可編程中斷控制器Intel 8259A 7.5.1 8259A的功能的功能 8259A是可編程中斷控制器(Programmable Interrupt Controller)芯片,用于管理和控制80 x86的外部中斷請求,可實現(xiàn)中斷優(yōu)先級判定,提供中斷類型號,屏蔽中斷輸入等功能。單片8259A可管理8級中斷,若采用級聯(lián)方式,最多可以用9片8259A構成兩級中斷機構,管理64級中斷。8259A是可編程器件,它所具有的多種中斷優(yōu)先級管理方式可
58、以通過主程序在任何時候進行改變或重新組織。 第7章 輸入/輸出與中斷 7.5.2 8259A的內(nèi)部結構及外部引腳的內(nèi)部結構及外部引腳 18259A的內(nèi)部結構的內(nèi)部結構 內(nèi)部總線CAS0D7D0數(shù)據(jù)總線緩沖器控制電路INT讀/寫控制邏輯RDWRA0CS級聯(lián)緩沖/比較器CAS1CAS2EN/SPINTA中斷服務寄存器(ISR)優(yōu)先權判別器(PR)中斷請求寄存器(IRR)中斷屏蔽寄存器(IMR)IR7IR1IR0圖7.21 8259A內(nèi)部結構框圖 第7章 輸入/輸出與中斷 中斷請求寄存器IRR(Interrupt Request Register),8位,接受并鎖存來自IR0IR7的中斷請求信號,當
59、IR0IR7上出現(xiàn)某一中斷請求信號時,IRR對應位被置1;中斷屏蔽寄存器IMR(Interrupt Mask Register),8位,若IRR中記錄的各級中斷中有任何一級需要屏蔽,只要將IMR的相應位置1即可,未被屏蔽的中斷請求進入優(yōu)先權判別器;中斷服務寄存器ISR(In-Service Register),8位,保存當前正在處理的中斷請求,例如,如果ISR的D2=1,表示CPU正在為來自IR2的中斷請求服務;優(yōu)先權判別器PR(Priority Resolver)能夠?qū)⒏髦袛嗾埱笾袃?yōu)先級最高者選中,并將ISR中相應位置1。若某中斷請求正在被處理,8259A外部又有新的中斷請求,則由優(yōu)先權判別
60、器將新進入的中斷請求和當前正在處理的中斷進行比較,以決定哪一個優(yōu)先級更高。若新的中斷請求比正在處理的中斷級別高,則正在處理的中斷自動被禁止,先處理級別高的中斷,由PR通過控制邏輯向CPU發(fā)出中斷申請INT。 第7章 輸入/輸出與中斷 CPU收到中斷請求后,若IF=1,則CPU完成當前指令后,響應中斷,即執(zhí)行兩個中斷響應總線周期,在 引腳上發(fā)出兩個負脈沖。8259A收到第一個負脈沖后,使IRR鎖存功能失效,不接受IR0IR7上的中斷請求信號;直到第二個負脈沖結束后,才又使IRR鎖存功能有效,并清除IRR的相應位,使ISR的對應位置1,以便為優(yōu)先級裁決器以后的裁決提供依據(jù)。收到第二個負脈沖后,82
61、59A把當前中斷的中斷類型號送到D7D0,CPU根據(jù)此類型號進入相應的中斷服務程序。在中斷服務程序結束時向8259A發(fā)中斷結束命令,該命令將ISR寄存器的相應位清0,中斷處理結束。 INTA第7章 輸入/輸出與中斷 數(shù)據(jù)總線緩沖器是8259A與系統(tǒng)之間傳送信息的數(shù)據(jù)通道。 讀/寫控制邏輯包含了初始化命令字寄存器和操作命令字寄存器。其功能是確定數(shù)據(jù)總線緩沖器中數(shù)據(jù)的傳輸方向,選擇內(nèi)部的各命令字寄存器。當CPU發(fā)讀信號時將8259A的狀態(tài)信息放到數(shù)據(jù)總線上;當CPU發(fā)寫信號時,將CPU發(fā)來的命令字信息送入指定的命令字寄存器中。 級聯(lián)緩沖/比較器用來存放和比較在系統(tǒng)中用到的所有8259A的級聯(lián)地址。
62、主控8259A通過CAS0、CAS1和CAS2發(fā)送級聯(lián)地址,選中從控8259A。 第7章 輸入/輸出與中斷 圖7.22 8259A引腳CAS28259AD7CAS0GNDVCCA0IR7INT12345678910111213142827262524232221201918171615INTAIR6IR5IR4IR3IR2IR1IR0EN / SPCSWRRDD6D5D4D3D2D1D0CAS1第7章 輸入/輸出與中斷 28259A的外部引腳的外部引腳 8259A采用28腳雙列直插封裝形式,如圖7.22所示。 CS:片選信號,輸入,低電平有效,來自地址譯碼器的輸出。只有該信號有效時,CPU才能
63、對8259A進行讀/寫操作。 WR:寫信號,輸入,低電平有效,通知8259A接收CPU從數(shù)據(jù)總線上送來的命令字。 RD:讀信號,輸入,低電平有效,用于讀取8259A中某些寄存器的內(nèi)容(如IMR、ISR或IRR)。 第7章 輸入/輸出與中斷 D7D0:雙向、三態(tài)數(shù)據(jù)線,接系統(tǒng)數(shù)據(jù)總線的D7D0,用來傳送控制字、狀態(tài)字和中斷類型號等。 IR7IR0:中斷請求信號,輸入,從I/O接口或其他8259A(從控制器)上接收中斷請求信號。在邊沿觸發(fā)方式中,IR輸入應由低到高,此后保持為高,直到被響應。在電平觸發(fā)方式中,IR輸入應保持高電平。 INT:8259A向CPU發(fā)出的中斷請求信號,高電平有效,該引腳接
64、CPU的INTR引腳。 INTA:中斷響應信號,輸入,接收CPU發(fā)來的中斷響應脈沖以通知8259A中斷請求已被響應,使其將中斷類型號送到數(shù)據(jù)總線上。 第7章 輸入/輸出與中斷 CAS0CAS2:級聯(lián)總線,輸入或輸出,用于區(qū)分特定的從控制器件。8259A作為主控制器時,該總線為輸出,作為從控制器時,為輸入。 SP/EN:從片/允許緩沖信號,輸入或輸出,該引腳為雙功能引腳。在緩沖方式中(即8259A通過一個數(shù)據(jù)總線收發(fā)器與系統(tǒng)總線相連),該引腳被用做輸出線,控制收發(fā)器的接收或發(fā)送;在非緩沖方式中,該引腳作為輸入線,確定該8259A是主控制器(SP/EN1)還是從控制器(SP/EN0)。8259A的
65、級聯(lián)方式如圖7.23所示。 第7章 輸入/輸出與中斷 A0為地址輸入信號,用于對8259A內(nèi)部寄存器端口的尋址。每片8259A對應兩個端口地址,一個為偶地址,一個為奇地址,且偶地址小于奇地址。在與8088系統(tǒng)相連時,可直接將該引腳與地址總線的A0連接;與8086系統(tǒng)連接時要特別注意,因為8259A只有8根數(shù)據(jù)線,8086有16根,8086與8259A的所有數(shù)據(jù)傳送都用16位數(shù)據(jù)總線的低8位進行。要保證所有傳送都用總線的低8位,最簡單的方法是將8086地址總線的A1和8259A的A0端相連,這樣,就可以用兩個相鄰的偶地址作為8259A的端口地址,從而保證用數(shù)據(jù)總線的低8位和8259A交換數(shù)據(jù)。
66、第7章 輸入/輸出與中斷 在這種情況下,從CPU的角度來看,對兩個端口尋址時,使A0總是為0,而A1為1或者為0,即這兩個端口用的是相鄰的兩個偶地址;從8259A的角度來看,只有地址總線的A1和8259A的A0端相連,地址總線的A0未與8259A相連,所以,當?shù)刂房偩€的A1為0時,8259A認為是對偶地址端口進行訪問,當?shù)刂房偩€的A1為1時,8259A認為是對奇地址端口進行訪問,從而將兩個本來相鄰的偶地址看成是一奇一偶兩個相鄰地址。這樣,又正好符合了8259A對端口地址的要求。因此,在實際的8086系統(tǒng)中,總是給8259A分配兩個相鄰的偶地址,其中,一個為4的倍數(shù),對應于A1=0,A0=0,并使這個地址較低;另一個為2的倍數(shù),對應于A1=1,A0=0,并使這個地址較高。 第7章 輸入/輸出與中斷 7.5.3 8259A的工作方式的工作方式 1中斷優(yōu)先級管理方式 1) 全嵌套方式 全嵌套方式也稱固定優(yōu)先級方式。在這種方式下,由IR端引入的中斷請求具有固定的優(yōu)先級,IR0最高,IR7最低。在對8259A初始化后若沒有設置其他優(yōu)先級方式,則默認為全嵌套方式。 第7章 輸入/輸出與中斷 當一個
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版教材三年級上冊道德與法治第四單元家是最溫暖的地方教學ppt課件 (全套)
- 蘇教版小學科學三年級下冊《雨下得有多大》課件1
- 花的形態(tài)與結構課件匯總
- 一年級-數(shù)學下冊十幾減九人教版課件
- 電影膠片動態(tài)課件
- 高電壓技術課件第六章
- 項目采購管理(6)
- 四川省攀枝花市XX小學一年級數(shù)學下冊六100以內(nèi)的加法和減法二練習十三2課件蘇教版
- 山東省青島市黃島區(qū)海青鎮(zhèn)中心中學七年級歷史下冊 15 明朝君權的加強課件 新人教版
- 把握人物的性格特征
- 剪小紙人PPT課件
- 八年級物理探究凸透鏡成像規(guī)律8
- 1[1]22配方法2
- 近代機械行業(yè)唯物主義管理分析自然觀
- 全國科技創(chuàng)新大賽“科學幻想畫”獲獎作品ppt課件