接口技術(shù) 輸入輸出接口概述_第1頁(yè)
接口技術(shù) 輸入輸出接口概述_第2頁(yè)
接口技術(shù) 輸入輸出接口概述_第3頁(yè)
接口技術(shù) 輸入輸出接口概述_第4頁(yè)
接口技術(shù) 輸入輸出接口概述_第5頁(yè)
已閱讀5頁(yè),還剩118頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1輸入輸出接口概述2輸入輸出接口(教材8.1節(jié)) I/O接口概述 查詢傳送方式及其接口 中斷傳送方式及其接口 DMA傳送方式3I/O接口概述為什么需要I/O接口(電路)? 微機(jī)的外部設(shè)備多種多樣 工作原理、驅(qū)動(dòng)方式、信息格式、以及工作速度方面彼此差別很大 它們不能與CPU直接相連 必須經(jīng)過中間電路再與系統(tǒng)相連 這部分電路被稱為I/O接口電路多種外設(shè)多種外設(shè)4I/O接口概述(續(xù)1)什么是I/O接口(電路)? I/O接口是位于系統(tǒng)與外設(shè)間、用來協(xié)助完成數(shù)據(jù)傳送和控制任務(wù)的邏輯電路 PC機(jī)系統(tǒng)板的可編程接口芯片、I/O總線槽的電路板(適配器)都是接口電路5I/O接口概述(續(xù)2)什么是微機(jī)接口技術(shù)?

2、處理微機(jī)系統(tǒng)與外設(shè)間聯(lián)系的技術(shù) 注意其軟硬結(jié)合的特點(diǎn) 根據(jù)應(yīng)用系統(tǒng)的需要,使用和構(gòu)造相應(yīng)的接口電路,編制配套的接口程序,支持和連接有關(guān)的設(shè)備6I/O接口的主要功能 對(duì)輸入輸出數(shù)據(jù)進(jìn)行緩沖和鎖存輸出接口有鎖存環(huán)節(jié),輸入接口有緩沖環(huán)節(jié)實(shí)際的電路常用:輸出鎖存緩沖環(huán)節(jié),輸入鎖存緩沖環(huán)節(jié) 對(duì)信號(hào)的形式和數(shù)據(jù)的格式進(jìn)行變換微機(jī)直接處理:數(shù)字量、開關(guān)量、脈沖量 對(duì)I/O端口進(jìn)行尋址 與CPU和I/O設(shè)備進(jìn)行聯(lián)絡(luò)7I/O接口的典型結(jié)構(gòu)控制總線控制總線CB地址總線地址總線ABI/O接口電路接口電路數(shù)據(jù)數(shù)據(jù)控制控制狀態(tài)狀態(tài)數(shù)據(jù)總線數(shù)據(jù)總線DBCPU外設(shè)外設(shè)控制寄存器控制寄存器狀態(tài)寄存器狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄

3、存器1. 接口電路的內(nèi)部結(jié)構(gòu)2. 接口電路的外部特性3. 接口電路芯片的分類4. 接口電路的可編程性81. 接口電路的內(nèi)部結(jié)構(gòu) CPU與外設(shè)主要有數(shù)據(jù)、狀態(tài)和控制信息需要相互交換,于是從應(yīng)用角度看內(nèi)部: 數(shù)據(jù)寄存器 保存外設(shè)給CPU和CPU發(fā)往外設(shè)的數(shù)據(jù) 狀態(tài)寄存器 保存外設(shè)或接口電路的狀態(tài) 控制寄存器 保存CPU給外設(shè)或接口電路的命令92. 接口電路的外部特性 主要體現(xiàn)在引腳上,分成兩側(cè)信號(hào)面向CPU一側(cè)的信號(hào): 用于與CPU連接 主要是數(shù)據(jù)、地址和控制信號(hào)面向外設(shè)一側(cè)的信號(hào): 用于與外設(shè)連接 提供的信號(hào)五花八門 功能定義、時(shí)序及有效電平等差異較大103. 接口電路芯片的分類 接口電路核心部

4、分往往是一塊或數(shù)塊大規(guī)模集成電路芯片(接口芯片): 通用接口芯片 支持通用的數(shù)據(jù)輸入輸出和控制的接口芯片 如:并行接口芯片、串行接口芯片等。 面向外設(shè)的專用接口芯片 針對(duì)某種外設(shè)設(shè)計(jì)、與該種外設(shè)接口 如:顯示接口電路、磁盤驅(qū)動(dòng)接口電路等。 面向微機(jī)系統(tǒng)的專用接口芯片 與CPU和系統(tǒng)配套使用,以增強(qiáng)其總體功能 如:8259A、8237、8253等。114. 接口電路的可編程性 許多接口電路具有多種功能和工作方式,可以通過編程的方法選定其中一種 接口需要進(jìn)行物理連接,還需要編寫接口軟件 接口軟件有兩類: 初始化程序段設(shè)定芯片工作方式等 數(shù)據(jù)交換程序段管理、控制、驅(qū)動(dòng)外設(shè),負(fù)責(zé)外設(shè)和系統(tǒng)間信息交換1

5、2I/O端口的編址接口電路占用的I/O端口有兩類編排形式 I/O端口單獨(dú)編址 I/O地址空間獨(dú)立于存儲(chǔ)地址空間 如8086/8088 I/O端口與存儲(chǔ)器統(tǒng)一編址 它們共享一個(gè)地址空間 如M68000理解端口理解端口13I/O端口單獨(dú)編址 優(yōu)點(diǎn): I/O端口的地址空間獨(dú)立 控制和地址譯碼電路相對(duì)簡(jiǎn)單 專門的I/O指令使程序清晰易讀 缺點(diǎn): I/O指令沒有存儲(chǔ)器指令豐富內(nèi)存內(nèi)存空間空間I/O空間空間FFFFF0FFFF80 x86采用采用I/O端口獨(dú)立編址端口獨(dú)立編址14I/O端口與存儲(chǔ)器統(tǒng)一編址 優(yōu)點(diǎn): 不需要專門的I/O指令 I/O數(shù)據(jù)存取與存儲(chǔ)器數(shù)據(jù)存取一樣靈活 缺點(diǎn): I/O端口要占去部分

