影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷

上傳人:1888****888 文檔編號:48644074 上傳時間:2022-01-12 格式:PPT 頁數(shù):143 大小:1.46MB
收藏 版權(quán)申訴 舉報 下載
《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷_第1頁
第1頁 / 共143頁
《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷_第2頁
第2頁 / 共143頁
《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷_第3頁
第3頁 / 共143頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷》由會員分享,可在線閱讀,更多相關(guān)《《微型計算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷(143頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第7章 輸入/輸出與中斷 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式與外設(shè)之間數(shù)據(jù)傳送的方式 7.3 中斷技術(shù)中斷技術(shù) 7.4 8086/8088 中斷系統(tǒng)中斷系統(tǒng) 7.5 可編程中斷控制器可編程中斷控制器Intel 8259A 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.1.1 I/O接口的作用接口的作用 主機(jī)與外界交換信息稱為輸入/輸出(I/O)。主機(jī)與外界的信息交換是通過輸入/輸出設(shè)備進(jìn)行的。一般的輸入/輸出設(shè)備都是機(jī)械的或機(jī)電相結(jié)合的產(chǎn)物,比如常規(guī)的外設(shè)有鍵盤、顯示器、打印機(jī)、掃描儀、磁盤機(jī)、鼠標(biāo)器等,它們相對于高

2、速的中央處理器來說,速度要慢得多。此外,不同外設(shè)的信號形式、數(shù)據(jù)格式也各不相同。因此,外部設(shè)備不能與CPU直接相連,需要通過相應(yīng)的電路來完成它們之間的速度匹配、信號轉(zhuǎn)換,并完成某些控制功能。通常把介于主機(jī)和外設(shè)之間的一種緩沖電路稱為I/O接口電路,簡稱I/O接口(Interface),如圖7.1所示。對于主機(jī),I/O接口提供了外部設(shè)備的工作狀態(tài)及數(shù)據(jù);對于外部設(shè)備,I/O接口記憶了主機(jī)送給外設(shè)的一切命令和數(shù)據(jù),從而使主機(jī)與外設(shè)之間協(xié)調(diào)一致地工作。 第7章 輸入/輸出與中斷 圖7.1 主機(jī)與外設(shè)的連接CPUI/O接口外設(shè)第7章 輸入/輸出與中斷 對于微型計算機(jī)來說,設(shè)計微處理器CPU時,并不設(shè)計

3、它與外設(shè)之間的接口部分,而是將輸入/輸出設(shè)備的接口電路設(shè)計成相對獨(dú)立的部件,通過它們將各種類型的外設(shè)與CPU連接起來,從而構(gòu)成完整的微型計算機(jī)硬件系統(tǒng)。 因此,一臺微型計算機(jī)的輸入/輸出系統(tǒng)應(yīng)該包括I/O接口、I/O設(shè)備及相關(guān)的控制軟件。一個微機(jī)系統(tǒng)的綜合處理能力,系統(tǒng)的可靠性、兼容性、性價比,甚至在某個場合能否使用都和I/O系統(tǒng)有著密切的關(guān)系。輸入/輸出系統(tǒng)是計算機(jī)系統(tǒng)的重要組成部分之一,任何一臺高性能計算機(jī),如果沒有高質(zhì)量的輸入/輸出系統(tǒng)與之配合工作,計算機(jī)的高性能便無法發(fā)揮出來。 第7章 輸入/輸出與中斷 7.1.2 CPU與外設(shè)交換的信息與外設(shè)交換的信息 主機(jī)與I/O設(shè)備之間交換的信息

4、可分為數(shù)據(jù)信息、狀態(tài)信息和控制信息三類。 1數(shù)據(jù)信息 數(shù)據(jù)信息又分為數(shù)字量、模擬量和開關(guān)量三種形式。 1) 數(shù)字量 數(shù)字量是計算機(jī)可以直接發(fā)送、接收和處理的數(shù)據(jù)。例如,由鍵盤、顯示器、打印機(jī)及磁盤等I/O外設(shè)與 CPU交換的信息,它們是以二進(jìn)制形式表示的數(shù)或以ASCII碼表示的數(shù)符。 第7章 輸入/輸出與中斷 2) 模擬量 當(dāng)計算機(jī)應(yīng)用于控制系統(tǒng)中時,輸入的信息一般為來自現(xiàn)場的連續(xù)變化的物理量,如溫度、壓力、流量、位移、濕度等,這些物理量通過傳感器并經(jīng)放大處理得到模擬電壓或電流,這些模擬量必須先經(jīng)過模擬量向數(shù)字量的轉(zhuǎn)換(A/D轉(zhuǎn)換)后才能輸入計算機(jī)。反過來,計算機(jī)輸出的控制信號都是數(shù)字量,也必

5、須先經(jīng)過數(shù)字量向模擬量的轉(zhuǎn)換(D/A轉(zhuǎn)換),把數(shù)字量轉(zhuǎn)換成模擬量才能去控制現(xiàn)場。 第7章 輸入/輸出與中斷 3) 開關(guān)量 開關(guān)量可表示兩個狀態(tài),如開關(guān)的斷開和閉合,機(jī)器的運(yùn)轉(zhuǎn)與停止,閥門的打開與關(guān)閉等。這些開關(guān)量通常要經(jīng)過相應(yīng)的電平轉(zhuǎn)換才能與計算機(jī)連接。開關(guān)量只要用一位二進(jìn)制數(shù)即可表示。 第7章 輸入/輸出與中斷 2. 狀態(tài)信息 狀態(tài)信息作為CPU與外設(shè)之間交換數(shù)據(jù)時的聯(lián)絡(luò)信息,反映了當(dāng)前外設(shè)所處的工作狀態(tài),是外設(shè)通過接口送往CPU的。CPU通過對外設(shè)狀態(tài)信號的讀取,可得知輸入設(shè)備的數(shù)據(jù)是否準(zhǔn)備好、輸出設(shè)備是否空閑等情況。對于輸入設(shè)備,一般用準(zhǔn)備好(READY)信號的高低來表明待輸入的數(shù)據(jù)是否

