第6章.輸入與輸出中斷_第1頁
第6章.輸入與輸出中斷_第2頁
第6章.輸入與輸出中斷_第3頁
第6章.輸入與輸出中斷_第4頁
第6章.輸入與輸出中斷_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第6章 輸入/輸出與中斷 前面幾章討論了有關(guān)微型計(jì)算機(jī)的前面幾章討論了有關(guān)微型計(jì)算機(jī)的原理與程序設(shè)原理與程序設(shè)計(jì)計(jì)以及以及存儲(chǔ)器系統(tǒng)存儲(chǔ)器系統(tǒng),從這一章開始討論微機(jī)系統(tǒng)的另,從這一章開始討論微機(jī)系統(tǒng)的另一個(gè)重要組成部分一個(gè)重要組成部分輸入和輸出輸入和輸出(I/O)(I/O)。本章首先介紹輸入輸出本章首先介紹輸入輸出接口基本概念接口基本概念、CPUCPU與外與外設(shè)數(shù)據(jù)傳送的方式設(shè)數(shù)據(jù)傳送的方式。然后。然后, ,重點(diǎn)研究重點(diǎn)研究中斷傳送方式及相中斷傳送方式及相關(guān)的技術(shù)關(guān)的技術(shù)。第第6 6章章 輸入輸入/ /輸出與中斷輸出與中斷 6.1 輸入輸出接口概述 6.2 CPU與外設(shè)數(shù)據(jù)傳送的方式6.3 中

2、斷技術(shù)6.4 8086/8088的中斷系統(tǒng)和中斷處理6.1 輸入輸出接口概述6.1.1 CPUCPU與外設(shè)間的連接與外設(shè)間的連接 外設(shè)與計(jì)算機(jī)的連接不能像存儲(chǔ)器那樣直接掛到總線外設(shè)與計(jì)算機(jī)的連接不能像存儲(chǔ)器那樣直接掛到總線(DB(DB、ABAB、CB)CB)上,而必須通過各自的專用接口電路(接口芯片上,而必須通過各自的專用接口電路(接口芯片) )與主機(jī)與主機(jī)連接。其連接示意圖如圖連接。其連接示意圖如圖6.16.1所示。所示。 CPUCPU對(duì)外設(shè)的輸入輸出操作對(duì)外設(shè)的輸入輸出操作類似于存儲(chǔ)器的讀寫操作類似于存儲(chǔ)器的讀寫操作:6.1.2 接口電路的基本結(jié)構(gòu)接口電路的基本結(jié)構(gòu) 接口電路的基本結(jié)構(gòu)同它

3、傳送的信息種類有關(guān)。信息可分接口電路的基本結(jié)構(gòu)同它傳送的信息種類有關(guān)。信息可分為為3 3類:類:數(shù)據(jù)信息;狀態(tài)信息;控制信息數(shù)據(jù)信息;狀態(tài)信息;控制信息。 1.1.數(shù)據(jù)信息數(shù)據(jù)信息 數(shù)據(jù)信息是最基本的一種信息。它包括:數(shù)據(jù)信息是最基本的一種信息。它包括: (1)(1)數(shù)字量數(shù)字量: :通常為通常為8 8位二進(jìn)制數(shù)或位二進(jìn)制數(shù)或ASCIIASCII代碼。代碼。( (2)2)模擬量模擬量: :當(dāng)計(jì)算機(jī)用于檢測(cè)、數(shù)據(jù)采集或控制時(shí),大量當(dāng)計(jì)算機(jī)用于檢測(cè)、數(shù)據(jù)采集或控制時(shí),大量的現(xiàn)場(chǎng)信息是連續(xù)變化的物理量的現(xiàn)場(chǎng)信息是連續(xù)變化的物理量( (如如溫度、壓力、流量、位移、溫度、壓力、流量、位移、速度速度等等)

4、,),經(jīng)傳感器把非電量轉(zhuǎn)換成電量并經(jīng)放大即得到模擬電經(jīng)傳感器把非電量轉(zhuǎn)換成電量并經(jīng)放大即得到模擬電流或電壓流或電壓,這些模擬量,計(jì)算機(jī)不能直接接收和處理,必須經(jīng),這些模擬量,計(jì)算機(jī)不能直接接收和處理,必須經(jīng)過過A AD D(模數(shù))轉(zhuǎn)換,才能輸入計(jì)算機(jī);而計(jì)算機(jī)輸出的數(shù)模數(shù))轉(zhuǎn)換,才能輸入計(jì)算機(jī);而計(jì)算機(jī)輸出的數(shù)字量也必須經(jīng)字量也必須經(jīng)D DA A(數(shù)模)轉(zhuǎn)換后才能去控制執(zhí)行機(jī)構(gòu)。(數(shù)模)轉(zhuǎn)換后才能去控制執(zhí)行機(jī)構(gòu)。 (3) (3) 開關(guān)量:開關(guān)量:是一些是一些“0 0”或或“1 1”兩個(gè)狀態(tài)的量兩個(gè)狀態(tài)的量, ,用一位用一位“0 0”或或“1 1”二進(jìn)制數(shù)表示。一臺(tái)字長為二進(jìn)制數(shù)表示。一臺(tái)字長為

5、8 8位的微機(jī)一次輸入或輸出位的微機(jī)一次輸入或輸出可控制可控制8 8個(gè)這類物理量。個(gè)這類物理量。 2. 2. 狀態(tài)信息狀態(tài)信息 狀態(tài)信息是反映外設(shè)當(dāng)前所處工作狀態(tài)的信息,以作為狀態(tài)信息是反映外設(shè)當(dāng)前所處工作狀態(tài)的信息,以作為CPUCPU與外設(shè)間可靠交換數(shù)據(jù)的條件。當(dāng)輸入時(shí)與外設(shè)間可靠交換數(shù)據(jù)的條件。當(dāng)輸入時(shí), ,它告知它告知CPU:CPU:有有關(guān)輸入設(shè)備的數(shù)據(jù)是否準(zhǔn)備(關(guān)輸入設(shè)備的數(shù)據(jù)是否準(zhǔn)備(Ready=1?Ready=1?);輸出時(shí),它告知);輸出時(shí),它告知CPU:CPU:輸出設(shè)備是否空閑(輸出設(shè)備是否空閑(Busy=0?Busy=0?)。)。CPUCPU是通過接口電路來是通過接口電路來掌

6、握輸入輸出設(shè)備的狀態(tài),以決定可否輸入或輸出數(shù)據(jù)。掌握輸入輸出設(shè)備的狀態(tài),以決定可否輸入或輸出數(shù)據(jù)。 3.3. 控制信息控制信息 它用于控制外設(shè)的它用于控制外設(shè)的啟動(dòng)或停止啟動(dòng)或停止。接口電路基本結(jié)構(gòu)及。接口電路基本結(jié)構(gòu)及其連接如圖其連接如圖6.26.2所示。所示。 (1) 3(1) 3種信息(數(shù)據(jù)、狀態(tài)、控制)的性質(zhì)不同種信息(數(shù)據(jù)、狀態(tài)、控制)的性質(zhì)不同, ,應(yīng)通過不應(yīng)通過不同的端口分別傳送。同的端口分別傳送。如數(shù)據(jù)輸入如數(shù)據(jù)輸入/ /輸出寄存器輸出寄存器( (緩沖器)、狀態(tài)緩沖器)、狀態(tài)寄存器與命令控制寄存器各占一個(gè)端口,每個(gè)端口都有自己的寄存器與命令控制寄存器各占一個(gè)端口,每個(gè)端口都有自

7、己的端口地址,故能端口地址,故能用不同的端口地址來區(qū)分不同性質(zhì)的信息。用不同的端口地址來區(qū)分不同性質(zhì)的信息。 (2) (2) 在用輸入輸出指令來尋址外設(shè)在用輸入輸出指令來尋址外設(shè)( (實(shí)際尋址端口)的實(shí)際尋址端口)的CPUCPU中,中,外設(shè)的狀態(tài)作為一種輸入數(shù)據(jù)外設(shè)的狀態(tài)作為一種輸入數(shù)據(jù),而,而CPUCPU的控制命令的控制命令, ,是作為一種輸出是作為一種輸出數(shù)據(jù)數(shù)據(jù), ,從而可通過數(shù)據(jù)總線來分別傳送。從而可通過數(shù)據(jù)總線來分別傳送。 (3) (3) 端口地址由端口地址由CPUCPU地址總線的低地址總線的低8 8位或低位或低1616位如在(位如在(80868086用用DXDX間接尋址外設(shè)端口時(shí)間

8、接尋址外設(shè)端口時(shí)) )地址信息來確定地址信息來確定,CPUCPU根據(jù)根據(jù)I IO O指令指令提供的端口地址來尋址端口提供的端口地址來尋址端口, ,然后同外設(shè)交換信息。然后同外設(shè)交換信息。 接口電路的基本結(jié)構(gòu)安排的特點(diǎn):接口電路的基本結(jié)構(gòu)安排的特點(diǎn): 6.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式 為了實(shí)現(xiàn)為了實(shí)現(xiàn)CPUCPU與外設(shè)之間的數(shù)據(jù)傳送與外設(shè)之間的數(shù)據(jù)傳送, ,通常采用以下通常采用以下3 3種種I/OI/O傳送方式:傳送方式:程序傳送方式,中斷傳送,直接存儲(chǔ)器存取傳程序傳送方式,中斷傳送,直接存儲(chǔ)器存取傳送送6.2.1 程序傳送程序傳送程序傳送是指程序傳送是指CPUCPU與外設(shè)間的數(shù)據(jù)交換在程