6、存儲(chǔ)器地址空間 程序不易閱讀(不易分清訪存和訪問外設(shè))內(nèi)存內(nèi)存部分部分I/O部分部分存儲(chǔ)器空間存儲(chǔ)器空間00000FFFFF158088/8086的I/O端口 8088/8086只能通過輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port),即I/O地址16端口(PORT) 端口泛指I/O地址,通常對(duì)應(yīng)寄存器 一個(gè)接口電路可以具有多個(gè)I/O端口,每個(gè)端口用來保存和交換不同的信息 數(shù)據(jù)寄存器、狀態(tài)寄存器和控制寄存器占有的I/O地址常依次被稱為數(shù)據(jù)端口、狀態(tài)端口和控制端口,用于保存數(shù)據(jù)、狀態(tài)和控制信息 輸入、輸出端口可以是同一個(gè)I/O地址一定要理解一定要理解 8086用于尋址外設(shè)端口

7、的地址線為16條,端口最多為21665536(64K)個(gè),端口號(hào)為0000H FFFFH 每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù)18I/O尋址方式 8088/8086的端口有64K個(gè),無需分段,設(shè)計(jì)有兩種尋址方式v直接尋址:只用于尋址00H FFH前256個(gè)端口,操作數(shù)i8表示端口號(hào)v間接尋址:可用于尋址全部64K個(gè)端口,DX寄存器的值就是端口號(hào) 對(duì)大于FFH的端口只能采用間接尋址方式19數(shù)據(jù)交換方式 如果輸入輸出一個(gè)字節(jié),利用AL寄存器 如果輸入輸出一個(gè)字,利用AX寄存器 輸入一個(gè)字,實(shí)際上是從連續(xù)兩個(gè)端口輸入兩個(gè)字節(jié),分別送AL(對(duì)應(yīng)低地址端口)和AH(對(duì)應(yīng)高地址端口) 輸出一個(gè)字,實(shí)際上是將

8、AL(對(duì)應(yīng)低地址端口)和AH(對(duì)應(yīng)高地址端口)兩個(gè)字節(jié)的內(nèi)容輸出給連續(xù)兩個(gè)端口20I/O指令指令功功 能能說說 明明IN AL,PORTIN AX,PORTIN AL,DXIN AX,DXOUT PORT,ALOUT PORT,AXOUT DX,ALOUT DX,AXAL(PORT)AH,AL(PORT+1,PORT)AL(DX)AH,AL(DX+1,DX)(PORT)AL(PORT+1,PORT)AH,AL(DX)AL(DX+1,DX)AH,AL單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪

9、問雙字節(jié)訪問 8086/8088的I/O指令21IN指令(從20H、21H端口輸入一個(gè)字);方法1:字量輸入,直接尋址in ax,20h;方法2:字量輸入,間接尋址mov dx,20hin ax,dx;方法方法3:字節(jié)輸入,直接尋址字節(jié)輸入,直接尋址in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;方法方法4:字節(jié)輸入,字節(jié)輸入,間間接尋址接尋址mov dx,21hmov dx,21hin al,dxin al,dxmov ah,almov ah,aldec dxdec dxin al,dxin al,dx22OUT指令(向300H端

10、口輸出一個(gè)字節(jié));唯一的方法:間接尋址,字節(jié)量輸出mov al,bvar ;bvar是字節(jié)變量mov dx,300hout dx,al23I/O地址的譯碼常見的I/O地址的譯碼(或稱端口地址選擇)方法有三種: 門電路組合法門電路組合法 譯碼器譯碼法譯碼器譯碼法 比較器比較法比較器比較法 門電路組合法是最簡(jiǎn)單的一種端口地址選擇方法,它采用常見的邏輯門電路,比如與門、或門、非門等作為基本的組合元件。 一般端口都是指寄存器、鎖存器或緩沖器,這些器件都有一個(gè)芯片選擇信號(hào),簡(jiǎn)稱片選信號(hào),多數(shù)是低電平有效,當(dāng)然,也有一些芯片沒有片選信號(hào),而是有使能端,或脈沖控制端,總之是使器件產(chǎn)生動(dòng)作的控制端。 端口地址

11、選擇的目的,是當(dāng)?shù)刂肪€上出現(xiàn)某種信息組合時(shí)端口地址選擇的目的,是當(dāng)?shù)刂肪€上出現(xiàn)某種信息組合時(shí),在電路的輸出端會(huì)產(chǎn)生一個(gè)有效信號(hào),在電路的輸出端會(huì)產(chǎn)生一個(gè)有效信號(hào)(有效信號(hào)有四種狀態(tài),即高電平、低電平、上跳沿、下降沿,具體使用哪種狀態(tài),視所使用器件而定),該信號(hào)連到器件的控制端,使器件產(chǎn)生動(dòng)作,從而完成I/O端口的讀/寫操作。 這種方法簡(jiǎn)單、直觀,適合于單個(gè)端口,常用的基本門電路有7400(2輸入4與非門)、7408(2輸入4與門)、7420(4輸入雙與非門)、7430(8輸入與非門)、7402(2輸入4或非門)、7432(2輸入4或門)、7404(六反相器)等等。25邏輯門電路進(jìn)行I/O地址譯

12、碼A9A8A7A6A5A2A4A3AENA1A074LS033E7H譯碼器譯碼法譯碼器譯碼法是最常用的一種方法,就是利用譯碼器芯片對(duì)地址進(jìn)行譯碼。 PC/XT微型機(jī)系統(tǒng)板上接口芯片的端口地址譯碼采用了一個(gè)74LS138譯碼電路。這些芯片也都有片選信號(hào),74LSl38譯碼器的輸出與這些芯片的片選信號(hào)連接。各接口芯片內(nèi)部有多個(gè)寄存器,因而應(yīng)有多個(gè)端口地址。譯碼器只直接使用A9A5,其余的低5位地址A4A0未接,留給各接口芯片自行內(nèi)部譯碼,以便尋址多個(gè)寄存器。顯然,由于A4A0未接到譯碼器,所以每個(gè)譯碼器的輸出端對(duì)應(yīng)25=32個(gè)端口地址,系統(tǒng)為每個(gè)接口芯片預(yù)留出32個(gè)端口地址,至于每個(gè)接口芯片用多少

13、,則視接口芯片內(nèi)部寄存器的數(shù)目而定。 譯碼器譯碼法可以方便地對(duì)多個(gè)地址進(jìn)行譯碼,適合于多個(gè)端口的電路。常用的譯碼器有 74139/74155(雙2線-4線譯碼器)、74138(3線-8線譯碼器)、74154(4線-16線譯碼器)。 82378237000H 000H 01FH01FH82598259020H 020H 03FH03FH82538253040H 040H 05FH05FH82558255060H 060H 07FH07FHDMADMA頁(yè)面寄存器頁(yè)面寄存器 080H 080H 09FH09FHNMINMI屏蔽寄存器屏蔽寄存器 0A0H 0A0H 0BFH0BFH保留保留 0C0H