6、準(zhǔn)備就緒;對于輸出設(shè)備,則用忙(BUSY)信號的高低表示輸出設(shè)備是否處于空閑狀態(tài),如為空閑狀態(tài),則可接收CPU輸出的信息,否則CPU要暫停送數(shù)。因此,狀態(tài)信息能夠保障CPU與外設(shè)正確地進(jìn)行數(shù)據(jù)交換。 第7章 輸入/輸出與中斷 3控制信息 控制信息是CPU通過接口傳送給外設(shè)的,CPU通過發(fā)送控制信息設(shè)置外設(shè)(包括接口)的工作模式、控制外設(shè)的工作。如外設(shè)的啟動信號和停止信號就是常見的控制信息。實際上,控制信息往往隨著外設(shè)的具體工作原理不同而含義不同。 雖然數(shù)據(jù)信息、狀態(tài)信息和控制信息含義各不相同,但在微型計算機(jī)系統(tǒng)中,CPU通過接口和外設(shè)交換信息時,只能用輸入指令(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接口的基本結(jié)構(gòu)接口的基本結(jié)構(gòu) I/O接口的基本結(jié)構(gòu)如圖7.2所示。每個接口電路中都包含一組寄存器,CPU與外設(shè)進(jìn)行信息交換時,各類信息在接口中存入不同的寄存器,一般稱這些寄存器為I/O端口,簡稱為口(Port)。用來保存CPU和外設(shè)之間傳送的數(shù)據(jù)(如數(shù)字、字符及某種特定的編碼等)、對輸入/輸出數(shù)據(jù)起緩沖作用的數(shù)據(jù)寄存器稱為數(shù)據(jù)端口;用來存

8、放外設(shè)或者接口部件本身狀態(tài)的狀態(tài)寄存器稱為狀態(tài)端口;用來存放CPU發(fā)往外設(shè)的控制命令的控制寄存器稱為控制端口。 第7章 輸入/輸出與中斷 CBABDBCPU數(shù)據(jù)端口狀態(tài)端口I/O設(shè)備譯碼控制端口圖7.2 一個典型的I/O接口 第7章 輸入/輸出與中斷 正如每個存儲單元都有一個物理地址一樣,每個端口也有一個地址與之相對應(yīng),該地址稱為端口地址。有了端口地址,CPU對外設(shè)的輸入/輸出操作實際上就是對I/O接口中各端口的讀/寫操作。數(shù)據(jù)端口一般是雙向的,數(shù)據(jù)是輸入還是輸出,取決于對該端口地址進(jìn)行操作時CPU發(fā)往接口電路的讀/寫控制信號。由于狀態(tài)端口只做輸入操作,控制端口只做輸出操作,因此,有時為了節(jié)省

9、系統(tǒng)地址空間,在設(shè)計接口時往往將這兩個端口共用一個端口地址,再用讀/寫信號來分別選擇訪問。 應(yīng)該指出,輸入/輸出操作所用到的地址總是對端口而言,而不是對接口而言的。接口和端口是兩個不同的概念,若干個端口加上相應(yīng)的控制電路才構(gòu)成接口。 第7章 輸入/輸出與中斷 7.1.4 I/O端口的編址端口的編址 微型計算機(jī)系統(tǒng)中I/O端口編址方式有兩種:I/O端口與內(nèi)存單元統(tǒng)一編址和 I/O端口與內(nèi)存單元獨(dú)立編址。 1I/O端口與內(nèi)存單元統(tǒng)一編址 這種編址方式是對I/O端口和存儲單元按照存儲單元的編址方法統(tǒng)一編排地址號,由I/O端口地址和存儲單元地址共同構(gòu)成一個統(tǒng)一的地址空間。例如,對于一個有16根地址線的

10、微機(jī)系統(tǒng),若采用統(tǒng)一編址方式,其地址空間的結(jié)構(gòu)如圖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)的設(shè)計;同時,對存儲器的各種尋址方式也同樣適用于對I/O端口的訪問,給使用者提供了很大的方便。但由于I/O端口占用了一部分存儲器地址空間,因而相對減少了內(nèi)存的地址可用范圍。 第7章 輸

11、入/輸出與中斷 2I/O端口與內(nèi)存單元獨(dú)立編址 在這種編址方式中,建立了兩個地址空間,一個為內(nèi)存地址空間,一個為I/O地址空間。內(nèi)存地址空間和I/O地址空間是相對獨(dú)立的,通過控制總線來確定CPU到底要訪問內(nèi)存還是I/O端口。為確??刂瓶偩€發(fā)出正確的信號,除了要有訪問內(nèi)存的指令之外,系統(tǒng)還要提供用于CPU與I/O端口之間進(jìn)行數(shù)據(jù)傳輸?shù)妮斎?輸出指令。 第7章 輸入/輸出與中斷 80 x86 CPU組成的微機(jī)系統(tǒng)都采用獨(dú)立編址方式。在8086/8088系統(tǒng)中,共有20根地址線對內(nèi)存尋址,內(nèi)存的地址范圍是00000HFFFFFH;用地址總線的低16位對I/O端口尋址,所以I/O端口的地址范圍是000

12、0HFFFFH,如圖7.4所示。CPU在訪問內(nèi)存和外設(shè)時,使用了不同的控制信號來加以區(qū)分。例如,當(dāng)8086 CPU的M/IO信號為1時,表示地址總線上的地址是一個內(nèi)存地址;為0時,則表示地址總線上的地址是一個端口地址。 第7章 輸入/輸出與中斷 00000HFFFFFH存儲器I/OFFFFH0000H圖7.4 I/O端口與內(nèi)存單元獨(dú)立編址 第7章 輸入/輸出與中斷 采用獨(dú)立編址方式后,存儲器地址空間不受I/O端口地址空間的影響,專用的輸入/輸出指令與訪問存儲器指令有明顯區(qū)別,便于理解和檢查。但是,專用I/O指令增加了指令系統(tǒng)復(fù)雜性,且I/O指令類型少,程序設(shè)計靈活性較差;此外,還要求CPU提供

13、專門的控制信號以區(qū)分對存儲器和I/O端口的操作,增加了控制邏輯的復(fù)雜性。 第7章 輸入/輸出與中斷 3I/O端口的地址譯碼 微機(jī)系統(tǒng)常用的I/O接口電路一般都被設(shè)計成通用的I/O接口芯片,一個接口芯片內(nèi)部可以有若干可尋址的端口。因此,所有接口芯片都有片選信號線和用于片內(nèi)端口尋址的地址線。例如,某接口芯片內(nèi)有四個端口地址,則該芯片外就會有兩根地址線。本書第8章中將詳細(xì)介紹幾種常用的I/O接口芯片。 第7章 輸入/輸出與中斷 I/O端口地址譯碼的方法有多種,一般的原則是把CPU用于I/O端口尋址的地址線分為高位地址線和低位地址線兩部分,將低位地址線直接連到I/O接口芯片的相應(yīng)地址引腳,實現(xiàn)片內(nèi)尋址

14、,即選中片內(nèi)的端口;將高位地址線與CPU的控制信號組合,經(jīng)地址譯碼電路產(chǎn)生I/O接口芯片的片選信號。 第7章 輸入/輸出與中斷 7.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式與外設(shè)之間數(shù)據(jù)傳送的方式 7.2.1 程序傳送方式程序傳送方式 1無條件傳送方式無條件傳送方式 微機(jī)系統(tǒng)中的一些簡單的外設(shè),如開關(guān)、繼電器、數(shù)碼管、發(fā)光二極管等,在它們工作時,可以認(rèn)為輸入設(shè)備已隨時準(zhǔn)備好向CPU提供數(shù)據(jù),而輸出設(shè)備也隨時準(zhǔn)備好接收CPU送來的數(shù)據(jù),這樣,在CPU需要同外設(shè)交換信息時,就能夠用IN或OUT指令直接對這些外設(shè)進(jìn)行輸入/輸出操作。由于在這種方式下CPU對外設(shè)進(jìn)行輸入/輸出操作時無需考慮外設(shè)的狀態(tài),故稱之

15、為無條件傳送方式。 第7章 輸入/輸出與中斷 對于簡單外設(shè),若采用無條件傳送方式,其接口電路也很簡單。如簡單外設(shè)作為輸入設(shè)備時,輸入數(shù)據(jù)保持時間相對于CPU的處理時間要長得多,所以可直接使用三態(tài)緩沖器和數(shù)據(jù)總線相連,如圖7.5(a)所示。當(dāng)執(zhí)行輸入的指令時,讀信號有效,選擇信號M/處于低電平,因而三態(tài)緩沖器被選通,使其中早已準(zhǔn)備好的輸入數(shù)據(jù)送到數(shù)據(jù)總線上,再到達(dá)CPU。所以要求CPU在執(zhí)行輸入指令時,外設(shè)的數(shù)據(jù)是準(zhǔn)備好的,即數(shù)據(jù)已經(jīng)存入三態(tài)緩沖器中。 第7章 輸入/輸出與中斷 (b)至外設(shè)數(shù)據(jù)總線(DB)地址總線(AB)鎖存器來自CPU的數(shù)據(jù)地址譯碼器WRIOM/(a)來自外設(shè)的數(shù)據(jù)數(shù)據(jù)總線(

16、DB)地址譯碼器地址總線(AB)1三態(tài)緩沖器至CPURDIOM/1圖7.5 無條件傳送方式(a) 無條件傳送數(shù)據(jù)輸入;(b) 無條件傳送數(shù)據(jù)輸出 第7章 輸入/輸出與中斷 簡單外設(shè)為輸出設(shè)備時,由于外設(shè)取數(shù)的速度比較慢,要求CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時間,因而一般都需要鎖存器,如圖7.5(b)所示。CPU執(zhí)行輸出指令時,M/IO和WR信號有效,于是,接口中的輸出鎖存器被選中,CPU輸出的信息經(jīng)過數(shù)據(jù)總線送入輸出鎖存器中,輸出鎖存器保持這個數(shù)據(jù),直到外設(shè)取走。 無條件傳送方式下,程序設(shè)計和接口電路都很簡單,但是為了保證每一次數(shù)據(jù)傳送時外設(shè)都能處于就緒狀態(tài),傳送不能太頻繁。對少量的