9、序控制(即與外設(shè)間的數(shù)據(jù)交換在程序控制(即ININ或或OUTOUT指令控制指令控制) )下進(jìn)行。下進(jìn)行。 6.2.1.1 6.2.1.1 無條件傳送(又稱同步傳送)無條件傳送(又稱同步傳送) 這種傳送方式只對(duì)固定的外設(shè)(如這種傳送方式只對(duì)固定的外設(shè)(如開關(guān)、繼電器、開關(guān)、繼電器、7 7段顯段顯示器、機(jī)械式傳感器等簡單外設(shè)示器、機(jī)械式傳感器等簡單外設(shè))在規(guī)定的時(shí)間用)在規(guī)定的時(shí)間用ININ或或OUTOUT指指令來進(jìn)行信息的令來進(jìn)行信息的輸入或輸出輸入或輸出, ,其實(shí)質(zhì)是其實(shí)質(zhì)是用程序來定時(shí)同步傳送用程序來定時(shí)同步傳送數(shù)據(jù)數(shù)據(jù)。對(duì)少量數(shù)據(jù)傳送來說,它是最省時(shí)間的一種傳送方法,。對(duì)少量數(shù)據(jù)傳送來說,

10、它是最省時(shí)間的一種傳送方法,適用于適用于各類巡回檢測(cè)和過程控制各類巡回檢測(cè)和過程控制。 一般,這些外設(shè)隨時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備一般,這些外設(shè)隨時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備, ,而無須而無須檢測(cè)其狀態(tài)。檢測(cè)其狀態(tài)。 這里先要弄清有關(guān)這里先要弄清有關(guān)輸入緩沖與輸出鎖存輸入緩沖與輸出鎖存的基本概念。的基本概念。 輸入數(shù)據(jù)輸入數(shù)據(jù)時(shí)時(shí), ,因簡單外設(shè)輸入數(shù)據(jù)的保持時(shí)間相對(duì)于因簡單外設(shè)輸入數(shù)據(jù)的保持時(shí)間相對(duì)于CPUCPU的接收速度來說較長,故輸入數(shù)據(jù)通常不用加鎖存器的接收速度來說較長,故輸入數(shù)據(jù)通常不用加鎖存器來鎖存來鎖存, ,而直接使用三態(tài)緩沖器與而直接使用三態(tài)緩沖器與CPUCPU數(shù)據(jù)總線相連即可。數(shù)據(jù)總線

11、相連即可。 輸出數(shù)據(jù)輸出數(shù)據(jù)時(shí)時(shí), ,一般都需要鎖存器將要輸出的數(shù)據(jù)保持一般都需要鎖存器將要輸出的數(shù)據(jù)保持一段時(shí)間一段時(shí)間, ,其長短和外設(shè)的動(dòng)作相適應(yīng)。鎖存時(shí),在鎖存其長短和外設(shè)的動(dòng)作相適應(yīng)。鎖存時(shí),在鎖存允許端允許端CE=1(CE=1(為無效電平為無效電平) )時(shí)時(shí), ,數(shù)據(jù)總線上的新數(shù)據(jù)不能進(jìn)數(shù)據(jù)總線上的新數(shù)據(jù)不能進(jìn)入鎖存器。入鎖存器。只有當(dāng)確知外設(shè)已取走只有當(dāng)確知外設(shè)已取走CPUCPU上次送入鎖存器的上次送入鎖存器的數(shù)據(jù)數(shù)據(jù), ,方能在方能在CE=0CE=0(為有效電平)時(shí)將新數(shù)據(jù)再送入鎖存(為有效電平)時(shí)將新數(shù)據(jù)再送入鎖存器保留。器保留。 輸入輸出輸入輸出( (無條件程序傳送無條件程

12、序傳送) )原理圖如圖原理圖如圖6.36.3所示。所示。RD 在輸入時(shí),假定來自外設(shè)的數(shù)據(jù)已在輸入時(shí),假定來自外設(shè)的數(shù)據(jù)已輸入至三態(tài)緩沖器輸入至三態(tài)緩沖器,于是當(dāng)于是當(dāng)CPUCPU執(zhí)行執(zhí)行ININ指令指令時(shí),所指定的端口地址經(jīng)地址總線的時(shí),所指定的端口地址經(jīng)地址總線的低低1616位或低位或低8 8位送至地址譯碼器,位送至地址譯碼器,CPUCPU進(jìn)入了輸入周期進(jìn)入了輸入周期, ,選中選中的地址信號(hào)和的地址信號(hào)和M/IOM/IO(以及(以及RDRD)相)相“與與”后后, ,去選通輸入三態(tài)緩去選通輸入三態(tài)緩沖器,把沖器,把外設(shè)的數(shù)據(jù)與數(shù)據(jù)總線連通并讀入外設(shè)的數(shù)據(jù)與數(shù)據(jù)總線連通并讀入CPUCPU。RD

13、在輸出時(shí),假定在輸出時(shí),假定CPUCPU的輸出信息經(jīng)數(shù)據(jù)總線已送到輸?shù)妮敵鲂畔⒔?jīng)數(shù)據(jù)總線已送到輸出鎖存器的輸入端;出鎖存器的輸入端;當(dāng)當(dāng)CPUCPU執(zhí)行執(zhí)行OUTOUT指令時(shí)指令時(shí), ,端口的地址由端口的地址由地址總線的低位地址送至地址譯碼器,地址總線的低位地址送至地址譯碼器,CPUCPU進(jìn)入了輸出進(jìn)入了輸出周期周期, ,所選中的地址信號(hào)和所選中的地址信號(hào)和M/IOM/IO(以及(以及WR WR 信號(hào))相信號(hào))相“與與”后,去選通鎖存器,把輸出信息送至鎖存器保留后,去選通鎖存器,把輸出信息送至鎖存器保留, ,由它再由它再把信息通過外設(shè)輸出。把信息通過外設(shè)輸出。RD6.2.1.2 6.2.1.2

14、 程序查詢傳送程序查詢傳送( (條件傳送條件傳送異步傳送異步傳送) ) 它也是一種它也是一種程序傳送程序傳送,但與前述無條件的同步傳送不同,但與前述無條件的同步傳送不同, ,是是有條件的異步傳送有條件的異步傳送。此條件是。此條件是: :在執(zhí)行輸入在執(zhí)行輸入(IN(IN指令指令) )或輸或輸出出(OUT(OUT指令指令) )前,要先查詢接口中狀態(tài)寄存器的狀態(tài)前,要先查詢接口中狀態(tài)寄存器的狀態(tài)。輸入。輸入時(shí)時(shí), ,由該狀態(tài)信息指示要輸入的數(shù)據(jù)是否已由該狀態(tài)信息指示要輸入的數(shù)據(jù)是否已“準(zhǔn)備就緒準(zhǔn)備就緒”;而而輸出時(shí)輸出時(shí), ,又由它指示輸出設(shè)備是否又由它指示輸出設(shè)備是否“空閑空閑”,由此條件來決,由

15、此條件來決定定執(zhí)行輸入或輸出。執(zhí)行輸入或輸出。 讀入的數(shù)據(jù)是讀入的數(shù)據(jù)是位位, ,而而讀入的狀態(tài)信息往往是位,讀入的狀態(tài)信息往往是位,如圖如圖6.66.6所示。所以所示。所以, ,不同的不同的外設(shè)其狀態(tài)信息可以使用同外設(shè)其狀態(tài)信息可以使用同一個(gè)端口,但只要使用不同一個(gè)端口,但只要使用不同的位就行。的位就行。 這種查詢輸入方式的程這種查詢輸入方式的程序流程圖如圖序流程圖如圖6.76.7所示。所示。 查詢輸入部分的程序:查詢輸入部分的程序: POLL:POLL:IN IN AL, AL,STATUSPORTSTATUSPORT ; ;讀狀態(tài)端口的信息讀狀態(tài)端口的信息 TESTTEST AL,80