14、0C0H 0DFH0DFH保留保留0E0H 0E0H 0FFH 0FFH 27IBM PC/XT主機(jī)板的I/O譯碼電路Y0 Y1 Y2 Y3 Y4 Y5Y6 Y7A5A6 A7A8A9 AENIOWAB CG2BG2AG1DMA CS(8237)INTR CS(8259)T/C CS(8253)PPI CS (8255)WRTDMAPG(寫(寫DMA頁(yè)面寄存器)頁(yè)面寄存器)WRTNMIREG(寫(寫NMI屏蔽寄存器)屏蔽寄存器)28IBM PC/AT主機(jī)板的I/O譯碼電路接口芯片內(nèi)部譯碼接口芯片內(nèi)部譯碼A0A4DMA控制器控制器1中斷控制器中斷控制器1定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器并行接口電路并行接口電

15、路DMA頁(yè)面寄存器頁(yè)面寄存器中斷控制器中斷控制器2DMA控制器控制器2協(xié)處理器協(xié)處理器A5A6A7A8A9LS138譯碼器譯碼器HLDAMASTERABCE1E2E3Y0*Y1*Y2*Y3*Y4*Y5*Y6*Y7* 比較器比較法比較器比較法是比較靈活的一種方法,就是利用數(shù)碼比較器把地址線上的地址同撥碼開關(guān)預(yù)定的地址相比較,進(jìn)而確定地址是否相符。如果比較后兩個(gè)地址相等,則表示地 址總線送來的端口地址就是該端口的地址。用比較器比較法進(jìn)行端口地址譯碼不僅原理直觀,方法簡(jiǎn)便,更主要的是通過改變預(yù)設(shè)置,就能夠很容易地改變接口電路中端口的地址,而不需要改變線路,使用非常靈活。在一些通用接口模板中,這一方法

16、已得到廣泛的應(yīng)用。 常用的比較器有7485(4位數(shù)字比較器)、74688(8位數(shù)字比較器)。 用用74LS688作譯碼器的譯碼電路作譯碼器的譯碼電路 簡(jiǎn)單接口電路 數(shù)據(jù)輸入接口 必須具有三態(tài)輸出能力,以便與總線掛接 外設(shè)有數(shù)據(jù)保持能力時(shí)可用三態(tài)門實(shí)現(xiàn) 外設(shè)無數(shù)據(jù)保持能力時(shí)用三態(tài)輸出的鎖存器實(shí)現(xiàn) 數(shù)據(jù)輸出接口 常用鎖存器實(shí)現(xiàn) 三態(tài)門:高電平、低電平、高阻態(tài) 通常一個(gè)器件中包含8個(gè)三態(tài)門 常用芯片:74LS244(8位三態(tài)緩沖器) 應(yīng)用例子:開關(guān)接口 工作波形圖如下:A0A15IOR#譯碼輸出D0D7開關(guān)狀態(tài)地址有效簡(jiǎn)單的輸入接口舉例(8位開關(guān)量輸入)接口電路圖如下:83FCH83FFH譯碼器 鎖

17、存器:由D觸發(fā)器構(gòu)成 通常一個(gè)器件包含8個(gè)D觸發(fā)器 常用芯片: 74LS273(8-D觸發(fā)器) 74LS374(具有三態(tài)輸出的鎖存器)簡(jiǎn)單的輸出接口舉例(發(fā)光二極管接口)譯碼器=1=1.+5VRD0D7CPQ0Q7.D0D7A0A15IOW#74LS273R輸入/輸出接口綜合應(yīng)用例子 根據(jù)開關(guān)狀態(tài)在7段數(shù)碼管上顯示數(shù)字或符號(hào) 共陽(yáng)極7段數(shù)碼管結(jié)構(gòu) 用74LS273作為輸出接口,把數(shù)據(jù)送到7段數(shù)碼管 74LS273的地址假設(shè)為F0H 用74LS244作為輸入口,讀入開關(guān)K0K3的狀態(tài) 74LS244的地址假設(shè)為F1H 當(dāng)開關(guān)的狀態(tài)分別為00001111時(shí),在7段數(shù)碼管上對(duì)應(yīng)顯示0F (7段碼表見

18、下頁(yè)) 符號(hào)形狀7段碼.gfedcba符號(hào)形狀7段碼.gfedcba000111111801111111100000110901100111201011011A01110111301001111B01111100401100110C00111001501101101D01011110601111101E01111001700000111F01110001O1 I1O2 I2O3 I3O4 I4#E1 K0K3+5VGG2AG2BCBA174LS244D0 Q0 | Q1D7 Q2 Q3 Q4CP Q5 Q6 Q7 abcdefgDP74068個(gè)反相器74LS273Rx8174LS138D0D7

19、IOW#IOR#Y0Y1F0H = 0000 0000 1111 0000F1H = 0000 0000 1111 0001&1A7A4A15A8A3A2A1A0D0D1D2D3譯碼電路相應(yīng)程序段如下:Seg7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HLEABX, Seg7;取7段碼表基地址MOVAH, 0GO:MOVDX, 0F1H;開關(guān)接口的地址為F1HINAL, DX;讀入開關(guān)狀態(tài)ANDAL, 0FH ;保留低4位MOVSI, AX;作為7段碼表的表內(nèi)位移量MOVAL, BX+SI;取7段碼

20、MOVDX, 0F0H;7段數(shù)碼管接口的地址為F0HOUTDX, ALJMPGOI/O設(shè)備與存儲(chǔ)器的區(qū)別 存儲(chǔ)器的工作速度幾乎和中央處理機(jī)一樣,而大多數(shù)I/O設(shè)備工作較慢,且不同的I/O設(shè)備又有不同的工作速度。 存儲(chǔ)器的字長(zhǎng)一般是以字節(jié)為單位或等于機(jī)器字長(zhǎng),而I/O設(shè)備傳送的過程中可能是8位數(shù)據(jù),也可能是1位,2位不等的狀態(tài)或控制信息。 存儲(chǔ)器中的信號(hào)形式與CPU相同,而I/O設(shè)備可能是數(shù)字信號(hào)也可能是模擬信號(hào),可能是電壓信號(hào)也可能是電流信號(hào),可能是并行的也可能是串行的等等。 存儲(chǔ)器的控制信號(hào)主要是讀/寫信號(hào),而I/O設(shè)備一般有多種控制信號(hào),如設(shè)備工作,空閑等狀態(tài)信號(hào),設(shè)備的啟動(dòng),清除等控制信