17、數(shù)據(jù)傳送來說,無條件傳送方式是最經(jīng)濟(jì)實用的一種傳送方法。 第7章 輸入/輸出與中斷 2查詢傳送方式查詢傳送方式 查詢傳送也稱為條件傳送,是指在執(zhí)行輸入指令(IN)或輸出指令(OUT)前,要先查詢相應(yīng)設(shè)備的狀態(tài),當(dāng)輸入設(shè)備處于準(zhǔn)備好狀態(tài),輸出設(shè)備處于空閑狀態(tài)時,CPU才執(zhí)行輸入/輸出指令與外設(shè)交換信息。為此,接口電路中既要有數(shù)據(jù)端口,還要有狀態(tài)端口。 查詢傳送方式的流程圖見圖7.6。從圖中可以看出,采用查詢方式完成一次數(shù)據(jù)傳送要經(jīng)歷如下過程: (1) CPU從接口中讀取狀態(tài)字。 (2) CPU檢測相應(yīng)的狀態(tài)位是否滿足“就緒”條件。 (3) 如果不滿足,則重復(fù)(1)、(2)步;若外設(shè)已處于“就緒”

18、狀態(tài),則傳送數(shù)據(jù)。 第7章 輸入/輸出與中斷 圖7.6 查詢傳送方式的流程圖NYY取外設(shè)狀態(tài)外設(shè)準(zhǔn)備就緒?N開始傳送數(shù)據(jù)傳送完否?結(jié)束第7章 輸入/輸出與中斷 圖7.7給出的是采用查詢傳送方式進(jìn)行輸入操作的接口電路。輸入設(shè)備在數(shù)據(jù)準(zhǔn)備好之后向接口發(fā)選通信號,此信號有兩個作用:一方面將外設(shè)中的數(shù)據(jù)送到接口的鎖存器中;另一方面使接口中的一個D觸發(fā)器輸出“1”,從而使三態(tài)緩沖器的READY位置“1”。CPU輸入數(shù)據(jù)前先用輸入指令讀取狀態(tài)字,測試READY位,若READY位為“1”,說明數(shù)據(jù)已準(zhǔn)備就緒,再執(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è)備數(shù)據(jù)狀態(tài)端口譯碼輸出數(shù)據(jù)端口譯碼輸出RRD&IO/MRD地址總線AB圖7.7 查詢式輸入的接口電路 第7章 輸入/輸出與中斷 圖7.8給出的是采用查詢傳送方式進(jìn)行輸出操作的接口電路。CPU輸出數(shù)據(jù)時,先用輸入指令讀取接口中的狀態(tài)字,測試BUSY位,若BUSY位為0,表明外設(shè)空閑,此時CPU才執(zhí)行輸出指令,否則CPU必須等待。執(zhí)行輸出指令時由端口選擇信號、M/IO信號和寫信號共同產(chǎn)生的選通信號將數(shù)據(jù)總線上的數(shù)據(jù)打入接口中的數(shù)據(jù)鎖存器,同時將D觸發(fā)器置1。D觸發(fā)器的輸出

20、信號一方面為外設(shè)提供一個聯(lián)絡(luò)信號,通知外設(shè)將鎖存器鎖存的數(shù)據(jù)取走;另一方面使?fàn)顟B(tài)寄存器的BUSY位置1,告訴CPU當(dāng)前外設(shè)處于忙狀態(tài),從而阻止CPU輸出新的數(shù)據(jù)。輸出設(shè)備從接口中取走數(shù)據(jù)后,會送一個回答信號ACK,該信號使接口中的D觸發(fā)器置0,從而使?fàn)顟B(tài)寄存器中的BUSY位清0,以便開始下一個數(shù)據(jù)輸出過程。 第7章 輸入/輸出與中斷 去CPUDB輸出設(shè)備&數(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)點(diǎn)是能保

21、證主機(jī)與外設(shè)之間協(xié)調(diào)同步地工作,且硬件線路比較簡單,程序也容易實現(xiàn)。但是,在這種方式下,CPU花費(fèi)了很多時間查詢外設(shè)是否準(zhǔn)備就緒,在這些時間里CPU不能進(jìn)行其他的操作;此外,在實時控制系統(tǒng)中,若采用查詢傳送方式,由于一個外設(shè)的輸入/輸出操作未處理完畢就不能處理下一個外設(shè)的輸入/輸出,故不能達(dá)到實時處理的要求。因此,查詢傳送方式有兩個突出的缺點(diǎn):浪費(fèi)CPU時間,實時性差。所以,查詢傳送方式適用于數(shù)據(jù)輸入/輸出不太頻繁且外設(shè)較少、對實時性要求不高的情況。 不論是無條件傳送方式還是查詢傳送方式,都不能發(fā)現(xiàn)和處理預(yù)先無法估計的錯誤和異常情況。為了提高CPU的效率、增強(qiáng)系統(tǒng)的實時性,并且能對隨機(jī)出現(xiàn)的各

22、種異常情況做出及時反應(yīng),通常采用中斷傳送方式。 第7章 輸入/輸出與中斷 7.2.2 中斷傳送方式中斷傳送方式 中斷傳送方式是指當(dāng)外設(shè)需要與CPU進(jìn)行信息交換時,由外設(shè)向CPU發(fā)出請求信號,使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行數(shù)據(jù)的輸入/輸出操作,數(shù)據(jù)傳送結(jié)束后,CPU再繼續(xù)執(zhí)行被暫停的程序。 查詢傳送方式是由CPU來查詢外設(shè)的狀態(tài),CPU處于主動地位,而外設(shè)處于被動地位。中斷傳送方式則是由外設(shè)主動向CPU發(fā)出請求,等候CPU處理,在沒有發(fā)出請求時,CPU和外設(shè)都可以獨(dú)立進(jìn)行各自的工作。目前的微處理器都具有中斷功能,而且已經(jīng)不僅僅局限于數(shù)據(jù)的輸入/輸出,而是在更多的方面有重要的應(yīng)用。例如實時控

23、制、故障處理以及BIOS和DOS功能調(diào)用等。第7章 輸入/輸出與中斷 中斷傳送方式的優(yōu)點(diǎn)是:CPU不必查詢等待,工作效率高,CPU與外設(shè)可以并行工作;由于外設(shè)具有申請中斷的主動權(quán),故系統(tǒng)實時性比查詢方式要好得多。但采用中斷傳送方式的接口電路相對復(fù)雜,而且每進(jìn)行一次數(shù)據(jù)傳送就要中斷一次CPU,CPU每次響應(yīng)中斷后,都要轉(zhuǎn)去執(zhí)行中斷處理程序,且都要進(jìn)行斷點(diǎn)和現(xiàn)場的保護(hù)和恢復(fù),浪費(fèi)了很多CPU的時間。故這種傳送方式一般適合于少量的數(shù)據(jù)傳送。對于大批量數(shù)據(jù)的輸入/輸出,可采用高速的直接存儲器存取方式,即DMA方式。 第7章 輸入/輸出與中斷 7.2.3 直接存儲器存取直接存儲器存取(DMA)傳送方式傳