16、AL,80 ; ;設(shè)設(shè)“準(zhǔn)備就緒準(zhǔn)備就緒”(READY)(READY)信信息息 在在D7D7位位 JEJE POLL ; POLL ;未未“準(zhǔn)備就緒準(zhǔn)備就緒”,則循環(huán)再,則循環(huán)再查查 ININ AL, AL,DATA_PORTDATA_PORT ; ;已已“準(zhǔn)備就緒準(zhǔn)備就緒”(READY=1),(READY=1),則則 讀入數(shù)據(jù)讀入數(shù)據(jù). 程序查詢輸出程序查詢輸出 同樣的同樣的, ,在輸出時(shí)也必須了解外設(shè)的狀態(tài),看外設(shè)是否在輸出時(shí)也必須了解外設(shè)的狀態(tài),看外設(shè)是否有有“空閑空閑”( (即外設(shè)數(shù)鎖存器已空,或未正處于輸出狀態(tài)即外設(shè)數(shù)鎖存器已空,或未正處于輸出狀態(tài)),),若有若有 “空閑空閑”,則執(zhí)

17、行輸出指令;否則就等待再查。因此,則執(zhí)行輸出指令;否則就等待再查。因此,接接口電路中也必須要有狀態(tài)信息的端口。口電路中也必須要有狀態(tài)信息的端口。 查詢式輸出的端口信與程序流程圖分別如圖所示。查詢式輸出的端口信與程序流程圖分別如圖所示。 查詢輸出部分的程序:查詢輸出部分的程序: POLL: IN AL,STATUS_PORT ;POLL: IN AL,STATUS_PORT ;查狀態(tài)端口中的狀態(tài)信息查狀態(tài)端口中的狀態(tài)信息D7 D7 TEST AL TEST AL,80H 80H JNE POLL JNE POLL; ;D7;D71 1即忙線即忙線1,1,則循環(huán)再查則循環(huán)再查 MOV ALMOV

18、AL,STORE STORE ; ;否則否則, ,外設(shè)空閑外設(shè)空閑, ,由內(nèi)存讀取數(shù)據(jù)由內(nèi)存讀取數(shù)據(jù) OUT DATA_PORT,AL ;OUT DATA_PORT,AL ;輸出到輸出到DATADATA地址端口單元地址端口單元 其中其中, ,STATUSSTATUS和和TATATATA分別為狀態(tài)端口和數(shù)據(jù)端口的符號(hào)址;分別為狀態(tài)端口和數(shù)據(jù)端口的符號(hào)址;STORESTORE為待輸出為待輸出數(shù)據(jù)的內(nèi)存單元的符號(hào)地址。數(shù)據(jù)的內(nèi)存單元的符號(hào)地址。 總結(jié)上述程序查詢輸入總結(jié)上述程序查詢輸入/ /輸出傳送方式的執(zhí)行過程輸出傳送方式的執(zhí)行過程, , 其步驟是:其步驟是: ( ()CPU)CPU從從I/OI/

19、O接口的狀態(tài)端口中讀入所尋址的外設(shè)接口的狀態(tài)端口中讀入所尋址的外設(shè)的狀態(tài)信息的狀態(tài)信息“READYREADY”或或“BUSYBUSY”。 ( () )根據(jù)讀入的狀態(tài)信息進(jìn)行判斷。程序查詢輸入根據(jù)讀入的狀態(tài)信息進(jìn)行判斷。程序查詢輸入時(shí),若狀態(tài)信息時(shí),若狀態(tài)信息READYREADY0 0,則外設(shè)數(shù)據(jù)未準(zhǔn)備好,則外設(shè)數(shù)據(jù)未準(zhǔn)備好,CPUCPU繼繼續(xù)等待查詢續(xù)等待查詢, ,直至直至READYREADY,外設(shè)已準(zhǔn)備好數(shù)據(jù),外設(shè)已準(zhǔn)備好數(shù)據(jù), ,執(zhí)行下執(zhí)行下一步操作一步操作; ;程序查詢輸出時(shí),若狀態(tài)信息程序查詢輸出時(shí),若狀態(tài)信息BUSYBUSY,則外,則外設(shè)正在設(shè)正在“忙忙”,CPU,CPU繼續(xù)等待查詢

20、繼續(xù)等待查詢, ,直至外設(shè)直至外設(shè)“空閑空閑”,BUSY,BUSY0 0時(shí),執(zhí)行下一步操作。時(shí),執(zhí)行下一步操作。( () )執(zhí)行輸入執(zhí)行輸入/ /輸出指令,進(jìn)行輸出指令,進(jìn)行I/OI/O傳送。完成數(shù)據(jù)傳送。完成數(shù)據(jù)的輸入輸出,同時(shí)將外設(shè)的狀態(tài)信息復(fù)位,一個(gè)的輸入輸出,同時(shí)將外設(shè)的狀態(tài)信息復(fù)位,一個(gè)位的數(shù)據(jù)傳送結(jié)束。位的數(shù)據(jù)傳送結(jié)束。6.2.2 中斷傳送 程序查詢傳送方式不僅要降低程序查詢傳送方式不僅要降低CPUCPU的運(yùn)行效率的運(yùn)行效率, ,而且而且, ,在一般實(shí)時(shí)控制系統(tǒng)中,往往在一般實(shí)時(shí)控制系統(tǒng)中,往往有數(shù)十乃至數(shù)百個(gè)外設(shè)有數(shù)十乃至數(shù)百個(gè)外設(shè), ,由由于它們的工作速度不同,要求于它們的工作

21、速度不同,要求CPUCPU為它們服務(wù)是隨機(jī)的為它們服務(wù)是隨機(jī)的, ,有有些要求很急迫,若用查詢方式除浪費(fèi)大量等待查詢時(shí)間外些要求很急迫,若用查詢方式除浪費(fèi)大量等待查詢時(shí)間外, ,還很難使每一個(gè)外設(shè)都能工作在最佳工作狀態(tài)。還很難使每一個(gè)外設(shè)都能工作在最佳工作狀態(tài)。 為了提高為了提高CPUCPU執(zhí)行有效程序的工作效率和提高系統(tǒng)中執(zhí)行有效程序的工作效率和提高系統(tǒng)中多臺(tái)外設(shè)的工作效率,可以讓多臺(tái)外設(shè)的工作效率,可以讓外設(shè)處于能主動(dòng)申請(qǐng)中斷的外設(shè)處于能主動(dòng)申請(qǐng)中斷的工作方式工作方式, ,這在有多個(gè)外設(shè)及速度不匹配時(shí),尤為重要。這在有多個(gè)外設(shè)及速度不匹配時(shí),尤為重要。 所謂中斷是外設(shè)或其他中斷源中止所謂中

22、斷是外設(shè)或其他中斷源中止CPUCPU當(dāng)前正在執(zhí)行當(dāng)前正在執(zhí)行的程序的程序, ,而轉(zhuǎn)向?yàn)樵撏庠O(shè)服務(wù)而轉(zhuǎn)向?yàn)樵撏庠O(shè)服務(wù)( (如完成它與如完成它與CPUCPU之間傳送一個(gè)之間傳送一個(gè)數(shù)據(jù))的程序數(shù)據(jù))的程序, ,一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工作。一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工作。 中斷傳送方式的好處是:大大提高了中斷傳送方式的好處是:大大提高了CPUCPU的工作效率。的工作效率。 6.2.3 直接存儲(chǔ)器存?。ǎ﹤魉?利用程序利用程序中斷傳送中斷傳送方式,雖然可以提高的工作方式,雖然可以提高的工作率,但它仍需由通過程序來傳送數(shù)據(jù)率,但它仍需由通過程序來傳送數(shù)據(jù), ,并在處理中并在處理中 斷時(shí),還要

23、斷時(shí),還要“保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)”和和“恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)”, ,而這兩部分操作而這兩部分操作的的 程序段又與數(shù)據(jù)傳送沒有直接關(guān)系,卻要占用一定時(shí)間,程序段又與數(shù)據(jù)傳送沒有直接關(guān)系,卻要占用一定時(shí)間,這對(duì)于高速外設(shè)以及成組交換數(shù)據(jù)的場(chǎng)合,就顯得太慢了。這對(duì)于高速外設(shè)以及成組交換數(shù)據(jù)的場(chǎng)合,就顯得太慢了。 (Direct Memory AccessDirect Memory Access)方式或稱為數(shù)據(jù)通方式或稱為數(shù)據(jù)通道方式是一種由專門的硬件電路執(zhí)行交換的傳送方道方式是一種由專門的硬件電路執(zhí)行交換的傳送方式,它式,它讓外設(shè)接口可直接與內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送讓外設(shè)接口可直接與內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送,而