21、號(hào)。 這些差異都使得I/O數(shù)據(jù)傳送過程較為復(fù)雜,隨之而來的就是根據(jù)不同設(shè)備需采用不同的傳送方式,相應(yīng)的也就要采用不同的控制方式。 輸入輸出的控制方式 主機(jī)與I/O設(shè)備之間數(shù)據(jù)傳送的控制方式有以下三種: 查詢式傳送查詢式傳送 中斷方式傳送中斷方式傳送 直接存儲(chǔ)器存取直接存儲(chǔ)器存取(DMA, Direct Memory Access)查詢方式傳送 適用于外設(shè)并不總是準(zhǔn)備好,而且對(duì)傳送速率、傳送效率要求不高的場(chǎng)合。 CPU在與外設(shè)交換數(shù)據(jù)前必須詢問外設(shè)狀態(tài)“你準(zhǔn)備好沒有?” 對(duì)外設(shè)的要求:應(yīng)提供設(shè)備狀態(tài)信息 對(duì)接口的要求:需要提供狀態(tài)端口 優(yōu)點(diǎn):軟件比較簡(jiǎn)單 缺點(diǎn):CPU效率低,數(shù)據(jù)傳送的實(shí)時(shí)性差,

22、速度較慢動(dòng)畫演示42就緒(Ready) 在輸入場(chǎng)合 “就緒”說明輸入接口已準(zhǔn)備好送往CPU的數(shù)據(jù),正等著CPU來讀取 該狀態(tài)也可用接口中數(shù)據(jù)緩沖器已“滿”來描述 在輸出場(chǎng)合 “就緒”說明輸出接口已做好準(zhǔn)備,等待接收CPU要輸出的數(shù)據(jù) 該狀態(tài)也可用接口數(shù)據(jù)緩沖器已“空”、或者用接口(外設(shè))“閑”或不“忙(Busy)”來描述就緒:滿,空、閑、不忙就緒:滿,空、閑、不忙查詢方式的流程圖超時(shí)?READY?與外設(shè)進(jìn)行數(shù)據(jù)交換超時(shí)錯(cuò)讀入并測(cè)試外設(shè)狀態(tài)YNYN傳送完?防止死循環(huán)復(fù)位計(jì)時(shí)器NY44查詢傳送的兩個(gè)環(huán)節(jié) 查詢環(huán)節(jié) 尋址狀態(tài)口 讀取狀態(tài)寄存器的標(biāo)志位 若不就緒就繼續(xù)查詢,直至就緒 傳送環(huán)節(jié) 尋址數(shù)據(jù)

23、口 是輸入,通過輸入指令從數(shù)據(jù)端口讀入數(shù)據(jù) 是輸出,通過輸出指令向數(shù)據(jù)端口輸出數(shù)據(jù)輸入狀態(tài)輸入狀態(tài)就緒?就緒?數(shù)據(jù)交換數(shù)據(jù)交換YN傳送流程傳送流程接口實(shí)例接口實(shí)例45查詢輸入接口IOR+5V8D鎖存器鎖存器8位位三態(tài)三態(tài)緩沖器緩沖器譯碼譯碼1位位三態(tài)三態(tài)緩沖器緩沖器RQ A0A158000H8001HD0D7D0D輸入輸入設(shè)備設(shè)備IORSTBmov dx,8000h;DX指向狀態(tài)端口status:in al,dx;讀狀態(tài)端口test al,01h;測(cè)試標(biāo)志位D0jz status;D00,未就緒,繼續(xù)查詢inc dx;D01,就緒,DX指向數(shù)據(jù)端口in al,dx;從數(shù)據(jù)端口輸入數(shù)據(jù)46查詢輸

24、出接口8D鎖存器鎖存器譯碼譯碼1位位三態(tài)三態(tài)緩沖器緩沖器RQ A0A158000H8001HD0D7D7D+5V輸出輸出設(shè)備設(shè)備ACKIOWIORmov dx,8000h;DX指向狀態(tài)端口status:in al,dx;讀取狀態(tài)端口的狀態(tài)數(shù)據(jù)test al,80h;測(cè)試標(biāo)志位D7jnz status;D71,未就緒,繼續(xù)查詢inc dx;D70,就緒,DX指向數(shù)據(jù)端口mov al,buf;變量buf送ALout dx,al;將數(shù)據(jù)輸出給數(shù)據(jù)端口47EEPROM編程(查詢方式)2817AA0A10A0A108000HI/O0I/O7D0D7D0譯碼譯碼A11A19譯碼譯碼A0A15 RDY/BU

25、SYIORWERDMEMWMEMRCEnext:mov al,55h;寫入內(nèi)容55Hmov bx,al;寫入存儲(chǔ)單元nop;空操作指令,起延時(shí)作用nopnext1:in al,dx;查詢狀態(tài)口test al,01h;測(cè)試D0jz next1;D00,芯片還在寫入inc bx;D01,寫畢,指針移動(dòng)loop next;循環(huán)至全部字節(jié)寫完例:用查詢方式進(jìn)行輸出外設(shè)狀態(tài)端口地址為3FBH,第5位(bit5)為狀態(tài)標(biāo)志(=1忙,=0準(zhǔn)備好)外設(shè)數(shù)據(jù)端口地址為3F8H,寫入數(shù)據(jù)會(huì)使?fàn)顟B(tài)標(biāo)志置1 ;外設(shè)把數(shù)據(jù)讀走后又把它置0。試畫出其電路圖。(電路圖見下頁(yè))D5D7-D0A9|A31&A15|A1