24、送方式 1DMA傳送方式簡介傳送方式簡介 DMA傳送方式是在存儲器和外設(shè)之間、存儲器和存儲器之間直接進(jìn)行數(shù)據(jù)傳送(如磁盤與內(nèi)存間交換數(shù)據(jù)、高速數(shù)據(jù)采集、內(nèi)存和內(nèi)存間的高速數(shù)據(jù)塊傳送等),傳送過程無需CPU介入,這樣,在傳送時就不必進(jìn)行保護(hù)現(xiàn)場等一系列額外操作,傳輸速度基本取決于存儲器和外設(shè)的速度。DMA傳送方式需要一個專用接口芯片DMA控制器(DMAC)對傳送過程加以控制和管理。在進(jìn)行DMA傳送期間,CPU放棄總線控制權(quán),將系統(tǒng)總線交由DMAC控制,由DMAC發(fā)出地址及讀/寫信號來實現(xiàn)高速數(shù)據(jù)傳輸。傳送結(jié)束后DMAC再將總線控制權(quán)交還給CPU。一般微處理器都設(shè)有用于DMA傳送的聯(lián)絡(luò)線。 第7章

25、 輸入/輸出與中斷 控制/狀態(tài)DMA響應(yīng)數(shù)據(jù)READYDMA請求HLDAHOLDDMA控制器數(shù)據(jù)端口控制/狀態(tài)端口地址寄存器CPUDMA請求觸發(fā)器數(shù)據(jù)緩沖輸入設(shè)備數(shù)據(jù)計數(shù)器存儲器圖7.9 DMA系統(tǒng)結(jié)構(gòu)框圖 第7章 輸入/輸出與中斷 2DMA控制器的工作方式 1) 單字節(jié)傳輸方式 在該方式下,DMAC每次控制總線后只傳輸一個字節(jié),傳輸完后即釋放總線控制權(quán)。這樣CPU至少可以得到一個總線周期,并進(jìn)行有關(guān)操作。 2) 成組傳輸方式(塊傳輸方式) 第7章 輸入/輸出與中斷 3) 請求傳輸方式 在該方式下,每傳輸完一個字節(jié),DMAC都要檢測I/O接口發(fā)來的DMA請求信號是否有效。若有效,則繼續(xù)進(jìn)行DM

26、A傳輸;否則就暫停傳輸,將總線控制權(quán)交還給CPU,直至DMA請求信號再次變?yōu)橛行?,再從剛才暫停的那一點(diǎn)繼續(xù)傳輸。 第7章 輸入/輸出與中斷 3DMA操作的基本過程 1) DMAC的初始化 DMAC的初始化主要做如下幾方面工作: (1) 指定數(shù)據(jù)的傳送方向。即指定外設(shè)對存儲器是做讀操作還是寫操作,這就要對控制/狀態(tài)寄存器中的相應(yīng)控制位置數(shù)。 (2) 指定地址寄存器的初值。即給出存儲器中用于DMA傳送的數(shù)據(jù)區(qū)的首地址。 (3) 指定計數(shù)器的初值。即明確有多少數(shù)據(jù)需要傳送。 第7章 輸入/輸出與中斷 2) DMA數(shù)據(jù)傳送 DMA數(shù)據(jù)傳送(以數(shù)據(jù)輸入為例)按以下步驟進(jìn)行: (1) 外圍設(shè)備發(fā)選通脈沖,

27、把輸入數(shù)據(jù)送入緩沖寄存器,并使DMA請求觸發(fā)器置1。 (2) DMA請求觸發(fā)器向控制/狀態(tài)端口發(fā)準(zhǔn)備就緒信號,同時向DMA控制器發(fā)DMA請求信號。 (3) DMA控制器向CPU發(fā)出總線請求信號(HOLD)。 第7章 輸入/輸出與中斷 (4) CPU在完成了現(xiàn)行機(jī)器周期后,即響應(yīng)DMA請求,發(fā)出總線允許信號(HLDA),并由DMA控制器發(fā)出DMA響應(yīng)信號,使DMA請求觸發(fā)器復(fù)位。此時,由DMA控制器接管系統(tǒng)總線。 (5) DMA控制器發(fā)出存儲器地址,并在數(shù)據(jù)總線上給出數(shù)據(jù),隨后在讀/寫控制信號線上發(fā)出寫的命令。 (6) 來自外設(shè)的數(shù)據(jù)被寫入相應(yīng)存儲單元。 (7) 每傳送一個字節(jié),DMA控制器的地

28、址寄存器加1,從而得到下一個地址,字節(jié)計數(shù)器減1。返回(5),傳送下一個數(shù)據(jù)。如此循環(huán),直到計數(shù)器的值為0,數(shù)據(jù)傳送完畢。 第7章 輸入/輸出與中斷 3) DMA結(jié)束 DMA傳送完畢,由DMAC撤消總線請求信號,從而結(jié)束DMA操作。CPU撤消總線允許信號,恢復(fù)對總線的控制。 前面介紹的三種傳送方式各有利弊,在實際使用時,要根據(jù)具體情況選擇既能滿足要求,又盡可能簡單的方式。 第7章 輸入/輸出與中斷 7.3 中中 斷斷 技技 術(shù)術(shù) 7.3.1 中斷的基本概念中斷的基本概念 1中斷的定義 在CPU執(zhí)行程序的過程中,出現(xiàn)了某種緊急或異常的事件(中斷請求),CPU需暫停正在執(zhí)行的程序,轉(zhuǎn)去處理該事件(

29、執(zhí)行中斷服務(wù)程序),并在處理完畢后返回斷點(diǎn)處繼續(xù)執(zhí)行被暫停的程序,這一過程稱為中斷。斷點(diǎn)處是指返回主程序時執(zhí)行的第一條指令的地址。中斷過程如圖7.10所示。為實現(xiàn)中斷功能而設(shè)置的硬件電路和與之相應(yīng)的軟件,稱為中斷系統(tǒng)。 第7章 輸入/輸出與中斷 圖7.10 中斷過程示意圖繼續(xù)執(zhí)行斷點(diǎn)主程序中斷服務(wù)程序有中斷請求中斷處理返回斷點(diǎn)第7章 輸入/輸出與中斷 2中中斷源斷源 任何能夠引發(fā)中斷的事件都稱為中斷源,可分為硬件中斷源和軟件中斷源兩類。硬件中斷源主要包括外設(shè)(如鍵盤、打印機(jī)等)、數(shù)據(jù)通道(如磁盤機(jī)、磁帶機(jī)等)、時鐘電路(如定時計數(shù)器8253)和故障源(如電源掉電)等;軟件中斷源主要包括為調(diào)試程

30、序設(shè)置的中斷(如斷點(diǎn)、單步執(zhí)行等)、中斷指令(如INT 21H等)以及指令執(zhí)行過程出錯(如除法運(yùn)算時除數(shù)為零)等。 第7章 輸入/輸出與中斷 3中斷處理過程中斷處理過程 對于一個中斷源的中斷處理過程應(yīng)包括以下幾個步驟,即中斷請求、中斷響應(yīng)、保護(hù)斷點(diǎn)、中斷處理和中斷返回。 1) 中斷請求 中斷請求是中斷源向CPU發(fā)出的請求中斷的要求。軟件中斷源是在CPU內(nèi)部由中斷指令或程序出錯直接引發(fā)中斷;而硬件中斷源必須通過專門的電路將中斷請求信號傳送給CPU,CPU也有專門的引腳接收中斷請求信號。例如,8086/8088 CPU用INTR引腳(可屏蔽中斷請求)和NMI引腳(非屏蔽中斷請求)接收硬件中斷請求信