24、,而不必經(jīng)過,這樣就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類的額外操不必經(jīng)過,這樣就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類的額外操作,可實(shí)現(xiàn)對(duì)存儲(chǔ)器的直接存取。這種專門的硬件電路就作,可實(shí)現(xiàn)對(duì)存儲(chǔ)器的直接存取。這種專門的硬件電路就是是DMADMA控制器控制器, ,簡稱為簡稱為。圖。圖6.126.12給出了給出了80868086用用DMADMA方式傳送單個(gè)數(shù)據(jù)方式傳送單個(gè)數(shù)據(jù)( (輸出數(shù)據(jù)輸出數(shù)據(jù)) )的示意圖。的示意圖。6.3 中斷技術(shù) 中斷中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù),它的是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù),它的出現(xiàn)給計(jì)算機(jī)結(jié)構(gòu)與應(yīng)用帶來了新的突破。出現(xiàn)給計(jì)算機(jī)結(jié)構(gòu)與應(yīng)用帶來了新的突破。 6.3.1 中斷概

25、述中斷概述 1. 1. 中斷與中斷源中斷與中斷源 如前所述如前所述, ,使使CPUCPU暫停運(yùn)行原來的程序而應(yīng)更為急迫事件的暫停運(yùn)行原來的程序而應(yīng)更為急迫事件的需要轉(zhuǎn)向去執(zhí)行為中斷源服務(wù)的程序需要轉(zhuǎn)向去執(zhí)行為中斷源服務(wù)的程序( (稱為中斷服務(wù)程序稱為中斷服務(wù)程序) ),待該,待該程序處理完后,再返回運(yùn)行原程序,此即中斷程序處理完后,再返回運(yùn)行原程序,此即中斷( (或中斷技術(shù)或中斷技術(shù)) )。所所謂中斷源,即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來源。謂中斷源,即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來源。通常中斷源有以下幾種通常中斷源有以下幾種 : (1)(1)外部設(shè)備外部設(shè)備: :一般中、慢

26、速外設(shè)如鍵盤一般中、慢速外設(shè)如鍵盤、行式打印機(jī)、行式打印機(jī)、A/DA/D轉(zhuǎn)換器等,在完成自身的操作后,向轉(zhuǎn)換器等,在完成自身的操作后,向CPUCPU發(fā)出中斷請(qǐng)求發(fā)出中斷請(qǐng)求, ,要求要求CPUCPU為它服務(wù)。對(duì)于高速的外設(shè)如磁盤或磁帶,它可以向?yàn)樗?wù)。對(duì)于高速的外設(shè)如磁盤或磁帶,它可以向CPUCPU提出總提出總線請(qǐng)求,進(jìn)行線請(qǐng)求,進(jìn)行DMADMA傳送。傳送。 (2) (2) 實(shí)時(shí)時(shí)鐘:實(shí)時(shí)時(shí)鐘:在自動(dòng)控制中,常遇到在自動(dòng)控制中,常遇到定時(shí)檢測(cè)與控制,這定時(shí)檢測(cè)與控制,這時(shí)可采用外部時(shí)鐘電路時(shí)可采用外部時(shí)鐘電路, ,并可編程控制其定時(shí)間隔并可編程控制其定時(shí)間隔。當(dāng)需要定時(shí)。當(dāng)需要定時(shí)的時(shí)刻,的

27、時(shí)刻,CPUCPU發(fā)出命令發(fā)出命令, ,啟動(dòng)時(shí)鐘電路開始計(jì)時(shí)啟動(dòng)時(shí)鐘電路開始計(jì)時(shí), ,待定時(shí)已到,時(shí)待定時(shí)已到,時(shí)鐘電路就發(fā)中斷申請(qǐng),由鐘電路就發(fā)中斷申請(qǐng),由CPUCPU轉(zhuǎn)向去執(zhí)行服務(wù)程序。轉(zhuǎn)向去執(zhí)行服務(wù)程序。 (3) (3) 故障源:故障源:計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如發(fā)生運(yùn)算發(fā)生運(yùn)算出錯(cuò)(溢出出錯(cuò)(溢出) )、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及越限報(bào)警等意外事件越限報(bào)警等意外事件時(shí),這些裝置都能使時(shí),這些裝置都能使CPUCPU中斷,進(jìn)行相應(yīng)的中斷,進(jìn)行相應(yīng)的中斷處理。中斷處理。 以上以上3 3種屬于隨機(jī)

28、中斷源。由隨機(jī)引起的中斷種屬于隨機(jī)中斷源。由隨機(jī)引起的中斷, ,稱為強(qiáng)迫中斷稱為強(qiáng)迫中斷。 (4) (4) 為調(diào)試程序設(shè)置的中斷源:為調(diào)試程序設(shè)置的中斷源:這是這是CPUCPU執(zhí)行了特殊指令執(zhí)行了特殊指令( (自自陷指令)或由硬件電路引起的中斷陷指令)或由硬件電路引起的中斷, ,主要是供用戶調(diào)試程序時(shí)而主要是供用戶調(diào)試程序時(shí)而采取的檢查手段。如采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)試斷點(diǎn)設(shè)置、單步調(diào)試等。這些都要由中斷系等。這些都要由中斷系統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為自愿中斷自愿中斷。2. 中斷系統(tǒng)及其功能 中斷系統(tǒng)是指為中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與軟實(shí)現(xiàn)中斷而設(shè)置

29、的各種硬件與軟件件。中斷系統(tǒng)應(yīng)具有下列功能:。中斷系統(tǒng)應(yīng)具有下列功能: 1 1) 能響應(yīng)中斷、處理中斷與返回能響應(yīng)中斷、處理中斷與返回 主程序主程序繼繼續(xù)續(xù)執(zhí)執(zhí)行行主主程程序序執(zhí)執(zhí)行行中中斷斷程程序序響應(yīng)中斷響應(yīng)中斷保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)返回主程序返回主程序斷點(diǎn)斷點(diǎn) 2 2) 能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì) 通常,在系統(tǒng)中有通常,在系統(tǒng)中有多個(gè)中斷源多個(gè)中斷源時(shí),有可能出現(xiàn)兩個(gè)或兩個(gè)以時(shí),有可能出現(xiàn)兩個(gè)或兩個(gè)以上中斷源同時(shí)提出中斷請(qǐng)求的情況。這時(shí),要求上中斷源同時(shí)提出中斷請(qǐng)求的情況。這時(shí),要求CPUCPU能根據(jù)中斷源能根據(jù)中斷源被事先確定的優(yōu)先權(quán)由高到低依次處理。被事先確定的優(yōu)先權(quán)

30、由高到低依次處理。 3 3) 高級(jí)中斷源能中斷低級(jí)的中斷高級(jí)中斷源能中斷低級(jí)的中斷 3. 3. 中斷的應(yīng)用中斷的應(yīng)用 中斷除了能解決快速中斷除了能解決快速CPUCPU與中、慢速外設(shè)速度不匹配與中、慢速外設(shè)速度不匹配的矛盾以提高主機(jī)的工作效率之外的矛盾以提高主機(jī)的工作效率之外, ,在實(shí)現(xiàn)在實(shí)現(xiàn)分時(shí)操作分時(shí)操作、實(shí)實(shí)時(shí)處理、故障處理、多機(jī)連接以及人機(jī)聯(lián)系時(shí)處理、故障處理、多機(jī)連接以及人機(jī)聯(lián)系等方面均有廣等方面均有廣泛的應(yīng)用。泛的應(yīng)用。6.3.2 單個(gè)中斷源的中斷 簡單的簡單的中斷過程中斷過程應(yīng)包括:應(yīng)包括:中斷請(qǐng)求、中斷響應(yīng)、中斷處理中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回等環(huán)節(jié)。和中斷返回等環(huán)節(jié)。