26、01IOWD7-D03F8H外設(shè)D7D6D5D4D3D2D1D0BUSYCPQ7Q6Q5Q4Q3Q2Q1Q0狀態(tài)端口GG2AG2BCBAA2A1A074LS138Y01IORY3OE74LS374CPQQDSSTROBE3FBH程序段?50中斷傳送方式斷點(diǎn)斷點(diǎn)主程序主程序中斷服務(wù)程序中斷服務(wù)程序中斷請(qǐng)求中斷請(qǐng)求對(duì)外設(shè)對(duì)外設(shè)進(jìn)行處理進(jìn)行處理繼續(xù)執(zhí)行繼續(xù)執(zhí)行返回?cái)帱c(diǎn)返回?cái)帱c(diǎn) CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預(yù)先安排好的中斷服務(wù)程序;服務(wù)結(jié)束后,又返回原來的斷點(diǎn),繼續(xù)執(zhí)行原來的程序傳送流程傳送流程動(dòng)畫演示51中斷傳送與接口 中斷傳送是一種效率更高的程序傳送方式,優(yōu)點(diǎn)是:CP

27、U效率高,實(shí)時(shí)性好,速度快;缺點(diǎn)是:程序編制較為復(fù)雜。 進(jìn)行傳送的中斷服務(wù)程序是預(yù)先設(shè)計(jì)好的 中斷請(qǐng)求是外設(shè)隨機(jī)向CPU提出的 CPU對(duì)請(qǐng)求的檢測(cè)是有規(guī)律的:一般是在每條指令的最后一個(gè)時(shí)鐘周期采樣中斷請(qǐng)求輸入引腳 中斷有著非常廣泛的應(yīng)用中斷技術(shù)(教材第6章) 中斷的基本概念 什么是中斷? 與生活場(chǎng)景的比較正在看書電話鈴響接電話繼續(xù)看書執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請(qǐng)求及響應(yīng)實(shí)際場(chǎng)景計(jì)算機(jī)中斷返回中斷的定義 CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(稱為中斷服務(wù)程序或中斷處理程序),以處理該事件,該事

28、件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。中斷源 引起CPU中斷的事件中斷源。例如: 外設(shè)請(qǐng)求輸入輸出數(shù)據(jù),報(bào)告故障等 事件掉電、硬件故障、軟件錯(cuò)誤、非法操作、定時(shí)時(shí)間到等 中斷源分為:外部中斷、內(nèi)部中斷 內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時(shí)自身產(chǎn)生的中斷 外部中斷:CPU以外的設(shè)備、部件產(chǎn)生的中斷 8086/8088的外部中斷信號(hào):INTR、NMI INTR可屏蔽中斷請(qǐng)求,高電平有效,受IF標(biāo)志的控制。IF=1時(shí),執(zhí)行完當(dāng)前指令后CPU對(duì)它作出響應(yīng)。 NMI非屏蔽中斷請(qǐng)求,上升沿有效,任何時(shí)候CPU都要響應(yīng)此中斷請(qǐng)求信號(hào)。為何計(jì)算機(jī)中要引入中斷? 提高數(shù)據(jù)傳輸率; 避免了CPU不斷檢

29、測(cè)外設(shè)狀態(tài)的過程,提高了CPU的利用率。 實(shí)現(xiàn)對(duì)特殊事件的實(shí)時(shí)響應(yīng)。如多任務(wù)系統(tǒng)操作系統(tǒng)中: 缺頁(yè)中斷 設(shè)備中斷 各類異常 實(shí)時(shí)鐘,。等中斷過程五個(gè)步驟:中斷請(qǐng)求中斷判優(yōu)先級(jí)(有時(shí)還要進(jìn)行中斷源識(shí)別)中斷響應(yīng)中斷服務(wù)中斷返回以下以外部中斷為主介紹這五個(gè)步驟。1)中斷請(qǐng)求 外設(shè)接口(中斷源)發(fā)出中斷請(qǐng)求信號(hào),送到CPU的INTR或NMI引腳; 中斷請(qǐng)求信號(hào):邊沿請(qǐng)求,電平請(qǐng)求例如,NMI為邊沿請(qǐng)求,INTR為電平請(qǐng)求 中斷請(qǐng)求信號(hào)應(yīng)保持到中斷被處理為止; CPU響應(yīng)中斷后,中斷請(qǐng)求信號(hào)應(yīng)及時(shí)撤銷。 在8086/8088系統(tǒng)中,外設(shè)的中斷要經(jīng)過8259A可編程中斷控制器(PIC)的排隊(duì)判優(yōu)后向CP

30、U發(fā)出 (I/O接口) PIC CPUn12.1)中斷源識(shí)別 計(jì)算機(jī)中的中斷源有很多,CPU必須識(shí)別是哪一個(gè)設(shè)備產(chǎn)生中斷。識(shí)別中斷源有兩個(gè)方法: 軟件查詢。將中斷信號(hào)從數(shù)據(jù)總線讀入,用程序進(jìn)行判別。 中斷矢量法。由中斷源提供中斷類型號(hào),CPU根據(jù)類型確定中斷源。(8086/8088即采用此種方法)2.2)中斷判優(yōu)先級(jí) 多個(gè)中斷源產(chǎn)生中斷,CPU首先為誰服務(wù)?中斷優(yōu)先級(jí)排隊(duì)問題。 中斷優(yōu)先級(jí)控制要處理兩種情況: 對(duì)同時(shí)產(chǎn)生的中斷:應(yīng)首先處理優(yōu)先級(jí)別較高的中斷;若優(yōu)先級(jí)別相同,則按先來先服務(wù)的原則處理; 對(duì)非同時(shí)產(chǎn)生的中斷:低優(yōu)先級(jí)別的中斷處理程序允許被高優(yōu)先級(jí)別的中斷源所中斷即允許中斷嵌套。 中

31、斷優(yōu)先級(jí)的控制方法 硬件判優(yōu)鏈?zhǔn)脚袃?yōu)、并行判優(yōu)(中斷向量法) 軟件判優(yōu)順序查詢中斷請(qǐng)求,先查詢的先服務(wù)(即先查詢的優(yōu)先級(jí)別高)(教材p170圖6-3) 通常將中斷判優(yōu)與中斷源識(shí)別合并在一起進(jìn)行處理。 x86系統(tǒng)中,這項(xiàng)任務(wù)由PIC和CPU共同完成。INTAinCPUINTAINTR外設(shè)1外設(shè)2外設(shè)接口1菊花鏈邏輯電路外設(shè)接口2外設(shè)3外設(shè)接口31菊花鏈邏輯電路菊花鏈邏輯電路IREQIREQIREQ中斷確認(rèn)鏈?zhǔn)脚袃?yōu)電路原理圖INTAinINTAin中斷確認(rèn)中斷確認(rèn)菊花鏈邏輯電路INTAinIREQINTR&=1 1INTAoutDB三態(tài)門中斷向量碼E外設(shè)接口中斷確認(rèn)菊花鏈邏輯電路3)中斷響