31、號。一般外設(shè)發(fā)出的都是可屏蔽中斷請求。 第7章 輸入/輸出與中斷 &輸入鎖存器數(shù)據(jù)總線中斷請求D端口譯碼地址總線Q中斷屏蔽INT5 V輸入設(shè)備三態(tài)緩沖器Q&RD圖7.11 中斷請求與屏蔽接口電路 第7章 輸入/輸出與中斷 當(dāng)外設(shè)準(zhǔn)備好一個數(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)生一個中斷請求信號,需滿足兩個條件:一是要由外設(shè)將接口中的中斷請求觸發(fā)器置1,二是要由CPU將接口中的中斷屏蔽觸發(fā)器

32、Q端置1。 第7章 輸入/輸出與中斷 2) 中斷響應(yīng) CPU在每條指令執(zhí)行的最后一個時鐘周期檢測其中斷請求輸入端,判斷有無中斷請求,若CPU接收到了中斷請求信號,且此時CPU內(nèi)部的中斷允許觸發(fā)器的狀態(tài)為1,則CPU在現(xiàn)行指令執(zhí)行完后,發(fā)出INTA信號響應(yīng)中斷。從圖7.11中可以看到,一旦進(jìn)入中斷處理,立即清除中斷請求信號。這樣可以避免一個中斷請求被CPU多次響應(yīng)。 圖7.12給出了CPU內(nèi)部產(chǎn)生中斷響應(yīng)信號的邏輯電路。對于8086/8088 CPU可以用開中斷(STI)或關(guān)中斷(CLI)指令來改變中斷允許觸發(fā)器(即IF標(biāo)志位)的狀態(tài)。 第7章 輸入/輸出與中斷 &R1允許中斷開中斷指令關(guān)中斷指

33、令CPUCPU響應(yīng)中斷信號INTRRESETSQ圖7.12 CPU內(nèi)部設(shè)置中斷允許觸發(fā)器 第7章 輸入/輸出與中斷 3) 保護(hù)斷點(diǎn) CPU一旦響應(yīng)中斷,需要對其正在執(zhí)行程序的斷點(diǎn)信息進(jìn)行保護(hù),以便在中斷處理結(jié)束后仍能回到該斷點(diǎn)處繼續(xù)執(zhí)行。對于8086/8088 CPU,保護(hù)斷點(diǎn)的過程由硬件自動完成,主要工作是關(guān)中斷、將標(biāo)志寄存器內(nèi)容入棧保存以及將CS和IP內(nèi)容入棧保存。 第7章 輸入/輸出與中斷 4) 中斷處理 中斷處理的過程實際就是CPU執(zhí)行中斷服務(wù)程序的過程。用戶編寫的用于CPU為中斷源進(jìn)行中斷處理的程序稱為中斷服務(wù)程序。由于不同中斷源在系統(tǒng)中的作用不同,所要完成的功能不同,因此,不同中斷

34、源的中斷服務(wù)程序內(nèi)容也各不相同。例如,對于圖7.11所示的輸入設(shè)備,其中斷服務(wù)程序的主要任務(wù)是用輸入指令(IN)從接口中的數(shù)據(jù)端口向CPU輸入數(shù)據(jù)。 第7章 輸入/輸出與中斷 另外,主程序中有些寄存器的內(nèi)容在中斷前后需保持一致,不能因中斷而發(fā)生變化,但在中斷服務(wù)程序中又用到了這些寄存器,為了保證在返回主程序后仍能從斷點(diǎn)處繼續(xù)正確執(zhí)行,還需要在中斷服務(wù)程序的開頭對這些寄存器內(nèi)容進(jìn)行保護(hù)(即保護(hù)現(xiàn)場),在中斷服務(wù)程序的末尾恢復(fù)這些寄存器的內(nèi)容(即恢復(fù)現(xiàn)場)。保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場一般用PUSH和POP指令實現(xiàn),所以要特別注意寄存器內(nèi)容入棧和出棧的次序。 第7章 輸入/輸出與中斷 5) 中斷返回 執(zhí)行完

35、中斷服務(wù)程序,返回到原先被中斷的程序,此過程稱為中斷返回。為了能正確返回到原來程序的斷點(diǎn)處,在中斷服務(wù)程序的最后應(yīng)專門放置一條中斷返回指令(如8086/8088的IRET指令)。中斷返回指令的作用實際上是恢復(fù)斷點(diǎn),也就是保護(hù)斷點(diǎn)的逆過程。 第7章 輸入/輸出與中斷 7.3.2 中斷優(yōu)先級和中斷的嵌套中斷優(yōu)先級和中斷的嵌套 1中斷優(yōu)先級 中斷請求是隨機(jī)發(fā)生的,當(dāng)系統(tǒng)具有多個中斷源時,有時會同時出現(xiàn)多個中斷請求,CPU只能按一定的次序予以響應(yīng)和處理,這個響應(yīng)的次序稱為中斷優(yōu)先級。對于不同級別的中斷請求,一般的處理原則是: (1) 不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級由高到低依次處理。

36、第7章 輸入/輸出與中斷 (2) 低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應(yīng)轉(zhuǎn)去處理高優(yōu)先級請求,服務(wù)結(jié)束后再返回原優(yōu)先級較低的中斷服務(wù)程序繼續(xù)執(zhí)行。 (3) 高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應(yīng)。 (4) 中斷處理時,出現(xiàn)同級別請求,應(yīng)在當(dāng)前中斷處理結(jié)束以后再處理新的請求。 第7章 輸入/輸出與中斷 2中斷優(yōu)先級的確定 在微機(jī)系統(tǒng)中通常用三種方法來確定中斷源的優(yōu)先級別,即軟件查詢法、硬件排隊電路法和專用中斷控制芯片法。本節(jié)簡要介紹前兩種方法,第三種方法將在本章的最后一節(jié)作詳細(xì)介紹。 1) 軟件查詢法 軟件查詢法需要簡單的硬件電路支持。以8個中斷源為例,其硬件電路如圖7.13所示

37、,將8個外設(shè)的中斷請求組合起來作為一個端口(中斷寄存器),并將各個外設(shè)的中斷請求信號相或,產(chǎn)生一個總的INT信號。 第7章 輸入/輸出與中斷 任一個外設(shè)有中斷請求,該電路都可向CPU發(fā)中斷請求信號(INT),CPU響應(yīng)后進(jìn)入中斷處理程序,在中斷處理程序的開始先把中斷寄存器的內(nèi)容讀入CPU,再對寄存器內(nèi)容進(jìn)行逐位查詢,查到某位狀態(tài)為1,表示與該位相連的外設(shè)有中斷請求,于是轉(zhuǎn)到與其相應(yīng)的中斷服務(wù)程序,同時該外設(shè)撤消其中斷請求信號。軟件查詢方式的流程圖如圖7.14所示。 第7章 輸入/輸出與中斷 1CPUD7INTRINT 1中斷寄存器INTD0INT 2INT 8圖7.13 軟件查詢法的硬件電路