31、 6.3.2.1 中斷源向中斷源向CPUCPU發(fā)中斷請(qǐng)求信號(hào)的條件發(fā)中斷請(qǐng)求信號(hào)的條件 中斷源是通過其接口電路向中斷源是通過其接口電路向CPUCPU發(fā)中斷請(qǐng)求信號(hào)的發(fā)中斷請(qǐng)求信號(hào)的, ,該信號(hào)該信號(hào)能否發(fā)給能否發(fā)給CPUCPU,應(yīng)滿足下列兩個(gè)條件:,應(yīng)滿足下列兩個(gè)條件: 1. 1. 設(shè)置中斷請(qǐng)求觸發(fā)器設(shè)置中斷請(qǐng)求觸發(fā)器 每一個(gè)中斷源,要能向每一個(gè)中斷源,要能向CPUCPU發(fā)中斷請(qǐng)求信號(hào)發(fā)中斷請(qǐng)求信號(hào), ,首先應(yīng)能由它首先應(yīng)能由它的接口電路提出中斷請(qǐng)求,且該請(qǐng)求能保持著的接口電路提出中斷請(qǐng)求,且該請(qǐng)求能保持著, ,直至直至CPUCPU接受并接受并響應(yīng)該中斷請(qǐng)求后響應(yīng)該中斷請(qǐng)求后, ,才能清除它。

32、為此才能清除它。為此, ,要求在每個(gè)中斷源的接要求在每個(gè)中斷源的接口電路中設(shè)置一個(gè)中斷請(qǐng)求觸發(fā)器口電路中設(shè)置一個(gè)中斷請(qǐng)求觸發(fā)器A,A,由它產(chǎn)生中斷請(qǐng)求,即由它產(chǎn)生中斷請(qǐng)求,即QA=1QA=1。如。如圖圖6.156.15所示。所示。 2 2設(shè)置中斷屏蔽觸發(fā)器設(shè)置中斷屏蔽觸發(fā)器 中斷源的中斷請(qǐng)求能否允許以中斷請(qǐng)求信號(hào)中斷源的中斷請(qǐng)求能否允許以中斷請(qǐng)求信號(hào)( (如如INTR)INTR)發(fā)向發(fā)向CPU,CPU,應(yīng)能受應(yīng)能受CPUCPU的控制,以增加處理中斷的靈活性,為的控制,以增加處理中斷的靈活性,為此,在接口電路中,還要增設(shè)一個(gè)此,在接口電路中,還要增設(shè)一個(gè)中斷屏蔽觸發(fā)器中斷屏蔽觸發(fā)器B B。當(dāng)允。

33、當(dāng)允許中斷時(shí),由許中斷時(shí),由CPUCPU控制使其控制使其QBQB端為端為0(0(不屏蔽不屏蔽) ),QBQB端為端為1 1,于,于是,與門開啟是,與門開啟, ,中斷請(qǐng)求中斷請(qǐng)求(QA)(QA)被允許并經(jīng)過與門以中斷請(qǐng)求被允許并經(jīng)過與門以中斷請(qǐng)求信號(hào)信號(hào)INTRINTR發(fā)向發(fā)向CPUCPU;反之,當(dāng)禁止中斷時(shí);反之,當(dāng)禁止中斷時(shí), ,由由CPUCPU控制其控制其QBQB端端置置1(1(屏蔽屏蔽) ),QBQB端為端為0 0,與門關(guān)閉,即使有中斷請(qǐng)求產(chǎn)生,與門關(guān)閉,即使有中斷請(qǐng)求產(chǎn)生, ,但但并不能以并不能以INTRINTR發(fā)向發(fā)向CPUCPU。 若有多個(gè)中斷源若有多個(gè)中斷源, ,例如例如8 8個(gè)

34、外設(shè)個(gè)外設(shè), ,則可將則可將8 8個(gè)外設(shè)的中斷個(gè)外設(shè)的中斷屏蔽觸發(fā)器組成一個(gè)端口屏蔽觸發(fā)器組成一個(gè)端口, ,用輸出指令用輸出指令( (即利用即利用WRWR有效信號(hào)有效信號(hào)) )來控制它們的狀態(tài)來控制它們的狀態(tài)。6.3.2.2 CPU響應(yīng)中斷的條件 當(dāng)中斷源向當(dāng)中斷源向CPUCPU發(fā)出發(fā)出INTRINTR信號(hào)后,信號(hào)后,CPUCPU若要響應(yīng)它,若要響應(yīng)它,還應(yīng)滿足下列條件。還應(yīng)滿足下列條件。 1 1CPUCPU開放中斷開放中斷 CPUCPU采樣到采樣到INTRINTR信號(hào)后是否響應(yīng)它信號(hào)后是否響應(yīng)它, ,由由CPUCPU內(nèi)設(shè)置的中內(nèi)設(shè)置的中斷允許觸發(fā)器斷允許觸發(fā)器( (如如IFF)IFF)的狀態(tài)

35、決定的狀態(tài)決定, ,如如圖圖6.166.16所示所示. .當(dāng)當(dāng)IFF= IFF= 1(1(即開放中斷簡稱開中即開放中斷簡稱開中) )時(shí)時(shí),CPU,CPU才能響應(yīng)中斷才能響應(yīng)中斷; ;若若IFF=0(IFF=0(即即關(guān)閉中斷簡稱關(guān)中關(guān)閉中斷簡稱關(guān)中) )時(shí)時(shí), ,即使有即使有INTRINTR信號(hào),因與門信號(hào),因與門1 1被被IFFIFF的的Q Q端關(guān)閉端關(guān)閉,CPU,CPU也不響應(yīng)它。也不響應(yīng)它。IFFIFF的狀態(tài)可以由專門設(shè)置的開中與關(guān)中指令來改變,的狀態(tài)可以由專門設(shè)置的開中與關(guān)中指令來改變,即執(zhí)行開中指令時(shí),使即執(zhí)行開中指令時(shí),使IFF=1,IFF=1,即即CPUCPU開中,于是,與門開中,

36、于是,與門1 1的的輸出端置輸出端置1(1(即允許中斷即允許中斷););而而執(zhí)行關(guān)中指令時(shí),經(jīng)或門執(zhí)行關(guān)中指令時(shí),經(jīng)或門2 2使使IFF=0IFF=0,即,即CPUCPU關(guān)中,于是關(guān)中,于是, ,禁止中斷禁止中斷。此外,。此外,當(dāng)當(dāng)CPUCPU復(fù)位或復(fù)位或響應(yīng)中斷后,也能使響應(yīng)中斷后,也能使CPUCPU關(guān)中。關(guān)中。2 CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷 在在CPUCPU開中時(shí),若有中斷請(qǐng)求開中時(shí),若有中斷請(qǐng)求信號(hào)發(fā)至信號(hào)發(fā)至CPU,CPU,它也并不立即響應(yīng)。它也并不立即響應(yīng)。 而而只有當(dāng)現(xiàn)行指令運(yùn)行到最后一個(gè)只有當(dāng)現(xiàn)行指令運(yùn)行到最后一個(gè)機(jī)器周期的最后一個(gè)機(jī)器周期的最后一個(gè)T T狀態(tài)時(shí)狀態(tài)時(shí), ,才

37、采樣才采樣INTRINTR信號(hào)信號(hào);若有此信號(hào),;若有此信號(hào),則把與門的允許中斷輸出端置則把與門的允許中斷輸出端置1 1,于是,于是,CPUCPU進(jìn)入中斷響應(yīng)周期。進(jìn)入中斷響應(yīng)周期。6.3.2.3 CPU響應(yīng)中斷及處理過程 當(dāng)滿足上述條件后,當(dāng)滿足上述條件后,CPUCPU就響應(yīng)中斷,轉(zhuǎn)入中斷周期,完成就響應(yīng)中斷,轉(zhuǎn)入中斷周期,完成下列幾步操作:下列幾步操作: 1 1關(guān)中斷關(guān)中斷 CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,在發(fā)出中斷響應(yīng)信號(hào)在發(fā)出中斷響應(yīng)信號(hào)( (在在8086/80888086/8088中為中為INTA)INTA)的同時(shí)的同時(shí), ,內(nèi)部自動(dòng)地內(nèi)部自動(dòng)地( (由硬件由硬件) )實(shí)現(xiàn)關(guān)中

38、斷實(shí)現(xiàn)關(guān)中斷, ,以免在響應(yīng)中斷后處理以免在響應(yīng)中斷后處理當(dāng)前中斷時(shí)又被新的中斷源中斷當(dāng)前中斷時(shí)又被新的中斷源中斷, ,以至破壞當(dāng)前中斷服務(wù)的現(xiàn)場(chǎng)。以至破壞當(dāng)前中斷服務(wù)的現(xiàn)場(chǎng)。2 2保留斷點(diǎn)保留斷點(diǎn) CPUCPU響應(yīng)中斷后,響應(yīng)中斷后,立即封鎖立即封鎖PC+1(PC+1(此即斷點(diǎn)地址此即斷點(diǎn)地址),),且把此且把此PCPC值值壓棧保護(hù),以備中斷處理完畢后,壓棧保護(hù),以備中斷處理完畢后,CPUCPU能返回?cái)帱c(diǎn)處繼續(xù)運(yùn)行主能返回?cái)帱c(diǎn)處繼續(xù)運(yùn)行主程序。程序。 3 3保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) 在在CPUCPU處理中斷服務(wù)程序時(shí),處理中斷服務(wù)程序時(shí),有可能用到各寄存器有可能用到各寄存器, ,從從而改變它們?cè)谶\(yùn)