32、應(yīng) 在每條指令的最后一個(gè)時(shí)鐘周期,CPU檢測(cè)INTR或NMI信號(hào)。若以下條件成立,則CPU響應(yīng)中斷: 當(dāng)前指令執(zhí)行完。對(duì)INTR,還應(yīng)滿足以下條件 當(dāng)前指令是STI和IRET,則下條指令也要執(zhí)行完。 當(dāng)前指令帶有LOCK、REP等指令前綴時(shí),則把它們看成一個(gè)整體,要求完整地執(zhí)行完; 對(duì)INTR,CPU應(yīng)處于開中斷狀態(tài),即IF=1; 當(dāng)前沒有復(fù)位(RESET)和保持(HOLD)信號(hào)。 若NMI和 INTR 同時(shí)發(fā)生,則首先響應(yīng)NMI。3)中斷響應(yīng)(續(xù)) CPU中斷響應(yīng)時(shí),要做下述三項(xiàng)工作: 向中斷源發(fā)出INTA*中斷響應(yīng)信號(hào); 斷點(diǎn)保護(hù),包括CS、IP和PSW(FLAGS)。這主要是保證中斷結(jié)束

33、后能返回被中斷的程序。 獲得中斷服務(wù)程序首地址(入口)。如何得到中斷處理程序的首地址? 固定入口法 中斷向量法常用4)中斷處理(中斷服務(wù)) 中斷服務(wù)子程序特點(diǎn) 為”遠(yuǎn)”過程(類型為FAR) 要用IRET指令返回 中斷服務(wù)子程序要做的工作 保護(hù)現(xiàn)場(chǎng)(PUSH regs) 開中斷(STI) 進(jìn)行中斷處理 恢復(fù)現(xiàn)場(chǎng)(POP regs) 中斷返回(IRET) 5)中斷返回 執(zhí)行中斷返回指令I(lǐng)RET IRET指令將使CPU把堆棧內(nèi)保存的斷點(diǎn)信息彈出到IP、CS和FLAG中,保證被中斷的程序從斷點(diǎn)處能夠繼續(xù)往下執(zhí)行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAG

34、HSPIPCSFLAG進(jìn)入中斷服務(wù)程序時(shí)中斷返回后8088的中斷系統(tǒng) 與中斷有關(guān)的控制線為:NMI、INTR、INTA* 8088系統(tǒng)的中斷源 內(nèi)部中斷 除法溢出:類型號(hào)0,商大于目的操作數(shù)所能表達(dá)的范圍時(shí)產(chǎn)生。 單步中斷:類型號(hào)1,TF=1時(shí)產(chǎn)生(當(dāng)前指令需執(zhí)行完) 斷點(diǎn)中斷:類型號(hào)3,這是一個(gè)軟件中斷,即INT 3指令。 溢出中斷:類型號(hào)4,這是一個(gè)軟件中斷,即INTO指令。 軟件中斷:即INT n指令,類型號(hào)n(0-255)。 外部中斷 非屏蔽中斷NMI:類型號(hào)2,不可在cpu內(nèi)部用軟件屏蔽。 可屏蔽中斷INTR:類型號(hào)由PIC提供。IF=1時(shí)CPU才能響應(yīng)。678088的中斷類型非屏蔽

35、中斷源非屏蔽中斷源中斷邏輯中斷邏輯INTO指令指令單步單步中斷中斷除法除法錯(cuò)誤錯(cuò)誤INT N指令指令CPUINTRNMI可屏蔽中斷源可屏蔽中斷源8259A中斷中斷控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外設(shè)設(shè)中中斷斷源源 INTA 內(nèi)部中斷 除法錯(cuò)中斷 指令中斷 溢出中斷 單步中斷 外部中斷 非屏蔽中斷 可屏蔽中斷681. 內(nèi)部中斷 內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷 利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑 例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用內(nèi)部中斷的中斷向量號(hào)已定內(nèi)部中斷

36、的中斷向量號(hào)已定69 除法錯(cuò)中斷 在執(zhí)行除法指令時(shí),若除數(shù)為0或商超過了寄存器所能表達(dá)的范圍,則產(chǎn)生一個(gè)向量號(hào)為0的內(nèi)部中斷,稱為除法錯(cuò)中斷例如:mov bl,0idiv bl;除數(shù);除數(shù)BL0,產(chǎn)生除法錯(cuò)中斷,產(chǎn)生除法錯(cuò)中斷mov ax,200hmov bl,1div bl;商;商200H,不能用,不能用AL表達(dá)表達(dá);產(chǎn)生除法錯(cuò)中斷;產(chǎn)生除法錯(cuò)中斷70 指令中斷 在執(zhí)行中斷調(diào)用指令I(lǐng)NT n時(shí)產(chǎn)生的一個(gè)向量號(hào)為n(0 255)的內(nèi)部中斷,稱為指令中斷 其中向量號(hào)為3的指令中斷比較特別(生成一個(gè)字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點(diǎn)中斷例如:例如:DEBUG.EXE調(diào)試

37、程序的運(yùn)行命令調(diào)試程序的運(yùn)行命令G設(shè)置設(shè)置的斷點(diǎn),就是利用的斷點(diǎn),就是利用INT 3指令實(shí)現(xiàn)的指令實(shí)現(xiàn)的71 溢出中斷 在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志OF為1,則產(chǎn)生一個(gè)向量號(hào)為4的內(nèi)部中斷,被稱為溢出中斷例如:mov ax,2000hadd ax, 7000h;2000H7000H9000H,溢出:,溢出:OF1into;因?yàn)椋灰驗(yàn)镺F1,所以產(chǎn)生溢出中斷,所以產(chǎn)生溢出中斷72單步中斷 若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個(gè)向量號(hào)為1的內(nèi)部中斷,稱為單步中斷例如:例如:DEBUG.EXE調(diào)試程序的單步命令調(diào)試程序的單步命令T就利就利用單步中斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試用單步中