38、第7章 輸入/輸出與中斷 對1號中斷源服務(wù)NNNYYY斷點(diǎn)保護(hù)INT 1?INT 2?對2號中斷源服務(wù)對n號中斷源服務(wù)INT n?圖7.14 軟件查詢方式的流程圖 第7章 輸入/輸出與中斷 對于圖7.13所示電路,設(shè)中斷寄存器端口號為n,則軟件查詢的程序段如下: IN AL,n TEST AL,80H ;1號外設(shè)有請求? JNZ II1;有,轉(zhuǎn)1號中斷服務(wù)程序 TEST AL,40H ;2號外設(shè)有請求? JNZ II2 ;有,轉(zhuǎn)2號中斷服務(wù)程序第7章 輸入/輸出與中斷 可以看出,采用軟件查詢方式,各中斷源的優(yōu)先級是由查詢順序決定的,最先查詢的設(shè)備,其優(yōu)先級最高,最后查詢的設(shè)備,其優(yōu)先級最低。采

39、用軟件查詢方式的優(yōu)點(diǎn)是節(jié)省硬件。但是,由于CPU每次響應(yīng)中斷時都要對各中斷源進(jìn)行逐一查詢,所以其響應(yīng)速度較慢。對于優(yōu)先級較低的中斷源來說,該缺點(diǎn)更為明顯。 第7章 輸入/輸出與中斷 2) 硬件排隊電路硬件排隊電路 采用硬件排隊電路法,各個外設(shè)的優(yōu)先級與其接口在排隊電路中的位置有關(guān)。常用的硬件優(yōu)先權(quán)排隊電路有鏈?zhǔn)絻?yōu)先權(quán)排隊電路、硬件優(yōu)先級編碼加比較器的排隊電路等。圖7.15給出了一個鏈?zhǔn)絻?yōu)先級排隊電路。 第7章 輸入/輸出與中斷 圖7.15中,當(dāng)響應(yīng)信號沿鏈?zhǔn)诫娐愤M(jìn)行傳遞時,最靠近CPU并發(fā)出中斷請求的接口將首先攔截住響應(yīng)信號,CPU進(jìn)入相應(yīng)外設(shè)的中斷處理程序,在服務(wù)完成后,該外設(shè)撤消其中斷請求

40、,解除對下一級外設(shè)的封鎖。例如,當(dāng)CPU收到中斷請求信號并響應(yīng)中斷時,若1號外設(shè)有中斷請求(高電平),則立即向1號外設(shè)接口發(fā)出應(yīng)答信號,同時封鎖2號、3號等外設(shè)的中斷請求,轉(zhuǎn)去對1號外設(shè)服務(wù);若1號外設(shè)沒有中斷請求,而2號外設(shè)有中斷請求時,響應(yīng)信號便傳遞給2號外設(shè),向2號外設(shè)接口發(fā)出應(yīng)答信號,同時封鎖3號外設(shè)的中斷請求;若CPU在為2號外設(shè)進(jìn)行中斷服務(wù)時1號外設(shè)發(fā)出了中斷請求,CPU會掛起對2號外設(shè)的服務(wù)轉(zhuǎn)去對1號外設(shè)服務(wù),1號外設(shè)處理結(jié)束后,再繼續(xù)為2號外設(shè)服務(wù)。可以看出,鏈?zhǔn)絻?yōu)先級排隊電路不僅能夠確定各中斷源的優(yōu)先級,而且在相應(yīng)軟件的配合下,可實現(xiàn)高級別的請求中斷低級別的服務(wù)(即中斷的嵌套

41、)。 第7章 輸入/輸出與中斷 響應(yīng)3#中斷請求“ 1”應(yīng)答2#應(yīng)答3#應(yīng)答1#1#中斷請求2#中斷請求&INT&圖7.15 鏈?zhǔn)街袛鄡?yōu)先級電路 第7章 輸入/輸出與中斷 上述兩種方法雖然可以解決中斷優(yōu)先級控制問題,但實現(xiàn)起來在硬件和軟件上都要做大量的工作,十分麻煩。目前,最方便的辦法就是利用廠家提供的可編程中斷控制器,這樣的器件在各種微機(jī)中得到普遍應(yīng)用。本章后面將介紹廣泛應(yīng)用于80 x86微機(jī)系統(tǒng)中的專用可編程中斷控制芯片8259A。 第7章 輸入/輸出與中斷 3中斷嵌套中斷嵌套 CPU在執(zhí)行低級別中斷服務(wù)程序時,又收到較高級別的中斷請求,CPU暫停執(zhí)行低級別中斷服務(wù)程序,轉(zhuǎn)去處理這個高級別

42、的中斷,處理完后再返回低級別中斷服務(wù)程序,這個過程稱為中斷嵌套,如圖7.16所示。 高級中斷請求低級中斷請求STISTI主程序低級中斷服務(wù)程序高級中斷服務(wù)程序圖7.16 中斷嵌套示意圖 第7章 輸入/輸出與中斷 一般CPU響應(yīng)中斷請求后,在進(jìn)入中斷服務(wù)程序前,硬件會自動實現(xiàn)關(guān)中斷,這樣,CPU在執(zhí)行中斷服務(wù)程序時將不能再響應(yīng)其他中斷請求。為了實現(xiàn)中斷嵌套,應(yīng)在低級別中斷服務(wù)程序的開始處加一條開中斷指令STI。能夠?qū)崿F(xiàn)中斷嵌套的中斷系統(tǒng),其軟、硬件設(shè)計都非常復(fù)雜,如果采用了可編程中斷控制器,就會方便很多。 第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的外部,由外設(shè)的請求引起,稱為硬件中斷(又稱外部中斷);另一類來自CPU的內(nèi)部,由執(zhí)行指令時引起,稱為軟件中斷(又稱內(nèi)部中斷)。 第7章 輸入/輸出與中斷 NMI(17號引腳)中 斷 邏 輯非屏蔽中斷請求INT 2硬件(外部)中斷軟件(內(nèi)部)中斷可屏蔽中斷請求中斷類型號32255INTR(18號引腳

44、)中斷指令I(lǐng)NT nN32255溢出中斷INTOINT 4斷點(diǎn)中斷INT 3單步中斷(TF1)INT 1除法錯誤INT 0圖7.17 8086/8088中斷源 第7章 輸入/輸出與中斷 1軟件中斷軟件中斷(內(nèi)部中斷內(nèi)部中斷) 8086/8088的軟件中斷主要有五種,分為三類。 1) 處理運(yùn)算過程中某些錯誤的中斷處理運(yùn)算過程中某些錯誤的中斷 執(zhí)行程序時,為及時處理運(yùn)算中的某些錯誤,CPU以中斷方式中止正在運(yùn)行的程序,提醒程序員改錯。 (1) 除法錯中斷(中斷類型號為0)。在8086/8088 CPU執(zhí)行除法指令(DIV/IDIV)時,若發(fā)現(xiàn)除數(shù)為0,或所得的商超過了CPU中有關(guān)寄存器所能表示的最

45、大值,則立即產(chǎn)生一個類型號為0的內(nèi)部中斷,CPU轉(zhuǎn)去執(zhí)行除法錯中斷處理程序。 第7章 輸入/輸出與中斷 (2) 溢出中斷INTO(中斷類型號為4)。CPU進(jìn)行帶符號數(shù)的算術(shù)運(yùn)算時,若發(fā)生了溢出,則標(biāo)志位OF=1,若此時執(zhí)行INTO指令,會產(chǎn)生溢出中斷,打印出一個錯誤信息,結(jié)束時不返回,而把控制權(quán)交給操作系統(tǒng)。若OF=0,則INTO不產(chǎn)生中斷,CPU繼續(xù)執(zhí)行下一條指令。INTO指令通常安排在算術(shù)指令之后,以便在溢出時能及時處理。例如: ADD AX,BXINTO;測試加法的溢出 第7章 輸入/輸出與中斷 2) 為調(diào)試程序設(shè)置的中斷 (1) 單步中斷(中斷類型號為1)。當(dāng)TF=1時,每執(zhí)行一條指令