39、主程序時(shí)所暫存的中間結(jié)果而改變它們?cè)谶\(yùn)主程序時(shí)所暫存的中間結(jié)果,這就破壞這就破壞了原主程序中的現(xiàn)場(chǎng)信息。了原主程序中的現(xiàn)場(chǎng)信息。為使中斷服務(wù)程序不影響主程為使中斷服務(wù)程序不影響主程序的正常運(yùn)行,故要把主程序運(yùn)行到斷點(diǎn)處時(shí)的有關(guān)寄存序的正常運(yùn)行,故要把主程序運(yùn)行到斷點(diǎn)處時(shí)的有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)壓棧保護(hù)起來。器的內(nèi)容和標(biāo)志位的狀態(tài)壓棧保護(hù)起來。4 4給出中斷入口給出中斷入口( (地址地址) ),轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序8086/80888086/8088是由中斷源提供中斷類型號(hào)是由中斷源提供中斷類型號(hào), ,并根據(jù)中斷類并根據(jù)中斷類型號(hào)在中斷向量表中取得中斷服務(wù)程序

40、的起始地址。型號(hào)在中斷向量表中取得中斷服務(wù)程序的起始地址。 在中斷服務(wù)程序完成后,還要在中斷服務(wù)程序完成后,還要執(zhí)行下述執(zhí)行下述5 5、6 6兩步操作。兩步操作。 5 5恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) 把被保留在堆棧中的各有關(guān)寄存把被保留在堆棧中的各有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)從堆棧中彈器的內(nèi)容和標(biāo)志位的狀態(tài)從堆棧中彈出出, ,送回送回CPUCPU中它們?cè)瓉淼奈恢?。中它們?cè)瓉淼奈恢谩?這個(gè)操作是在中斷服務(wù)程序中用這個(gè)操作是在中斷服務(wù)程序中用POPPOP指令來完成的。指令來完成的。 6 6開中斷與返回開中斷與返回 在中斷服務(wù)程序的最后在中斷服務(wù)程序的最后, ,要開中斷要開中斷(以便(以便CPUCPU能響應(yīng)新

41、的中斷請(qǐng)求能響應(yīng)新的中斷請(qǐng)求) )和安和安排一條返回指令,將堆棧內(nèi)保存的斷排一條返回指令,將堆棧內(nèi)保存的斷點(diǎn)點(diǎn)PCPC值彈出值彈出, ,送回至送回至PC,CPUPC,CPU就恢復(fù)到斷就恢復(fù)到斷點(diǎn)處繼續(xù)運(yùn)行。點(diǎn)處繼續(xù)運(yùn)行。上述過程如右圖所示。上述過程如右圖所示。 6.3.3 6.3.3 向量中斷向量中斷 所謂所謂向量中斷(向量中斷(Vectored InterruptVectored Interrupt),),是指通過中斷向是指通過中斷向量進(jìn)入中斷服務(wù)程序的一種方法量進(jìn)入中斷服務(wù)程序的一種方法;而中斷向量則是用來提供中斷而中斷向量則是用來提供中斷入口地址的一個(gè)地址指針(即入口地址的一個(gè)地址指針(

42、即CSCS:IPIP)。例如。例如8086/8088 CPU8086/8088 CPU的的中斷系統(tǒng)就是采用這種向量中斷。中斷系統(tǒng)就是采用這種向量中斷。 6.3.4 中斷優(yōu)先權(quán)中斷優(yōu)先權(quán) 以上討論了只有一個(gè)中斷源的最簡單的情況。實(shí)際的以上討論了只有一個(gè)中斷源的最簡單的情況。實(shí)際的系統(tǒng)中,具有多個(gè)中斷源系統(tǒng)中,具有多個(gè)中斷源, ,而而CPUCPU的可屏蔽中斷請(qǐng)求線往往的可屏蔽中斷請(qǐng)求線往往只有一條。如何解決多個(gè)中斷源同時(shí)請(qǐng)求中斷而只有一根只有一條。如何解決多個(gè)中斷源同時(shí)請(qǐng)求中斷而只有一根中斷請(qǐng)求線的矛盾呢中斷請(qǐng)求線的矛盾呢? ?這就要求這就要求CPUCPU按多個(gè)中斷源的優(yōu)先權(quán)按多個(gè)中斷源的優(yōu)先權(quán)由

43、高至低依次來響應(yīng)中斷申請(qǐng)。同時(shí)由高至低依次來響應(yīng)中斷申請(qǐng)。同時(shí), ,當(dāng)當(dāng)CPUCPU正在處理中斷正在處理中斷時(shí),還要能響應(yīng)更高級(jí)的中斷申請(qǐng),而屏蔽掉同級(jí)或低級(jí)時(shí),還要能響應(yīng)更高級(jí)的中斷申請(qǐng),而屏蔽掉同級(jí)或低級(jí)的中斷申請(qǐng)。的中斷申請(qǐng)。CPU CPU 可以通過軟件查詢技術(shù)或硬件排隊(duì)電路可以通過軟件查詢技術(shù)或硬件排隊(duì)電路兩種方法來實(shí)現(xiàn)按中斷優(yōu)先權(quán)對(duì)多個(gè)中斷源的管理,也有兩種方法來實(shí)現(xiàn)按中斷優(yōu)先權(quán)對(duì)多個(gè)中斷源的管理,也有專門用于協(xié)助專門用于協(xié)助CPU CPU 按中斷優(yōu)先權(quán)處理多個(gè)中斷源的中斷控按中斷優(yōu)先權(quán)處理多個(gè)中斷源的中斷控制芯片,如制芯片,如8259A8259A芯片。芯片。作業(yè):作業(yè):2,3,9

44、6.4 8086/8088的中斷系統(tǒng)和中斷處理 本節(jié)將主要闡述本節(jié)將主要闡述8086/80888086/8088的中斷系統(tǒng)及其中斷處理的的中斷系統(tǒng)及其中斷處理的全過程。全過程。6.4.1 8086/80886.4.1 8086/8088的中斷系統(tǒng)的中斷系統(tǒng) 8086/80888086/8088有一個(gè)簡要、靈活而多用的中斷系統(tǒng),它采有一個(gè)簡要、靈活而多用的中斷系統(tǒng),它采用中斷向量結(jié)構(gòu),使每個(gè)不同的中斷都可以通過給定一個(gè)用中斷向量結(jié)構(gòu),使每個(gè)不同的中斷都可以通過給定一個(gè)特定的特定的中斷類型號(hào)中斷類型號(hào)( (或中斷類型碼或中斷類型碼) )供供CPUCPU識(shí)別識(shí)別, ,來處理多達(dá)來處理多達(dá)256256

45、種類型的中斷。這些中斷可以來自外部,即由硬件產(chǎn)種類型的中斷。這些中斷可以來自外部,即由硬件產(chǎn)生生, ,也可以來自內(nèi)部,即由軟件(中斷指令)產(chǎn)生,或者也可以來自內(nèi)部,即由軟件(中斷指令)產(chǎn)生,或者滿足某些特定條件滿足某些特定條件( (陷阱陷阱) )后引發(fā)后引發(fā)CPUCPU中斷。中斷。6.4.1.1 6.4.1.1 外部中斷外部中斷 8086/8088 CPU8086/8088 CPU有兩條引腳供外部中斷源請(qǐng)求中斷有兩條引腳供外部中斷源請(qǐng)求中斷: :一條是高一條是高電平有效的可屏蔽中斷電平有效的可屏蔽中斷INTRINTR; ;另一條是正跳變有效的非屏蔽中斷另一條是正跳變有效的非屏蔽中斷NMINMI

46、。 . .可屏蔽中斷可屏蔽中斷 可屏蔽中斷是由用戶定義的外部硬件中斷。當(dāng)可屏蔽中斷是由用戶定義的外部硬件中斷。當(dāng)8086/8088CPU8086/8088CPU的的INTRINTR引腳上出現(xiàn)一高電平有效請(qǐng)求信號(hào)時(shí)引腳上出現(xiàn)一高電平有效請(qǐng)求信號(hào)時(shí), ,它它必須保持到當(dāng)前必須保持到當(dāng)前指令的結(jié)束指令的結(jié)束。這是因?yàn)?。這是因?yàn)镃PUCPU只在每條指令的最后一個(gè)時(shí)鐘周期才只在每條指令的最后一個(gè)時(shí)鐘周期才對(duì)對(duì)INTRINTR引腳的狀態(tài)進(jìn)行采樣,如果引腳的狀態(tài)進(jìn)行采樣,如果CPUCPU采樣到有可屏蔽中斷請(qǐng)求采樣到有可屏蔽中斷請(qǐng)求信號(hào)信號(hào)INTRINTR產(chǎn)生產(chǎn)生, ,它是否響應(yīng)此中斷請(qǐng)求信號(hào)還要取決于標(biāo)志寄