38、斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試73內(nèi)部中斷服務(wù)程序 編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似 利用過程定義偽指令PROC/ENDP 第1條指令通常為開中斷指令STI 最后用中斷返回指令I(lǐng)RET 通常采用寄存器傳遞參數(shù) 主程序需要調(diào)用中斷服務(wù)程序 調(diào)用前,需要設(shè)置中斷向量 利用INT n指令調(diào)用中斷服務(wù)程序74例1 內(nèi)部中斷服務(wù)程序 編寫80H號(hào)中斷服務(wù)程序 功能:顯示以“0”結(jié)尾字符串的功能 利用顯示器功能調(diào)用INT 10H 字符串緩沖區(qū)首地址為入口參數(shù) DS:DX(段地址:偏移地址)傳遞參數(shù)數(shù)據(jù)段intoffdw ?;用于保存原中斷服務(wù)程序的偏移地址intsegdw ?;用于保存原中斷服務(wù)程序的段基地址

39、intmsgdb A Instruction Interrupt !db 0dh,0ah,0;字符串(以0結(jié)尾)例1保存中斷向量mov ax,3580h;獲取系統(tǒng)的原80H中斷向量int 21hmov intoff,bx;保存偏移地址mov intseg,es;保存段基地址例1獲取中斷向量(獲取中斷向量(DOS功能調(diào)用功能調(diào)用INT 21H)功能號(hào):功能號(hào):AH35H入口參數(shù):入口參數(shù):AL中斷向量號(hào)中斷向量號(hào)出口參數(shù):出口參數(shù):ES:BX中斷向量(段地址:偏移地址)中斷向量(段地址:偏移地址)設(shè)置中斷向量push dsmov dx,offset new80h;取新的中斷向量mov ax,se

40、g new80hmov ds,axmov ax,2580h;設(shè)置本程序的80H中斷向量int 21hpop ds例1設(shè)置中斷向量(設(shè)置中斷向量(DOS功能調(diào)用功能調(diào)用INT 21H)功能號(hào):功能號(hào):AH25H入口參數(shù):入口參數(shù):AL中斷向量號(hào)中斷向量號(hào)DS:DX中斷向量(段地址:偏移地址)中斷向量(段地址:偏移地址)調(diào)用中斷服務(wù)程序mov dx,offset intmsg;設(shè)置入口參數(shù)DS:DXint 80h;調(diào)用80H中斷服務(wù)程序,顯示字符串例1;80H號(hào)內(nèi)部中斷服務(wù)程序:;顯示字符串(以“0”結(jié)尾);入口參數(shù):DS:DX緩沖器首地址new80hproc;過程定義sti;開中斷push ax

41、;保護(hù)寄存器push bxpush si例8.1進(jìn)入中斷服務(wù)程序顯示字符串mov si,dxnew1:mov al,si ;獲取欲顯示字符cmp al,0;為“0”結(jié)束jz new2mov bx,0;采用ROM-BIOS調(diào)用顯示一個(gè)字符mov ah,0ehint 10h;調(diào)用中斷10H顯示一個(gè)字符inc si ;顯示下一個(gè)字符jmp new1例8.1退出中斷服務(wù)程序new2:pop si;恢復(fù)寄存器pop bxpop axiret;中斷返回new80h endp;中斷服務(wù)程序結(jié)束例8.1主程序結(jié)束mov dx,intoff;恢復(fù)系統(tǒng)的原80H中斷向量mov ax,intseg;注意先設(shè)置DX,

42、后設(shè)置DS入口參數(shù)mov ds,ax;因?yàn)橄雀淖兞薉S,就不能準(zhǔn)確取得intoff變量值mov ax,2580hint 21hmov ax,4c00h;程序終止int 21h例8.1A Instruction Interrupt !832. 外部中斷 外部中斷是由于8088外部提出中斷請(qǐng)求引起的程序中斷 利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請(qǐng)求,能夠及時(shí)處理外部意外或緊急事件 外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt) 內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)84 非屏蔽中斷 通過非屏蔽中斷請(qǐng)求信號(hào)向微處

43、理器提出的中斷請(qǐng)求,微處理器無法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個(gè)中斷被稱為非屏蔽中斷(并非無法屏蔽,參見教材P179) 8088的非屏蔽中斷的向量號(hào)為2,非屏蔽中斷請(qǐng)求信號(hào)為NMI 非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如: 電源掉電前的數(shù)據(jù)保護(hù) 存儲(chǔ)器讀寫錯(cuò)誤的處理85 可屏蔽中斷 外部通過可屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時(shí)輸出可屏蔽中斷響應(yīng)信號(hào),這個(gè)中斷就是可屏蔽中斷 8088的可屏蔽中斷請(qǐng)求和響應(yīng)信號(hào)分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號(hào)來自外部中斷控制器 8088通常需

44、要配合中斷控制器8259A共同處理可屏蔽中斷 可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)IF控制可屏蔽中斷的響應(yīng)控制可屏蔽中斷的響應(yīng)86中斷標(biāo)志IF的狀態(tài) IF0:可屏蔽中斷不會(huì)被響應(yīng) 關(guān)中斷、禁止中斷、中斷屏蔽 系統(tǒng)復(fù)位,使IF0 任何一個(gè)中斷被響應(yīng),使IF0 執(zhí)行指令CLI,使IF0 IF1:可屏蔽中斷會(huì)被響應(yīng) 開中斷、允許中斷、中斷開放 執(zhí)行指令STI,使IF1 執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確明確IF標(biāo)志的狀態(tài)是關(guān)鍵標(biāo)志的狀態(tài)是關(guān)鍵中斷源的識(shí)別 8088系統(tǒng)采用中斷類型碼來識(shí)別不同的中斷源,每個(gè)中斷源都有一個(gè)與它相對(duì)應(yīng)的中斷類型碼 。 溢出、斷點(diǎn)、除法溢出、單步、非屏蔽中斷的類型碼為固定值

45、 軟件中斷的類型碼由指令給出 可屏蔽中斷的類型碼由PIC給出 CPU響應(yīng)INTR中斷時(shí),會(huì)產(chǎn)生兩個(gè)中斷響應(yīng)總線周期,要求PIC在第2個(gè)中斷響應(yīng)總線周期把中斷類型碼放到數(shù)據(jù)總線上,供CPU讀入。中斷向量表(IVT) 存放各類中斷的中斷服務(wù)程序的入口地址(段和偏移)中斷向量 表的地址位于內(nèi)存的00000H003FFH,大小為1KB,共256個(gè)中斷向量 每個(gè)中斷向量占用4 Bytes,低字為段內(nèi)偏移,高字為段基址 根據(jù)中斷類型號(hào)獲得中斷服務(wù)程序入口的方法: (n為中斷類型號(hào)) 中斷向量在IVT中的存放地址4n中斷向量表的初始化 初始化將中斷服務(wù)程序的入口地址放入向量表 例:中斷類型碼為48H的中斷處