46、,CPU會自動產(chǎn)生一個單步中斷。單步中斷可一條一條指令地跟蹤程序流程,觀察各個寄存器及存儲單元內(nèi)容的變化,幫助分析錯誤原因。單步中斷又稱為陷阱中斷,主要用于程序調(diào)試。 (2) 斷點(diǎn)中斷(中斷類型號為3)。調(diào)試程序時可以在一些關(guān)鍵性的地方設(shè)置斷點(diǎn),它相當(dāng)于把一條INT 3 指令插入到程序中,CPU每執(zhí)行到斷點(diǎn)處,INT 3 指令便產(chǎn)生一個中斷,使CPU轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。 第7章 輸入/輸出與中斷 3) 中斷指令I(lǐng)NT n引起的中斷(中斷類型號為n) 程序設(shè)計時,可以用INT n指令來產(chǎn)生軟件中斷,中斷指令的操作數(shù)n給出了中斷類型號,CPU執(zhí)行INT n指令后,會立即產(chǎn)生一個類型號為n的中斷

47、,轉(zhuǎn)入相應(yīng)的中斷處理程序來完成中斷功能。 第7章 輸入/輸出與中斷 2硬件中斷(外部中斷) 8086/8088 CPU有兩條外部中斷請求線NMI(非屏蔽中斷)和INTR(可屏蔽中斷)。 1) 非屏蔽中斷NMI(中斷類型號為2) 整個系統(tǒng)只有一個非屏蔽中斷,它不受IF標(biāo)志位的屏蔽。出現(xiàn)在NMI上的請求信號是上升沿觸發(fā)的,一旦出現(xiàn),CPU將予以響應(yīng)。非屏蔽中斷一般用于緊急故障處理。 第7章 輸入/輸出與中斷 2) 可屏蔽中斷INTR 可屏蔽中斷請求信號從INTR引腳送往CPU,高電平有效,受IF標(biāo)志位屏蔽,IF0時,對于所有從INTR引腳進(jìn)入的中斷請求,CPU均不予響應(yīng);另外,也可以在CPU外部的

48、中斷控制器(8259A)中以及各個I/O接口電路中對某一級中斷或某個中斷源單獨(dú)進(jìn)行屏蔽。 第7章 輸入/輸出與中斷 當(dāng)外設(shè)的中斷請求未被屏蔽,且IF=1,則CPU在當(dāng)前指令周期的最后一個T狀態(tài)去采樣INTR引腳,若有效,CPU予以響應(yīng)。CPU將執(zhí)行兩個連續(xù)的中斷響應(yīng)周期,送出兩個中斷響應(yīng)信號 INTA。第一個響應(yīng)周期,CPU將地址及數(shù)據(jù)總線置高阻;在第二個響應(yīng)周期,外設(shè)向數(shù)據(jù)總線輸送一個字節(jié)的中斷類型號,CPU讀入后,就可在中斷向量表中找到該類型號的中斷服務(wù)程序的入口地址,轉(zhuǎn)入中斷處理。 值得注意的是,對于非屏蔽中斷和軟件中斷,其中斷類型號由CPU內(nèi)部自動提供,不需去執(zhí)行中斷響應(yīng)周期讀取中斷類

49、型號。 第7章 輸入/輸出與中斷 38086/8088中斷源的優(yōu)先級 8086/8088中斷源的優(yōu)先級順序由高到低依次為:軟件中斷(除單步中斷外)、非屏蔽中斷、可屏蔽中斷、單步中斷。 在PC機(jī)系統(tǒng)中,外設(shè)的中斷請求通過中斷控制器8259A連接到CPU的INTR引腳,外設(shè)中斷源的優(yōu)先級別由8259A進(jìn)行管理。 第7章 輸入/輸出與中斷 7.4.2 中斷向量表中斷向量表 中斷向量表是存放中斷向量的一個特定的內(nèi)存區(qū)域。所謂中斷向量,就是中斷服務(wù)程序的入口地址。對于8086/8088系統(tǒng),所有中斷服務(wù)程序的入口地址都存放在中斷向量表中。 8086/8088可以處理256種中斷,每種中斷對應(yīng)一個中斷類型

50、號,每個中斷類型號與一個中斷服務(wù)程序的入口地址相對應(yīng)。每個中斷服務(wù)程序的入口地址占4個存儲單元,其中低地址的兩個單元存放中斷服務(wù)程序入口地址的偏移量(IP);高地址的兩個單元存放中斷服務(wù)程序入口地址的段地址(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中斷入口地址(斷點(diǎn)中斷)類型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使用,使用時,要由用戶自行填入相應(yīng)的中斷服務(wù)程序入口地址。(其中有些中斷類型已經(jīng)有了固定用途,例如,類型21H的中斷已用做DOS的系統(tǒng)功能調(diào)用)。 第7章 輸入/輸出與中斷 由于中斷服務(wù)程序入口地址在中斷向量表中是按中斷類型號順序存放的,因此每個中斷服務(wù)程序入口地址在中斷向量表中的位置可由“中斷類型號4”計算出來。CPU響應(yīng)中斷時,把中斷類型號N乘以4,得到對應(yīng)地址4N(該中斷服務(wù)程序入口地址所占4個單元的第一個單元的地址),然后把由此地址開始的兩個低字節(jié)單元(4N,4N+1)的內(nèi)容裝入IP寄存器,再把兩個高字節(jié)單元(4N+2,4N+3)的

53、內(nèi)容裝入CS寄存器,于是CPU轉(zhuǎn)入中斷類型號為N的中斷服務(wù)程序。 這種采用向量中斷的方法,CPU可直接通過向量表轉(zhuǎn)向相應(yīng)的處理程序,而不需要去逐個檢測和確定中斷源,因而可以大大加快中斷響應(yīng)的速度。 第7章 輸入/輸出與中斷 7.4.3 8086/8088的中斷處理過程的中斷處理過程 FLAGS 入棧NNN完成當(dāng)前指令有內(nèi)部中斷嗎?從指令中或內(nèi)部獲得中斷類型號從外部得到中斷類型號TEMP=1?令TEMPTF調(diào)中斷處理程序YYY有NMI中斷嗎?有INTR中斷嗎?TF1?執(zhí)行下一條指令NNNNY中斷類型號2YIF1?中斷類型號1清IF、TFCS、IP入棧返回斷點(diǎn)FLAGS出棧IP、CS出棧中斷服務(wù)有

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、單步和斷點(diǎn)中斷)以及NMI中斷不需要從數(shù)據(jù)總線上讀取中斷類型碼,而INTR中斷需由CPU讀取中斷類型碼,其中斷類型碼由發(fā)出INTR信號的接口電路提供。 該流程圖還反映出了8086/8088系統(tǒng)中各中斷源優(yōu)先級的高低。 第7章 輸入/輸出與中斷 7.4.4 中斷服務(wù)程序的設(shè)計中斷服務(wù)程序的設(shè)計 中斷服務(wù)程序的一般結(jié)構(gòu)如圖7.20所示。如前所述,若該