47、存它是否響應(yīng)此中斷請(qǐng)求信號(hào)還要取決于標(biāo)志寄存器的中斷允許標(biāo)志位器的中斷允許標(biāo)志位IFIF的狀態(tài)。的狀態(tài)。若若IF=0IF=0,此時(shí),此時(shí)CPUCPU是處于關(guān)中斷是處于關(guān)中斷狀態(tài)狀態(tài), ,則不響應(yīng)則不響應(yīng)INTR;INTR;若若IF=1IF=1,則,則CPUCPU是處于開中斷狀態(tài),將響應(yīng)是處于開中斷狀態(tài),將響應(yīng)INTRINTR,并通過,并通過INTAINTA引腳向產(chǎn)生引腳向產(chǎn)生INTRINTR的設(shè)備接口的設(shè)備接口( (中斷源中斷源) )發(fā)回響應(yīng)發(fā)回響應(yīng)信號(hào)信號(hào), ,啟動(dòng)中斷過程。啟動(dòng)中斷過程。 . . 非屏蔽中斷非屏蔽中斷 當(dāng)當(dāng)8086/8088 CPU8086/8088 CPU的的NMINMI

48、引腳上出現(xiàn)一上升沿的邊沿觸引腳上出現(xiàn)一上升沿的邊沿觸發(fā)有效請(qǐng)求信號(hào)時(shí),它將由發(fā)有效請(qǐng)求信號(hào)時(shí),它將由CPUCPU內(nèi)部的鎖存器將其鎖存起內(nèi)部的鎖存器將其鎖存起來。來。8086/80888086/8088要求要求NMINMI上的請(qǐng)求脈沖的有效寬度(高電平上的請(qǐng)求脈沖的有效寬度(高電平的持續(xù)時(shí)間)的持續(xù)時(shí)間)大于兩個(gè)時(shí)鐘周期大于兩個(gè)時(shí)鐘周期。一旦此中斷請(qǐng)求信號(hào)產(chǎn)。一旦此中斷請(qǐng)求信號(hào)產(chǎn)生,不管標(biāo)志位生,不管標(biāo)志位IFIF的狀態(tài)如何,即使在關(guān)中斷(的狀態(tài)如何,即使在關(guān)中斷(IF=0IF=0)的)的情況下,情況下,CPUCPU也能響應(yīng)它。也能響應(yīng)它。由于由于NMINMI比比INTRINTR引腳上產(chǎn)生的任何

49、中斷請(qǐng)求的級(jí)別都引腳上產(chǎn)生的任何中斷請(qǐng)求的級(jí)別都高高,因此,因此, ,若在指令執(zhí)行過程中若在指令執(zhí)行過程中,INTR,INTR和和NMINMI引腳上同時(shí)都引腳上同時(shí)都有中斷請(qǐng)求信號(hào),則有中斷請(qǐng)求信號(hào),則CPUCPU將首先響應(yīng)將首先響應(yīng)NMINMI引腳上的中斷請(qǐng)引腳上的中斷請(qǐng)求。求。IntelIntel公司在設(shè)計(jì)公司在設(shè)計(jì)8086/80888086/8088芯片時(shí),已將芯片時(shí),已將NMINMI的中斷的中斷類型號(hào)預(yù)先定義為類型類型號(hào)預(yù)先定義為類型2,2,所以所以,CPU,CPU響應(yīng)非屏蔽中斷時(shí)響應(yīng)非屏蔽中斷時(shí), ,不不要求外部向要求外部向CPUCPU提供中斷類型號(hào)提供中斷類型號(hào),CPU,CPU在總

50、線上也不發(fā)在總線上也不發(fā)INTAINTA信號(hào)。信號(hào)。6.4.1.2 內(nèi)部中斷內(nèi)部中斷 . .除法出錯(cuò)中斷除法出錯(cuò)中斷類型類型0 0 當(dāng)執(zhí)行當(dāng)執(zhí)行DIVsDIVs(除法)指令時(shí),若發(fā)現(xiàn)除數(shù)為(除法)指令時(shí),若發(fā)現(xiàn)除數(shù)為0 0或商數(shù)超過了或商數(shù)超過了寄存器所能表達(dá)的范圍寄存器所能表達(dá)的范圍, ,則立即產(chǎn)生一個(gè)類型為則立即產(chǎn)生一個(gè)類型為0 0的內(nèi)部中斷,的內(nèi)部中斷,CPUCPU轉(zhuǎn)向除法出錯(cuò)的中斷服務(wù)程序。它是優(yōu)先級(jí)最高的一種內(nèi)部轉(zhuǎn)向除法出錯(cuò)的中斷服務(wù)程序。它是優(yōu)先級(jí)最高的一種內(nèi)部中斷。中斷。 . .溢出中斷溢出中斷類型類型4 4若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位置若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位置

51、1 1(OF=1OF=1), ,則在則在執(zhí)行溢出中斷(執(zhí)行溢出中斷(INTOINTO)指令時(shí),將引起類型)指令時(shí),將引起類型4 4的內(nèi)部中斷的內(nèi)部中斷,CPU,CPU就可以轉(zhuǎn)入對(duì)溢出錯(cuò)誤進(jìn)行處理的中斷服務(wù)程序。就可以轉(zhuǎn)入對(duì)溢出錯(cuò)誤進(jìn)行處理的中斷服務(wù)程序。若若OF=0 OF=0 時(shí),時(shí),則本指令執(zhí)行空操作,即此指令不起作用,程序執(zhí)行下一條指令則本指令執(zhí)行空操作,即此指令不起作用,程序執(zhí)行下一條指令。INTOINTO指令常常緊跟在算術(shù)運(yùn)算指令之后,以便在該指令執(zhí)指令常常緊跟在算術(shù)運(yùn)算指令之后,以便在該指令執(zhí)行產(chǎn)生溢出時(shí)由行產(chǎn)生溢出時(shí)由INTOINTO指令進(jìn)行特殊的處理。指令進(jìn)行特殊的處理。與除法出

52、錯(cuò)中斷不同,與除法出錯(cuò)中斷不同,出現(xiàn)溢出狀態(tài)時(shí)不會(huì)由上一條指令自動(dòng)產(chǎn)生中斷,必須由出現(xiàn)溢出狀態(tài)時(shí)不會(huì)由上一條指令自動(dòng)產(chǎn)生中斷,必須由INTOINTO指指令明確地規(guī)定溢出中斷。應(yīng)當(dāng)說明的是,在溢出中斷服令明確地規(guī)定溢出中斷。應(yīng)當(dāng)說明的是,在溢出中斷服務(wù)程序中,無需保存狀態(tài)標(biāo)志寄存器的內(nèi)容(務(wù)程序中,無需保存狀態(tài)標(biāo)志寄存器的內(nèi)容(PSWPSW),因?yàn)椋驗(yàn)镃PUCPU在中斷響應(yīng)時(shí)序中能自動(dòng)完成這一操作。在中斷響應(yīng)時(shí)序中能自動(dòng)完成這一操作。 . . 單步中斷單步中斷類型類型1 1 8086/8088 CPU8086/8088 CPU的狀態(tài)標(biāo)志寄存器中有一個(gè)跟蹤(陷的狀態(tài)標(biāo)志寄存器中有一個(gè)跟蹤(陷阱

53、)標(biāo)志位阱)標(biāo)志位TFTF。當(dāng)。當(dāng)TFTF被置位(被置位(TF1TF1)時(shí),)時(shí),8086/80888086/8088處于單處于單步工作方式,即步工作方式,即CPUCPU每執(zhí)行完一條指令后就自動(dòng)地產(chǎn)生一每執(zhí)行完一條指令后就自動(dòng)地產(chǎn)生一個(gè)類型個(gè)類型1 1的內(nèi)部中斷,程序控制將轉(zhuǎn)入單步中斷服務(wù)程序。的內(nèi)部中斷,程序控制將轉(zhuǎn)入單步中斷服務(wù)程序。CPUCPU響應(yīng)單步中斷后將自動(dòng)把狀態(tài)標(biāo)志壓入堆棧響應(yīng)單步中斷后將自動(dòng)把狀態(tài)標(biāo)志壓入堆棧, ,然后清除然后清除TFTF和和IFIF標(biāo)志位標(biāo)志位, ,使使CPUCPU在單步中斷服務(wù)程序引入以后退出單在單步中斷服務(wù)程序引入以后退出單步工作方式步工作方式, ,在正常