46、理子程序的名字為int48h,編寫程序段將該中斷處理子程序的入口地址放入向量表。中斷向量表的初始化 CLI MOV AX,0 MOV DS,AX MOV SI,48H*4 MOV AX,OFFSET int48h MOV SI,AX MOV AX,SEG int48h MOV SI+2,AX STI8086/8088 CPU的中斷響應(yīng)過程 內(nèi)部中斷響應(yīng)過程 無INTA*周期中斷類型碼固定或由指令給出響應(yīng)過程主要步驟: PUSH FLAG IF=0 PUSH CS PUSH IP 取中斷向量送入IP和CS中斷響應(yīng)過程(續(xù)) 外部中斷響應(yīng)過程非屏蔽中斷,與內(nèi)部中斷響應(yīng)過程類似 可屏蔽中斷 INTA

47、#(1),PIC進(jìn)行優(yōu)先級(jí)排隊(duì)判優(yōu)處理 INTA#(2),PIC把中斷類型碼放到DB上,CPU讀入 PUSH FLAG IF=0 PUSH CS PUSH IP 取中斷向量送入IP和CS與內(nèi)部中斷一樣8088系統(tǒng)中各中斷的優(yōu)先級(jí) 優(yōu)先級(jí)從高到低順序如下: 內(nèi)部中斷 NMI INTR 單步中斷NYNYNNNNNYY執(zhí)行指令執(zhí)行完否?取指令I(lǐng)F=1?內(nèi)部中斷?NMI?INTR?TF=1?類型碼=0255類型碼=2類型碼=1中斷響應(yīng),讀回類型碼FLAG入棧TEMPTFTF=TF=0CS、IP入棧計(jì)算向量表地址高字CS低字IP執(zhí)行中斷服務(wù)程序NMI?TEMP=1?轉(zhuǎn)入中斷服務(wù)程序恢復(fù)CS和IP恢復(fù)FL

48、AGS返回被中斷的程序YYYYNIRET指令的操作8086/8088的中斷處理流程N(yùn)MI、INTR、單步和除法錯(cuò)中斷同時(shí)產(chǎn)生時(shí)的中斷處理過程DIVTF=1IF=1INTRNMIPUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IP除法錯(cuò)NMI(IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IPNMI中斷處理程序除法錯(cuò)中斷處理程序(IF、TF = 0) 返回執(zhí)行下條指令識(shí)別出INTR(IF、TF = 1) 返回INTR仍然有效繼續(xù)單步執(zhí)行程序INTR中斷處理程序INTRPUSH FLAGS、CS、IPCLEA

49、R IF & TF,中斷入口CS:IP單步 (IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IP單步中斷處理程序(IF、TF = 0) 返回(IF、TF = 1) 返回DMA傳輸 前面三種I/O方式都需要CPU作為中介: 外設(shè) CPU 內(nèi)存 兩個(gè)含義:1)軟件:外設(shè)與內(nèi)存之間的數(shù)據(jù)傳送是通過CPU執(zhí)行程序來完成的(PIO方式);2)硬件:I/O接口和存儲(chǔ)器的讀寫控制信號(hào)、地址信號(hào)都是由CPU發(fā)出的(總線由CPU控制)。 缺點(diǎn):程序的執(zhí)行速度限定了傳送的最大速度(約為幾十KB/秒)解決:DMA傳輸 DMA傳輸: 外設(shè) 內(nèi)存 外設(shè)直接

50、與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換 ,CPU不再擔(dān)當(dāng)數(shù)據(jù)傳輸?shù)闹薪檎撸?總線由DMA控制器(DMAC)進(jìn)行控制(CPU要放棄總線控制權(quán)),內(nèi)存/外設(shè)的地址和讀寫控制信號(hào)均由DMAC提供。 優(yōu)點(diǎn):數(shù)據(jù)傳輸由DMA硬件來控制,數(shù)據(jù)直接在內(nèi)存和外設(shè)之間交換,可以達(dá)到很高的傳輸速率(可達(dá)幾MB/秒)幾個(gè)基本概念 總線控制權(quán)、mater、slave DMAC編程周期:slave DMAC控制總線進(jìn)行數(shù)據(jù)傳輸周期:master DMA的數(shù)據(jù)傳輸形式:基本的:MEMI/O擴(kuò)充的:MEMMEM I/O I/ODMA傳送原理示意圖 系統(tǒng)總線CPUDMAC存儲(chǔ)器外設(shè)接口AENIOWMEMWMEMRIORMEMWMEMRIOWI

51、ORAENHOLDHLDADRQDACKAENIOWIORMEMWMEMR 外設(shè)發(fā)出DMA請(qǐng)求 DMAC向CPU申請(qǐng)總線 CPU完成當(dāng)前總線周期后響應(yīng),并釋放總線控制權(quán) DMAC得到總線控制權(quán),并發(fā)出DMA響應(yīng)信號(hào) 由DMAC發(fā)出各種控制信號(hào),控制外設(shè)與存儲(chǔ)器之 間的數(shù)據(jù)傳送 數(shù)據(jù)傳送完后,DMAC撤銷HOLD信號(hào) CPU釋放HLDA信號(hào),并重新控制總線動(dòng)畫演示DMA控制器的工作過程1)當(dāng)外設(shè)準(zhǔn)備好,可以進(jìn)行DMA傳送時(shí),外設(shè)向DMA控制器發(fā)出“DMA傳送請(qǐng)求”信號(hào)(DRQ);2)DMA控制器收到請(qǐng)求后,向CPU發(fā)出“總線請(qǐng)求”信號(hào)HOLD,表示希望占用總線;3)CPU在完成當(dāng)前總線周期后會(huì)立即對(duì)HOLD信號(hào)進(jìn)行響應(yīng)。響應(yīng)包括兩個(gè)動(dòng)作:一是CPU將數(shù)據(jù)總線、地址總線和相應(yīng)的控制信號(hào)線均置為高阻態(tài),由此放棄對(duì)總線的控制權(quán)。另一方面,CPU向DMA控制器發(fā)出“總線響應(yīng)”信號(hào)(HLDA)。4)DMA控制器收到HLDA信號(hào)后,就開始控制總線,并向外設(shè)發(fā)出DMA響應(yīng)信號(hào)DACK;DMA控制器的工作過程(續(xù))5)DMA控制器送出地址信號(hào)和相應(yīng)的控制信號(hào),實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論