55、中斷處理能被更高級別的中斷源中斷,則需加入開中斷指令。在中斷服務(wù)程序的最后,一定要有中斷返回指令,以保證斷點(diǎn)的恢復(fù)。 用戶在設(shè)計中斷服務(wù)程序時要預(yù)先確定一個中斷類型號,不論是采用軟件中斷還是硬件中斷,都只能在系統(tǒng)預(yù)留給用戶的類型號中選擇。 第7章 輸入/輸出與中斷 關(guān)中斷保護(hù)現(xiàn)場開中斷中斷服務(wù)恢復(fù)現(xiàn)場中斷返回圖7.20 中斷服務(wù)程序的一般結(jié)構(gòu) 第7章 輸入/輸出與中斷 1DOS系統(tǒng)功能調(diào)用法系統(tǒng)功能調(diào)用法 功能號:(AH)=25H。 入口參數(shù):(AL)=中斷類型號 (DS)=中斷服務(wù)程序入口地址的段地址 (DX)=中斷服務(wù)程序入口地址的偏移地址 第7章 輸入/輸出與中斷 下面程序段完成中斷類型

56、號為60H的入口地址置入。PUSH DS;保護(hù)DSMOV DX,OFFSET INT60;取服務(wù)程序偏移地址MOV AX,SEG INT60;取服務(wù)程序段地址MOV DS,AXMOV AH,25H;送功能號MOV AL,60H;送中斷類型號INT 21H;DOS功能調(diào)用 POP DS;恢復(fù)DS 第7章 輸入/輸出與中斷 2直接裝入法 用傳送指令直接將中斷服務(wù)程序首地址置入矢量表中。設(shè)中斷類型號為60H(此類型號對應(yīng)的矢量表地址為從00180H開始的四個連續(xù)存儲單元)。程序段如下:XOR AX,AXMOV DS,AXMOV AX,OFFSET INT60MOV DS:0180H,AX;置服務(wù)程序

57、偏移地址MOV AX,SEG INT60 MOV DS:0180H+2,AX;置服務(wù)程序所在代碼段的段地址 第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構(gòu)成兩級中斷機(jī)構(gòu),管理64級中斷。8259A是可編程器件,它所具有的多種中斷優(yōu)先級管理方式可

58、以通過主程序在任何時候進(jìn)行改變或重新組織。 第7章 輸入/輸出與中斷 7.5.2 8259A的內(nèi)部結(jié)構(gòu)及外部引腳的內(nèi)部結(jié)構(gòu)及外部引腳 18259A的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 內(nèi)部總線CAS0D7D0數(shù)據(jù)總線緩沖器控制電路INT讀/寫控制邏輯RDWRA0CS級聯(lián)緩沖/比較器CAS1CAS2EN/SPINTA中斷服務(wù)寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請求寄存器(IRR)中斷屏蔽寄存器(IMR)IR7IR1IR0圖7.21 8259A內(nèi)部結(jié)構(gòu)框圖 第7章 輸入/輸出與中斷 中斷請求寄存器IRR(Interrupt Request Register),8位,接受并鎖存來自IR0IR7的中斷請求信號,當(dāng)

59、IR0IR7上出現(xiàn)某一中斷請求信號時,IRR對應(yīng)位被置1;中斷屏蔽寄存器IMR(Interrupt Mask Register),8位,若IRR中記錄的各級中斷中有任何一級需要屏蔽,只要將IMR的相應(yīng)位置1即可,未被屏蔽的中斷請求進(jìn)入優(yōu)先權(quán)判別器;中斷服務(wù)寄存器ISR(In-Service Register),8位,保存當(dāng)前正在處理的中斷請求,例如,如果ISR的D2=1,表示CPU正在為來自IR2的中斷請求服務(wù);優(yōu)先權(quán)判別器PR(Priority Resolver)能夠?qū)⒏髦袛嗾埱笾袃?yōu)先級最高者選中,并將ISR中相應(yīng)位置1。若某中斷請求正在被處理,8259A外部又有新的中斷請求,則由優(yōu)先權(quán)判別

60、器將新進(jìn)入的中斷請求和當(dāng)前正在處理的中斷進(jìn)行比較,以決定哪一個優(yōu)先級更高。若新的中斷請求比正在處理的中斷級別高,則正在處理的中斷自動被禁止,先處理級別高的中斷,由PR通過控制邏輯向CPU發(fā)出中斷申請INT。 第7章 輸入/輸出與中斷 CPU收到中斷請求后,若IF=1,則CPU完成當(dāng)前指令后,響應(yīng)中斷,即執(zhí)行兩個中斷響應(yīng)總線周期,在 引腳上發(fā)出兩個負(fù)脈沖。8259A收到第一個負(fù)脈沖后,使IRR鎖存功能失效,不接受IR0IR7上的中斷請求信號;直到第二個負(fù)脈沖結(jié)束后,才又使IRR鎖存功能有效,并清除IRR的相應(yīng)位,使ISR的對應(yīng)位置1,以便為優(yōu)先級裁決器以后的裁決提供依據(jù)。收到第二個負(fù)脈沖后,82

61、59A把當(dāng)前中斷的中斷類型號送到D7D0,CPU根據(jù)此類型號進(jìn)入相應(yīng)的中斷服務(wù)程序。在中斷服務(wù)程序結(jié)束時向8259A發(fā)中斷結(jié)束命令,該命令將ISR寄存器的相應(yīng)位清0,中斷處理結(jié)束。 INTA第7章 輸入/輸出與中斷 數(shù)據(jù)總線緩沖器是8259A與系統(tǒng)之間傳送信息的數(shù)據(jù)通道。 讀/寫控制邏輯包含了初始化命令字寄存器和操作命令字寄存器。其功能是確定數(shù)據(jù)總線緩沖器中數(shù)據(jù)的傳輸方向,選擇內(nèi)部的各命令字寄存器。當(dāng)CPU發(fā)讀信號時將8259A的狀態(tài)信息放到數(shù)據(jù)總線上;當(dāng)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進(jìn)行讀/寫操作。 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輸入應(yīng)由低到高,此后保持為高,直到被響應(yīng)。在電平觸發(fā)方式中,IR輸入應(yīng)保持高電平。 INT:8259A向CPU發(fā)出的中斷請求信號,高電平有效,該引腳接

64、CPU的INTR引腳。 INTA:中斷響應(yīng)信號,輸入,接收CPU發(fā)來的中斷響應(yīng)脈沖以通知8259A中斷請求已被響應(yīng),使其將中斷類型號送到數(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對應(yīng)兩個端口地址,一個為偶地址,一個為奇地址,且偶地址小于奇地址。在與8088系統(tǒng)相連時,可直接將該引腳與地址總線的A0連接;與8086系統(tǒng)連接時要特別注意,因為8259A只有8根數(shù)據(jù)線,8086有16根,8086與8259A的所有數(shù)據(jù)傳送都用16位數(shù)據(jù)總線的低8位進(jìn)行。要保證所有傳送都用總線的低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相連,所以,當(dāng)?shù)刂房偩€的A1為0時,8259A認(rèn)為是對偶地址端口進(jìn)行訪問,當(dāng)?shù)刂房偩€的A1為1時,8259A認(rèn)為是對奇地址端口進(jìn)行訪問,從而將兩個本來相鄰的偶地址看成是一奇一偶兩個相鄰地址。這樣,又正好符合了8259A對端口地址的要求。因此,在實際的8086系統(tǒng)中,總是給8259A分配兩個相鄰的偶地址,其中,一個為4的倍數(shù),對應(yīng)于A1=0,A0=0,并使這個地址較低;另一個為2的倍數(shù),對應(yīng)于A1=1,A0=0,并使這個地址較高。 第7章 輸入/輸出與中斷 7.5.3 8259A的工作方式的工作方式 1中斷優(yōu)先級管理方式 1) 全嵌套方式 全嵌套方式也稱固定優(yōu)先級方式。在這種方式下,由IR端引入的中斷請求具有固定的優(yōu)先級,IR0最高,IR7最低。在對8259A初始化后若沒有設(shè)置其他優(yōu)先級方式,則默認(rèn)為全嵌套方式。 第7章 輸入/輸出與中斷 當(dāng)一個

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!