54、運(yùn)行方式下執(zhí)行單步中斷服務(wù)程序。在正常運(yùn)行方式下執(zhí)行單步中斷服務(wù)程序。單步中斷服務(wù)程序結(jié)束時(shí),再通過執(zhí)行一條單步中斷服務(wù)程序結(jié)束時(shí),再通過執(zhí)行一條IRETIRET中斷返回中斷返回指令指令, ,將將CSCS與與IPIP的內(nèi)容退棧并恢復(fù)狀態(tài)標(biāo)志寄存器的內(nèi)容的內(nèi)容退棧并恢復(fù)狀態(tài)標(biāo)志寄存器的內(nèi)容, ,使程序返回到斷點(diǎn)處使程序返回到斷點(diǎn)處。由于在中斷時(shí)。由于在中斷時(shí)TFTF位被保護(hù)起來了,位被保護(hù)起來了,中斷返回時(shí)中斷返回時(shí)TFTF位又被重新恢復(fù)(位又被重新恢復(fù)(TF=1TF=1), ,所以所以CPUCPU在中斷返在中斷返回以后仍然處于單步工作方式。回以后仍然處于單步工作方式。 . . 斷點(diǎn)中斷斷點(diǎn)中斷

55、類型類型3 38086/80888086/8088指令系統(tǒng)中有一條設(shè)置程序斷點(diǎn)的單字節(jié)指令系統(tǒng)中有一條設(shè)置程序斷點(diǎn)的單字節(jié)中斷指令(中斷指令(INT 3),INT 3),執(zhí)行該指令以后就會(huì)產(chǎn)生一個(gè)中斷類執(zhí)行該指令以后就會(huì)產(chǎn)生一個(gè)中斷類型為型為3 3的內(nèi)部中斷的內(nèi)部中斷,CPU,CPU將轉(zhuǎn)向執(zhí)行一個(gè)斷點(diǎn)中斷服務(wù)程序?qū)⑥D(zhuǎn)向執(zhí)行一個(gè)斷點(diǎn)中斷服務(wù)程序, ,以便進(jìn)行一些特殊的處理。以便進(jìn)行一些特殊的處理。 斷點(diǎn)中斷指令主要用于軟件調(diào)試中斷點(diǎn)中斷指令主要用于軟件調(diào)試中, ,程序員可用它在程序員可用它在程序中設(shè)置一個(gè)程序斷點(diǎn)。程序中設(shè)置一個(gè)程序斷點(diǎn)。一般一般, ,斷點(diǎn)可以設(shè)置在程序的斷點(diǎn)可以設(shè)置在程序的任何

56、位置,但在實(shí)際調(diào)試程序時(shí)任何位置,但在實(shí)際調(diào)試程序時(shí), ,只需在一些關(guān)鍵性的地只需在一些關(guān)鍵性的地方設(shè)置斷點(diǎn)。例如方設(shè)置斷點(diǎn)。例如, ,可以用這種方法顯示寄存器或存儲(chǔ)器可以用這種方法顯示寄存器或存儲(chǔ)器的內(nèi)容,檢查程序運(yùn)行的結(jié)果是否正確。由斷點(diǎn)指令的內(nèi)容,檢查程序運(yùn)行的結(jié)果是否正確。由斷點(diǎn)指令I(lǐng)NTINT是一個(gè)單字節(jié)指令是一個(gè)單字節(jié)指令, ,所以借助該指令可以很容易地在程序所以借助該指令可以很容易地在程序的任何地方設(shè)置斷點(diǎn)。的任何地方設(shè)置斷點(diǎn)。 . . 用戶定義的軟件中斷用戶定義的軟件中斷類型類型n n 在在8086/80888086/8088的內(nèi)部中斷中,有一個(gè)可由用戶定義的內(nèi)部中斷中,有一個(gè)

57、可由用戶定義的雙字節(jié)的中斷指令的雙字節(jié)的中斷指令I(lǐng)NT nINT n,其第,其第1 1個(gè)字節(jié)為個(gè)字節(jié)為INTINT的操作的操作碼,第碼,第2 2個(gè)字節(jié)個(gè)字節(jié)n n是它的中斷類型號(hào)。中斷類型號(hào)是它的中斷類型號(hào)。中斷類型號(hào)n n由程由程序員編程時(shí)給定,用它指出相應(yīng)的中斷向量及其中斷序員編程時(shí)給定,用它指出相應(yīng)的中斷向量及其中斷服務(wù)程序的入口地址。服務(wù)程序的入口地址。 6.4.1.3內(nèi)部中斷的特點(diǎn)(1 1)內(nèi)部中斷由一條)內(nèi)部中斷由一條INT nINT n指令直接產(chǎn)生。指令直接產(chǎn)生。(2 2)除單步中斷以外,所有內(nèi)部中斷都不能被屏蔽。)除單步中斷以外,所有內(nèi)部中斷都不能被屏蔽。(3 3)由于內(nèi)部中斷

58、不必通過查詢外部來獲得中斷類型號(hào),)由于內(nèi)部中斷不必通過查詢外部來獲得中斷類型號(hào),所以沒有中斷響應(yīng)機(jī)器總線周期。所以沒有中斷響應(yīng)機(jī)器總線周期。(4 4)硬、軟中斷的優(yōu)先級(jí):除了單步中斷以外,所有內(nèi)部)硬、軟中斷的優(yōu)先級(jí):除了單步中斷以外,所有內(nèi)部中斷的優(yōu)先權(quán)都比外部中斷的優(yōu)先權(quán)高。中斷的優(yōu)先權(quán)都比外部中斷的優(yōu)先權(quán)高。(5 5)在使用斷點(diǎn)中斷()在使用斷點(diǎn)中斷(INT 3INT 3)來逐段地調(diào)試,可用中斷服)來逐段地調(diào)試,可用中斷服務(wù)程序在屏幕上顯示有關(guān)的各種信息。如果所有斷點(diǎn)處要?jiǎng)?wù)程序在屏幕上顯示有關(guān)的各種信息。如果所有斷點(diǎn)處要求打印的信息都相同,就可以一律使用單字節(jié)的斷點(diǎn)中斷求打印的信息都相

59、同,就可以一律使用單字節(jié)的斷點(diǎn)中斷INT 3INT 3指令;但若要打印的信息不同,則指令中就需使用指令;但若要打印的信息不同,則指令中就需使用其他中斷類型號(hào)。圖其他中斷類型號(hào)。圖6.206.20說明了在用雙字節(jié)的說明了在用雙字節(jié)的INT nINT n指令指令調(diào)試程序時(shí),通過調(diào)試程序時(shí),通過分別設(shè)置了分別設(shè)置了5 5、6 6、7 7這這3 3個(gè)中斷類型號(hào)個(gè)中斷類型號(hào),使之轉(zhuǎn)向不同的中斷服務(wù)入口地址,分別打印出不同的信使之轉(zhuǎn)向不同的中斷服務(wù)入口地址,分別打印出不同的信息。息。(6 6)為避免由外設(shè)硬件產(chǎn)生)為避免由外設(shè)硬件產(chǎn)生INTRINTR中斷請(qǐng)求信號(hào)和中斷請(qǐng)求信號(hào)和提供中斷類型號(hào)的麻煩,可以用

60、軟件中斷指令提供中斷類型號(hào)的麻煩,可以用軟件中斷指令I(lǐng)NT INT nnnn來模擬外設(shè)提供的硬件中斷,方法是使來模擬外設(shè)提供的硬件中斷,方法是使nnnn類型類型號(hào)與該外設(shè)的類型號(hào)相同,從而可控制程序轉(zhuǎn)入號(hào)與該外設(shè)的類型號(hào)相同,從而可控制程序轉(zhuǎn)入該外設(shè)的中斷服務(wù)程序。該外設(shè)的中斷服務(wù)程序。6.4.1.46.4.1.4中斷向量表中斷向量表 8086/80888086/8088的中斷系統(tǒng)為了管理中斷的方便的中斷系統(tǒng)為了管理中斷的方便將將256256個(gè)中斷向量制成了一張中斷向量表,中斷向個(gè)中斷向量制成了一張中斷向量表,中斷向量表如圖量表如圖6.216.21所示。圖所示。圖6.216.21中給出了與中斷

溫馨提示

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

評(píng)論

0/150

提交評(píng)論