版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
習(xí)題五接口電路與外部設(shè)備之間傳送的信號(hào)有哪幾種?傳輸方向如何?數(shù)據(jù)信號(hào):對(duì)于輸入設(shè)備,數(shù)據(jù)信號(hào)從外設(shè)通過接口送往總線,對(duì)于輸出設(shè)備,數(shù)據(jù)信號(hào)從總線通過接口發(fā)往外部設(shè)備。狀態(tài)信號(hào):狀態(tài)信號(hào)表白外部設(shè)備當(dāng)前的工作狀態(tài),用來協(xié)調(diào)CPU與外部設(shè)備之間的操作。狀態(tài)信號(hào)總是從外部設(shè)備通過接口發(fā)往總線。控制信號(hào):控制信號(hào)是CPU向外設(shè)發(fā)出的命令,它指定設(shè)備的工作方式,啟動(dòng)或停止設(shè)備??刂菩盘?hào)從CPU通過接口發(fā)往外部設(shè)備。接口電路有哪些功能?哪些功能是必需的?接口電路可以具有:設(shè)備選擇功能、信息傳輸功能、數(shù)據(jù)格式轉(zhuǎn)換功能、聯(lián)絡(luò)功能、中斷管理功能、復(fù)位功能、可編程功能和錯(cuò)誤檢測(cè)等功能。其中設(shè)備選擇功能和信息傳輸功能是每一個(gè)接口電路所必備的。其他的功能是否需要?jiǎng)t由設(shè)備的特點(diǎn)和工作方式?jīng)Q定。I/O端口的編址有哪幾種方法?各有什么利弊?80X86系列CPU采用哪種方法??I/O端口的編址有兩種不同的方式。I/O端口與內(nèi)存統(tǒng)一編址:把內(nèi)存的一部分地址分派給I/O端口,一個(gè)8位端口占用一個(gè)內(nèi)存單元地址。已經(jīng)用于I/O端口的地址,存儲(chǔ)器不能再使用。I/O端口與內(nèi)存統(tǒng)一編址后,訪問內(nèi)存儲(chǔ)器單元和I/O端口使用相同的指令,這有助于減少CPU電路的復(fù)雜性,并給使用者提供方便。但是,I/O端口占用內(nèi)存地址,相對(duì)減少了內(nèi)存可用范圍。并且,由于難以區(qū)分訪問內(nèi)存和I/O的指令,減少了程序的可讀性和可維護(hù)性。I/O端口與內(nèi)存獨(dú)立編址:這種編址方法中,內(nèi)存儲(chǔ)器和I/O端口各自有自己獨(dú)立的地址空間。訪問I/O端口需要專門的I/O指令。80x86CPU采用I/O端口獨(dú)立編址方式。按照傳輸信號(hào)的種類,I/O端口有幾種?它們信號(hào)的傳輸方向如何?按照傳輸信號(hào)的種類,I/O端口有三種:數(shù)據(jù)端口:數(shù)據(jù)信息從端口輸入CPU(輸入設(shè)備接口),或者從CPU寫入端口(輸出設(shè)備接口);狀態(tài)端口:外設(shè)狀態(tài)信息從端口輸入CPU;控制端口:命令信息從CPU寫入端口。I/O端口譯碼電路的作用是什么?在最小模式和最大模式下分別有哪些輸入信號(hào)?I/O端口譯碼電路用于產(chǎn)生端口的讀寫選擇信號(hào)。在最小模式下,譯碼電路接受來自總線的地址信號(hào)(16位),(=0),或者信號(hào)。最大模式下,譯碼電路接受地址信號(hào)(16位),或者信號(hào)。外部設(shè)備數(shù)據(jù)傳送有哪幾種控制方式?從外部設(shè)備的角度,比較不同方式對(duì)外部設(shè)備的響應(yīng)速度。外部設(shè)備數(shù)據(jù)傳送有以下四種控制方式。直接傳送方式(也稱為無條件傳送方式、同步傳送方式):這種情況下,外部端口完全被動(dòng)地等待CPU的訪問,沒有擬定的響應(yīng)速度,響應(yīng)時(shí)間取決于CPU忙碌的限度以及程序?qū)ν獠吭O(shè)備控制采用的策略。查詢方式:假如CPU在某一時(shí)刻只對(duì)一個(gè)外設(shè)采用查詢方式進(jìn)行數(shù)據(jù)傳輸,CPU的響應(yīng)延遲約為3~10個(gè)指令周期。響應(yīng)速度快于中斷方式,慢于DMA方式。中斷方式:CPU的響應(yīng)延遲平均為幾十個(gè)指令周期,慢于查詢方式,但是這種方式可以同時(shí)管理多個(gè)外部設(shè)備。DMA方式:外部端口的傳輸請(qǐng)求由DMA控制器響應(yīng),由于DMAC是一個(gè)專用于傳輸控制的電路,任務(wù)單一,不發(fā)生DMA傳輸競(jìng)爭(zhēng)時(shí),響應(yīng)延遲僅為1~2個(gè)DMAC使用的時(shí)鐘周期,遠(yuǎn)快于中斷方式和查詢方式。敘述一次查詢式輸出過程中,接口內(nèi)各電路、信號(hào)的狀態(tài)變化過程。一個(gè)數(shù)據(jù)的查詢式輸出過程由二個(gè)階段組成:CPU從接口反復(fù)讀取狀態(tài)字:由地址譯碼電路產(chǎn)生狀態(tài)端口選擇信號(hào),該信號(hào)不影響接口內(nèi)部的狀態(tài)。外部設(shè)備輸出完畢后,返回“確認(rèn)”信號(hào),該信號(hào)將狀態(tài)寄存器相關(guān)位(READY)置位。如狀態(tài)字表白外設(shè)已處在“就緒”狀態(tài),則向數(shù)據(jù)端口傳送數(shù)據(jù)。由地址譯碼電路產(chǎn)生的數(shù)據(jù)端口選通信號(hào)一方面將數(shù)據(jù)總線上的數(shù)據(jù)寫入數(shù)據(jù)寄存器,同時(shí)清除狀態(tài)寄存器中的相關(guān)位(READY),向輸出設(shè)備發(fā)出輸出啟動(dòng)信號(hào)。有的輸出接口設(shè)有控制端口,輸出啟動(dòng)信號(hào)通過寫控制端口產(chǎn)生。比較程序中斷方式和查詢方式的區(qū)別,根據(jù)比較,指出中斷工作方式的優(yōu)缺陷。中斷方式:外部設(shè)備工作完畢后,通過“中斷請(qǐng)求”信號(hào)“積極”向CPU“報(bào)告”。查詢方式:外部設(shè)備工作完畢后,狀態(tài)信號(hào)儲(chǔ)存在接口電路內(nèi),被動(dòng)地等待CPU來讀取。根據(jù)上述比較,可以得到中斷工作方式的如下特點(diǎn):優(yōu)點(diǎn):CPU可以及時(shí)了解外部設(shè)備的狀態(tài),從而對(duì)外部設(shè)備IO請(qǐng)求進(jìn)行及時(shí)解決。由于CPU“被動(dòng)”地等待外部設(shè)備的“中斷請(qǐng)求”,外部設(shè)備進(jìn)行輸入/輸出操作時(shí),CPU可以同時(shí)執(zhí)行其他的程序,CPU和外部設(shè)備“并行”工作。由于同樣的因素,在中斷方式下,CPU可以同時(shí)管理多臺(tái)外部設(shè)備,CPU的效率得到提高。缺陷:用中斷方式需要CPU增長(zhǎng)相應(yīng)的管理邏輯,增長(zhǎng)了CPU電路的復(fù)雜性。由于CPU“被動(dòng)”地接受“中斷請(qǐng)求”信號(hào),CPU必須通過與外部的一個(gè)聯(lián)絡(luò)過程才干知道是那一個(gè)設(shè)備在申請(qǐng)中斷,這增長(zhǎng)了響應(yīng)時(shí)間。為了從當(dāng)前任務(wù)轉(zhuǎn)移到中斷服務(wù),CPU必須保護(hù)原有的運(yùn)營(yíng)環(huán)境,進(jìn)行“任務(wù)”的“切換”,這也會(huì)增長(zhǎng)響應(yīng)時(shí)間。有較多的設(shè)備使用中斷方式時(shí),會(huì)產(chǎn)生“中斷申請(qǐng)”的“競(jìng)爭(zhēng)”。這一方面減少了響應(yīng)速度,另一方面增長(zhǎng)了管理的復(fù)雜性。比較DMA方式和程序中斷方式的區(qū)別,根據(jù)比較,指出DMA工作方式的優(yōu)缺陷。中斷方式:外部設(shè)備每進(jìn)行一個(gè)數(shù)據(jù)的輸入/輸出,都要通過“中斷申請(qǐng)”規(guī)定CPU進(jìn)行解決。CPU通過執(zhí)行一段“中斷服務(wù)程序”完畢數(shù)據(jù)的傳輸。DMA方式:CPU通過對(duì)DMAC的初始化,啟動(dòng)一個(gè)數(shù)據(jù)塊的傳輸操作。之后的數(shù)據(jù)傳輸通過信號(hào)的聯(lián)絡(luò),在外設(shè)接口和存儲(chǔ)器之間進(jìn)行,CPU只需簡(jiǎn)樸地讓出總線,而無需其他操作。根據(jù)上述比較,可以得到DMA工作方式的如下特點(diǎn):優(yōu)點(diǎn):對(duì)于CPU而言,它的任務(wù)僅僅是在一個(gè)數(shù)據(jù)塊傳輸之前對(duì)DMAC進(jìn)行初始化,CPU用于傳輸控制的操作達(dá)成最小(不考慮與通道/IO解決器方式的比較),CPU的效率最高。CPU與外設(shè)“并行”工作。外部設(shè)備一個(gè)數(shù)據(jù)輸入/輸出完畢后,向DMAC申請(qǐng)進(jìn)行數(shù)據(jù)傳輸,響應(yīng)時(shí)間僅為DMAC的1~3個(gè)時(shí)鐘周期。響應(yīng)速度達(dá)成最快,可以滿足高速傳輸?shù)男枰?。缺?實(shí)現(xiàn)DMA控制需要增長(zhǎng)DMA控制器和總線控制邏輯,增長(zhǎng)了系統(tǒng)的復(fù)雜性。DMA傳輸需要占用總線,并且具有較高的“優(yōu)先級(jí)”。這使得系統(tǒng)對(duì)其他設(shè)備的響應(yīng)速度不能得到明確的保證。某輸入設(shè)備接口數(shù)據(jù)端口、狀態(tài)端口、控制端口地址分別為70H,71H,72H。狀態(tài)端口D5=1表達(dá)輸入完畢,控制端口D7=1表達(dá)啟動(dòng)設(shè)備輸入(輸入完畢后由設(shè)備清除該位)。從該設(shè)備輸入100個(gè)字節(jié)數(shù)據(jù),存入以BUFFER為首地址的緩沖區(qū)。假如啟動(dòng)該設(shè)備1秒后仍未完畢一次輸入,則視為超時(shí)錯(cuò),顯示犯錯(cuò)信息后返回。分別用8086匯編語言和C語言編寫完畢上述功能的I/O程序。匯編語言程序:DATA SEGMENTBUFFER DB??100DUP(?)ERROR DB??13,10,“OVERTIME!”,13,10,“$”DATA ?ENDS;CODE ?SEGMENT???ASSUME??CS:CODE,DS:DATASTART:? ??MOV AX,DATA ? ?MOV DS,AX ? MOV CX,100? ? LEA??BX,BUFFER?ONE:? XOR?DX,DX ? ;DX用作響應(yīng)計(jì)時(shí)器,初值0MOV AL,80H ?OUT? 72H,AL? ;啟動(dòng)輸入W:? IN AL,71H????INC ?DX????;記錄延遲時(shí)間 ?TEST?AL,00100000B?;測(cè)試完畢位? ?JNZ? READ ??;輸入完畢,轉(zhuǎn)READ讀取數(shù)據(jù)?? ?CMP?DX,50000? ;假設(shè)循環(huán)50000次時(shí)間為1秒 ??JB W??? ;未超時(shí),繼續(xù)測(cè)試? ??JMP? OVERTIME ?;超過1秒,報(bào)告犯錯(cuò)READ:? IN??AL,70H ? ;讀入數(shù)據(jù) ? MOV?[BX],AL?? ;數(shù)據(jù)存入緩沖區(qū) ???INC ?BX ???;修改指針????LOOP?ONE ;100個(gè)數(shù)據(jù)尚未輸入完畢,轉(zhuǎn)ONE繼續(xù) ?JMP??DONE ??;100個(gè)數(shù)據(jù)輸入完畢,轉(zhuǎn)DONE結(jié)束程序OVERTIME: LEA??DX,ERROR?? MOV?AH,9 ? INT 21H ?? ;響應(yīng)超時(shí),顯示犯錯(cuò)信息DONE: MOV AX,4C00H ? INT? 21H? ?;返回OSCODE??ENDS ? END? START C語言程序:?main(){inti,status,time,buffer[100];?for(i=0;i<100;i++)??{?outportb(0x72,0x80); ? /*啟動(dòng)輸入*/for(time=0;time<20230;time++){status=inportb(0x71); /*讀狀態(tài)*/if(status&0x20){buffer[i]=inportb(0x70);exit;} /*讀數(shù)據(jù),保存*/}if(time>=20230){printf(“\nOverTime!\n”);exit;}??/*超時(shí)報(bào)錯(cuò)*/}}某輸出設(shè)備數(shù)據(jù)端口、狀態(tài)端口地址分別為220H,221H。狀態(tài)端口D0=1表達(dá)輸出完畢。將數(shù)據(jù)段中以STRING為首地址的20個(gè)字符(用七位ASCII代碼存儲(chǔ))添加水平和垂直校驗(yàn)發(fā)送到該外部設(shè)備。用8086匯編語言編寫完畢上述功能的I/O程序。匯編語言程序:DATA??SEGMENTSTRING? DB??20DUP(?)SUM ??DB ?0DATA ENDS;CODE? SEGMENT????ASSUME?CS:CODE,DS:DATASTART: MOV ?AX,DATA? ?MOV DS,AX ?MOV ?CX,20 ?LEA? ?BX,STRING? ??MOV ?SUM,0???;垂直校驗(yàn)碼初值為0 ONE: MOV DX,221H ??;DX置為狀態(tài)端口地址 ? IN?? AL,DX ? ?TEST??AL,00000001B ;測(cè)試輸出完畢位 ? JZ ONE ?? ;未完畢,轉(zhuǎn)ONE繼續(xù)讀取狀態(tài) ? ?MOV? AL,[BX] ? ;從字符串取出一個(gè)字符的ASCII代碼? ?AND? AL,07FH ;清除最高位,準(zhǔn)備置入校驗(yàn)位 ?JPE? ?OUTPUT?? ;判代碼奇偶屬性, ??OR?? AL,80H???;奇數(shù)個(gè)“1”O(jiān)UTPUT: MOV? DX,220H ? ?OUT ? DX,AL ?;輸出添加了校驗(yàn)位的代碼 ?XOR SUM,AL?? ;生成垂直校驗(yàn)位 ?INC? BX?? ?;修改指針 ???LOOP? ONE ?;20個(gè)數(shù)據(jù)尚未輸出完畢,轉(zhuǎn)ONE繼續(xù)? MOV DX,221H ?;輸出垂直校驗(yàn)代碼LAST:? IN???AL,DX? ? ?? TEST ?AL,00000001B?? ??JZ? LAST ? ?????MOV? AL,SUM ? MOV ?DX,220H ???OUT DX DONE: ?MOV ?AX,4C00H?? ?INT ??21H ? ?;返回OSCODE ?ENDS?? ?END?? START試畫出矩陣式鍵盤查詢的程序流程圖。上述流程中假設(shè)鍵盤為8×8結(jié)構(gòu),假如有鍵按下,返回它的8位掃描碼。其中:最低3位為該鍵所在列,次低3位為該鍵所在行,最高2位為0。假如沒有鍵按下,返回8位“1”。試畫出公用端口多位LED輸出的程序流程圖。
習(xí)題六什么叫中斷?有哪幾種不同類型的中斷?由于某個(gè)事件的發(fā)生,CPU暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行解決該事件的一個(gè)程序。該程序執(zhí)行完畢后,CPU接著執(zhí)行被暫停的程序。這個(gè)過程稱為中斷。 根據(jù)中斷源的位置,有兩種類型的中斷。有的中斷源在CPU的內(nèi)部,稱為內(nèi)部中斷。大多數(shù)的中斷源在CPU的外部,稱為外部中斷。根據(jù)中斷引腳的不同,或者CPU響應(yīng)中斷的不同條件,也可以把中斷劃分為可屏蔽中斷和不可屏蔽中斷兩種。什么是中斷類型?它有什么用處??用若干位二進(jìn)制表達(dá)的中斷源的編號(hào),稱為中斷類型。中斷類型用來區(qū)分不同的中斷,使CPU可以在中斷響應(yīng)時(shí)調(diào)出相應(yīng)的中斷服務(wù)程序進(jìn)行中斷解決。有哪幾種擬定中斷優(yōu)先級(jí)的方法?說明每一種方法各自的優(yōu)劣之處。擬定中斷優(yōu)先權(quán)有四種可選的方法。(1) 軟件查詢法:采用程序查詢的方法擬定中斷服務(wù)的順序。這種方法中斷邏輯最簡(jiǎn)樸(基本上不需要外部中斷邏輯),優(yōu)先級(jí)可以靈活設(shè)立,但中斷響應(yīng)所需時(shí)間最長(zhǎng)。(2)分類申請(qǐng)法:CPU分設(shè)二個(gè)中斷申請(qǐng)信號(hào)的輸入引腳。這種方法需要CPU提供條件。(3)鏈?zhǔn)絻?yōu)先權(quán)排隊(duì):菊花鏈法。這種方法需要的外部中斷邏輯比較簡(jiǎn)樸,容易實(shí)現(xiàn),但是設(shè)備較多時(shí)信號(hào)延遲大,對(duì)設(shè)備故障敏感。(4)可編程中斷控制器:“向量”優(yōu)先權(quán)排隊(duì)專用電路。這種方法功能最全面,控制靈活,可以通過程序設(shè)定中斷優(yōu)先權(quán)為固定的或循環(huán)的,但需要增長(zhǎng)專用的中斷控制器。什么是中斷嵌套?使用中斷嵌套有什么好處?對(duì)于可屏蔽中斷,實(shí)現(xiàn)中斷嵌套的條件是什么?CPU在解決級(jí)別較低的中斷過程中,出現(xiàn)了級(jí)別較高的中斷請(qǐng)求。CPU停止執(zhí)行低檔別中斷的解決程序而去優(yōu)先解決高級(jí)別中斷,等高級(jí)別中斷解決完畢后,再接著執(zhí)行低檔別的未解決完的中斷解決程序,這種中斷解決方式稱為多重(級(jí))中斷或中斷嵌套。使用中斷嵌套可以使高優(yōu)先級(jí)別的中斷得到及時(shí)的響應(yīng)和解決。對(duì)于可屏蔽中斷,由于CPU在響應(yīng)中斷時(shí)已將IF清零,所以一定要在中斷解決程序中加入開中斷指令,才有也許進(jìn)行中斷嵌套。什么叫中斷屏蔽?如何設(shè)立I/O接口的中斷屏蔽?用程序的方法使某些中斷源的中斷請(qǐng)求不可以發(fā)送到CPU,或者雖然可以發(fā)送但是不能得到響應(yīng),這種方法稱為中斷屏蔽。在外設(shè)的接口內(nèi)增設(shè)一個(gè)中斷屏蔽觸發(fā)器(可以用D觸發(fā)器實(shí)現(xiàn)),該觸發(fā)器的端與中斷請(qǐng)求信號(hào)相“與”后連接到INTR。當(dāng)=0時(shí),中斷請(qǐng)求不能發(fā)往INTR。通過設(shè)定中斷屏蔽觸發(fā)器的狀態(tài),可以控制中斷請(qǐng)求信號(hào)是否可以送到INTR端。置IF=0,可以使80x86CPU不響應(yīng)來自INTR的可屏蔽中斷請(qǐng)求。什么是中斷向量?中斷類型為1FH的中斷向量為2345H:1234H,畫圖說明它在中斷向量表中的安頓位置。中斷服務(wù)程序的入口地址稱為中斷向量。中斷類型為1FH,它的中斷向量放置在1FH×4=0000:7CH開始的位置上。如右圖。敘述一次可屏蔽中斷的全過程。(1)中斷源請(qǐng)求中斷外部中斷源通過INTR引腳向CPU請(qǐng)求中斷。(2)中斷響應(yīng)中斷源提出中斷請(qǐng)求后,假如CPU處在允許中斷狀態(tài)(IF=1);沒有不可屏蔽中斷請(qǐng)求和總線請(qǐng)求;當(dāng)前指令執(zhí)行結(jié)束。則轉(zhuǎn)入中斷響應(yīng)周期。在中斷響應(yīng)周期:CPU取得中斷源的中斷類型;將標(biāo)志寄存器FLAGS和CS、IP(斷點(diǎn))先后壓入堆棧保存;清除自陷標(biāo)志位TF和中斷允許標(biāo)志位IF;讀中斷向量表,獲得相應(yīng)的中斷服務(wù)程序入口地址,轉(zhuǎn)入中斷服務(wù)程序。(3)中斷服務(wù)中斷服務(wù)程序的重要內(nèi)容涉及:保護(hù)現(xiàn)場(chǎng)開中斷中斷解決關(guān)中斷恢復(fù)現(xiàn)場(chǎng)(4)中斷返回簡(jiǎn)要敘述8259A內(nèi)部IRR,IMR,ISR三個(gè)寄存器各自的作用。三個(gè)寄存器長(zhǎng)度均為8位。IRR用來記錄引腳IR7~I(xiàn)R0上由外部設(shè)備送來的中斷請(qǐng)求信號(hào)。當(dāng)外部中斷請(qǐng)求線IRi變?yōu)橛行r(shí),IRR中與之相應(yīng)的第i位被置1。IMR用于設(shè)立對(duì)中斷請(qǐng)求的屏蔽信號(hào)。此寄存器的第i位被置1時(shí),與之相應(yīng)的外部中斷請(qǐng)求線IRi被屏蔽,不能向CPU發(fā)出INT信號(hào)??赏ㄟ^軟件設(shè)立IMR內(nèi)容,擬定每一個(gè)中斷請(qǐng)求的屏蔽狀態(tài)。ISR用于記錄當(dāng)前正在被服務(wù)的所有中斷級(jí),涉及尚未服務(wù)完而半途被更高優(yōu)先級(jí)打斷的中斷級(jí)。若CPU響應(yīng)了IRi中斷請(qǐng)求,則ISR中與之相應(yīng)的第i位置1。ISR用于中斷優(yōu)先級(jí)管理。8259A是如何進(jìn)行中斷優(yōu)先權(quán)管理的?8259A通過以下兩種途徑實(shí)現(xiàn)對(duì)中斷優(yōu)先權(quán)的管理:通過設(shè)立中斷屏蔽寄存器IMR,可以屏蔽某些中斷請(qǐng)求,從而動(dòng)態(tài)地改變各請(qǐng)求端的優(yōu)先級(jí)別。8259A響應(yīng)某個(gè)中斷請(qǐng)求之后,將ISR寄存器相應(yīng)位置1。假如后續(xù)的中斷請(qǐng)求級(jí)別低于正在響應(yīng)的中斷請(qǐng)求,則該中斷不能立即被響應(yīng)。反之,假如新的中斷請(qǐng)求級(jí)別高于正在響應(yīng)的中斷請(qǐng)求,則允許進(jìn)行中斷嵌套。中斷服務(wù)結(jié)束時(shí),應(yīng)將ISR寄存器相應(yīng)位清零。特殊全嵌套方式有什么特點(diǎn)?它的使用場(chǎng)合是什么?特殊全嵌套方式一般用于級(jí)聯(lián)方式下的8259A主片。假如8259A主片在一次中斷解決尚未結(jié)束時(shí),收到了來自同一個(gè)引腳的第二次中斷請(qǐng)求,并且該8259A采用普通全嵌套方式,則它不會(huì)響應(yīng)來自同一個(gè)引腳的第二次中斷請(qǐng)求。假如該8259A采用特殊全嵌套方式,就會(huì)響應(yīng)當(dāng)請(qǐng)求(中斷嵌套),從而可以及時(shí)響應(yīng)連接在同一從片8259A上,并且相對(duì)有較高優(yōu)先級(jí)別的中斷請(qǐng)求。向8259A發(fā)送“中斷結(jié)束”命令有什么作用?8259A有哪幾種中斷結(jié)束方式?分析各自的利弊。中斷服務(wù)完畢時(shí),必須給8259A一個(gè)命令,使這個(gè)中斷級(jí)別在ISR中的相應(yīng)位清“0”,表達(dá)該中斷解決已經(jīng)結(jié)束,允許響應(yīng)新的較低檔別的中斷。這個(gè)命令稱為“中斷結(jié)束”命令。8259A有兩種不同的中斷結(jié)束方式。(1)自動(dòng)中斷結(jié)束方式(AEOI)8259A在中斷響應(yīng)周期內(nèi)自動(dòng)清除ISR中相應(yīng)位。這種方式使用簡(jiǎn)樸,但是不能充足實(shí)現(xiàn)中斷的優(yōu)先權(quán)管理。這種方式只能用在系統(tǒng)中只有一個(gè)8259A,且多個(gè)中斷不會(huì)嵌套的情況。(2)非自動(dòng)中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,在程序里向8259A輸出一個(gè)中斷結(jié)束命令(EOI),把ISR相應(yīng)位清“0”。這種方式可以有效地實(shí)現(xiàn)中斷優(yōu)先權(quán)的管理,從而保證高優(yōu)先級(jí)的中斷可以得到及時(shí)響應(yīng)。但是,假如在程序里忘了將ISR相應(yīng)位清零,那么,8259A將不再響應(yīng)這個(gè)中斷以及比它級(jí)別低的中斷請(qǐng)求。某系統(tǒng)中有兩片8259A,從片的請(qǐng)求信號(hào)連主片的IR2引腳,設(shè)備A中斷請(qǐng)求信號(hào)連從片IR5引腳。說明設(shè)備A在一次I/O操作完畢后通過兩片8259A向8086申請(qǐng)中斷,8086CPU通過兩片8259A響應(yīng)中斷,進(jìn)入設(shè)備A中斷服務(wù)程序,發(fā)送中斷結(jié)束命令,返回?cái)帱c(diǎn)的全過程。設(shè)備A通過從片IR5引腳向從片發(fā)出中斷請(qǐng)求;從片將IRR5置“1”,并通過INT(與主片IR2相連)向主片發(fā)出中斷請(qǐng)求;主片將IRR2置“1”,通過INT(與CPU的INTR相連)向CPU發(fā)出中斷請(qǐng)求;CPU通過第一個(gè)向主片和從片響應(yīng)中斷請(qǐng)求;主片8259A在CAS0~CAS2上發(fā)出代碼“010”,表達(dá)連接在IR2上的從片中斷被響應(yīng),同時(shí)主片還把本片ISR2置“1”,把本片IRR2清“0”;從片收到第一個(gè)和主片CAS0~CAS2上發(fā)來的010代碼后,將本片ISR5置“1”,同時(shí)把本片IRR5清“0”。收到第二個(gè)后,將本片IRR5相應(yīng)的中斷類型通過數(shù)據(jù)總線發(fā)往CPU;CPU進(jìn)入設(shè)備A的中斷服務(wù)程序,在程序中先后對(duì)主片和從片發(fā)出中斷結(jié)束命令,兩個(gè)芯片內(nèi)的ISR2和ISR5先后被清零。中斷服務(wù)結(jié)束,返回?cái)帱c(diǎn)繼續(xù)執(zhí)行。某8086系統(tǒng)用3片8259A級(jí)聯(lián)構(gòu)成中斷系統(tǒng),主片中斷類型號(hào)從10H開始。從片的中斷申請(qǐng)連主片的IR4和IR6引腳,它們的中斷類型號(hào)分別從20H、30H開始。主、從片采用電平觸發(fā),嵌套方式,普通中斷結(jié)束方式。請(qǐng)編寫它們的初始化程序。假設(shè)主片端口地址為10H,12H。從片的端口地址分別為18H,1AH和1CH,1EH?!璏OV?AL,00011001B? ?;主片ICW1OUT?10H,AL ?? ;電平觸發(fā),級(jí)連方式MOV?AL,10H ? ;主片ICW2OUT?12H, AL???? ;主片中斷類型MOV AL,01010000B ;主片ICW3OUT?12H,AL??? ?;IR4,IR6連有從片MOV AL,00010001B ??;主片ICW4OUT 12H,AL? ??;特殊全嵌套,非自動(dòng)中斷結(jié)束MOV AL,00011001B? ?;從片ICW1OUT 18H,AL??? ;電平觸發(fā),級(jí)連方式MOV?AL,20H ?? ?;從片ICW2OUT 1AH,AL? ? ;從片中斷類型MOV AL,00000100B ;從片ICW3OUT 1AH,AL? ?? ;本片連接在主片IR4引腳上MOV AL,00000001B ??;從片ICW4OUT?1AH,AL? ???;非特殊全嵌套,非自動(dòng)中斷結(jié)束MOV AL,00011001B?? ;從片ICW1O(jiān)UT?1CH,AL? ? ;電平觸發(fā),級(jí)連方式MOV AL,30H ??;從片ICW2OUT 1EH,?AL ? ;從片中斷類型MOV?AL,00000110B? ;從片ICW3OUT?1EH,AL ? ;本片連接在主片IR6引腳上MOV?AL,00000001B ? ;從片ICW4OUT?1EH,AL ? ;非特殊全嵌套,非自動(dòng)中斷結(jié)束注意:由于8086系統(tǒng)有16根數(shù)據(jù)線,各8259A的端口地址均為偶數(shù)(假設(shè)各8259A的數(shù)據(jù)線連接在8086系統(tǒng)的低8位數(shù)據(jù)線上)。主片用特殊全嵌套,從片用一般全嵌套。給下面的8259A初始化程序加上注釋,說明各命令字的含義。MOV AL,13H??;ICW1:邊沿觸發(fā),單片8259AOUT?50H,AL? ;MOV?AL,08H??;ICW2:中斷類型高5位為00001OUT?51H,AL ?;MOV AL,0BH ?;ICW4:非特殊全嵌套,緩沖方式,主片,非自動(dòng)中斷結(jié)束OUT 51H,AL??;設(shè)8259A端口地址為20H和21H,如何發(fā)送清除ISR3的命令?為了清除ISR3,需要通過OCW2發(fā)送特殊的中斷結(jié)束命令,使SL=1,EOI=1,L2L1L0=011。指令如下:? MOV?AL,01100011B??OUT? 20H,AL圖4-17能否直接用于8086系統(tǒng)?為什么?圖4-17不能直接用于8086系統(tǒng),因素是:多個(gè)設(shè)備的中斷請(qǐng)求假如直接送往CPU,應(yīng)采用“線或”的方法,每個(gè)接口的中斷請(qǐng)求信號(hào)應(yīng)由“OC門(集電極開路門)”以“負(fù)邏輯”的方式連接,如下圖。電路沒有解決中斷優(yōu)先權(quán)的問題。CPU用信號(hào)響應(yīng)中斷時(shí),會(huì)將所有正在申請(qǐng)中斷的接口的請(qǐng)求信號(hào)清除。加接“菊花鏈”可以解決該問題。電路沒有解決中斷類型的發(fā)送問題,需要增長(zhǎng)相關(guān)電路。例如,把設(shè)備接口的INTR連接到8259A。?習(xí)題七8255A的方式選擇控制字和C口按位控制字的端口地址是否同樣,8255A如何區(qū)分這兩種控制字?寫出A端口作為基本輸入,B端口作為基本輸出的初始化程序。解:8255A的方式選擇控制字和C口按位控制字的端口地址同樣,它們之間的區(qū)別在控制字的D7位(特性位)的值不同,8255A的方式選擇控制字D7=1,而C口按位置位/復(fù)位控制字D7=0。初始化程序:(設(shè)端口地址為,A口:200H,B口:201H,控制口:203H)MOV AL,90HMOV ?DX,203HOUT ? DX,AL用8255A的A端口接8位二進(jìn)制輸入,B端口和C端口各接8只發(fā)光二極管顯示二進(jìn)制數(shù)。編寫一段程序,把A端口讀入的數(shù)據(jù)送B端口顯示,而C端口的各位則采用置0/置1的方式顯示A端口的值。解:(設(shè)端口地址為,A口:200H,B口:201H,C口:202H,控制口:203H)MOV AL, 90H? ;8255A初始化:MOV DX,?203H? ;8255A(chǔ)各組方式0,A口輸入OUT DX, AL ??;B、C口輸出MOV DX,?200HIN?AL,?DX? ;讀A口輸入值MOV DX,?201HOUT DX, AL? ;送B口輸出MOV AH,?AL ? ;A口輸入值轉(zhuǎn)存在AH中MOV?DX,?203HMOV CX,?08? ;CX置循環(huán)次數(shù)初值MOV AL,?00H??;C端口置0/置1控制字初值LPA:AND AL, 0FEH ?;清除最低位SHR?AH, 1???;A端口一位轉(zhuǎn)入CFADC?AL, 0 ?;A端口一位從CF轉(zhuǎn)入命令字OUT?DX,?AL???;A端口一位從送往C端口相應(yīng)位ADD AL, 02H ;形成下一個(gè)命令字LOOP?LPA ? ;解決C端口下一位將8255A用作兩臺(tái)計(jì)算機(jī)并行通信的接口電路,請(qǐng)畫出采用查詢式輸入/輸出方式工作的接口電路,并寫出采用查詢式輸入/輸出方式的程序。解:用兩片8255作兩臺(tái)計(jì)算機(jī)8088_A與8088_B之間并行通信的接口電路,兩片8255之間的連接如下圖所示。兩片8255均在方式1、查詢方式下工作。(1)8088_A輸出程序:(8255_A的A口作為數(shù)據(jù)輸出口,C口的PC0作為“數(shù)據(jù)輸出選通”信號(hào),負(fù)脈沖輸出。C口的PC6作為“應(yīng)答”信號(hào)輸入,負(fù)脈沖有效。端口地址:
A口:200H,C口:202H,控制口:203H)DATA?SEGMENTBuffer DB “Thisisaexample.”,0DH,0AH,-1DATA?ENDSCODE?SEGMENTSTART:?MOV AX,DATA MOV?DS,AX?LEA BX,Buffer?;輸出緩沖區(qū)指針?biāo)虰X MOV DX,203H?MOV AL,0A0H?;8255_A的方式選擇字,A口工作在方式1、輸出,C口低四位輸出 OUT DX,AL??MOV AL,1?OUT DX,AL?;將PC0置1?CALL DELAY ;延時(shí)等待對(duì)方完畢初始化 ?;A口查詢方式輸出NEXT: MOV?DX,202H IN AL,DL TEST AL,80H?;判別是否有效?JZ NEXT ;數(shù)據(jù)尚未取走,等待 MOV DX,200H?MOV AL,[BX] OUT?DX,AL?;輸出一項(xiàng)數(shù)據(jù)?INC?BX MOV DX,203H?MOV AL,0?OUT DX NOP NOP INC AL OUT DX,AL?;通過PC0向?qū)Ψ桨l(fā)選通信號(hào)(負(fù)脈沖) CMP BYTEPTR[BX-1],-1 ;判斷輸出是否完畢?JNE?NEXT ;未完畢,繼續(xù)?MOV AX,4C00H INT?21HCODE ENDS END START(2)8088_B輸入程序:(8255_B的A口作為輸入,方式1,PC4作為“數(shù)據(jù)輸入選通”信號(hào),輸入,負(fù)脈沖有效。PC0為“應(yīng)答”信號(hào)輸出,負(fù)脈沖有效。端口地址:A口:210H,C口:212H,控制口:213H)DATA?SEGMENTBuffer?DB?80DUP(?)DATA ENDS;CODE?SEGMENTSTART:?MOV AX,DATA?MOV DS,AX?LEA BX,Buffer ;輸入緩沖區(qū)指針?biāo)虰X?MOV?DX,213H MOV AL,0B0H?;8255_B的方式選擇字,A口工作在方式1,輸入,C口低四位輸出。 OUT?DX,?MOV?AL,01H OUT DX,AL ;PC0置1,表達(dá)沒有“應(yīng)答”信號(hào) CALL DELAY?;延時(shí)等待對(duì)方狀態(tài)就緒;A口查詢方式輸入AGA: MOV DX,212H?IN AL,DX?TEST?AL,20H?JZ AGA ??;PC5(IBF)是否為1,不是,無數(shù)據(jù)輸入,繼續(xù)查詢?MOV DX,210H IN AL,DX?MOV [BX],AL MOV?DX,212H MOV?AL,0?OUT DX?INC?BX NOP NOP INC AL?OUT DX,AL?;通過PC0向發(fā)送方發(fā)“應(yīng)答”負(fù)脈沖?CMP?BYTEPTR[BX-1],-1 ;數(shù)據(jù)接受完了嗎??JNE AGA ;未完,繼續(xù) MOV AX,4C00H INT?21HCODE?ENDS END?START說明:這道題有多種可選的解法,上面的方法是程序比較簡(jiǎn)樸的一種。這種方法實(shí)行時(shí),應(yīng)先啟動(dòng)8088B,使它一方面“就緒”,然后開始通訊。由于雙方都用負(fù)脈沖進(jìn)行選通,聯(lián)絡(luò)過程比較簡(jiǎn)樸,也比較可靠。可選的另一種方法是:在上述連接的基礎(chǔ)上用中斷方式進(jìn)行數(shù)據(jù)傳輸,以提高CPU的工作效率。需要編制雙方的中斷服務(wù)程序,初始化時(shí)要設(shè)立中斷向量,允許8255中斷,開放中斷等操作。當(dāng)然也要連接相應(yīng)的中斷請(qǐng)求信號(hào)線??蛇x的第三種方法是:雙方用一根狀態(tài)線(C端口某一位)送往對(duì)方,用這兩根線進(jìn)行聯(lián)絡(luò)(“握手”)。這種方法看似簡(jiǎn)樸,其實(shí)程序是比較復(fù)雜的。雙方聯(lián)絡(luò)的過程如下圖。 ?8088B在初始化完畢后,把它的狀態(tài)線置為“高電平”,表達(dá)可以開始接受數(shù)據(jù)。而8088A在初始化完畢后,把它的狀態(tài)線置為“低電平”,表達(dá)數(shù)據(jù)傳輸尚未開始。8088A查詢8088B的狀態(tài),在發(fā)現(xiàn)8088B“就緒”(狀態(tài)線為高電平)后,把數(shù)據(jù)發(fā)往8255的(A或B)端口。8088A發(fā)出數(shù)據(jù)之后把本機(jī)狀態(tài)置為“就緒”(高電平),表達(dá)數(shù)據(jù)已經(jīng)送到端口的數(shù)據(jù)線上。8088B查詢8088A的狀態(tài),得知8088A的狀態(tài)線“就緒”,知道8088A已經(jīng)把數(shù)據(jù)送出,于是從8255接受數(shù)據(jù),并把自身的狀態(tài)線置為“未就緒”,表達(dá)已經(jīng)把8088A發(fā)出的數(shù)據(jù)接受。8088A查詢到8088B的狀態(tài)線變?yōu)榈碗娖?,知道?duì)方已經(jīng)把數(shù)據(jù)接受完畢,于是把本機(jī)的狀態(tài)線置為“低電平”,表達(dá)這個(gè)數(shù)據(jù)的發(fā)送已經(jīng)完畢,而下一個(gè)數(shù)據(jù)尚未發(fā)出。8088B查詢到8088A的狀態(tài)線變?yōu)椤暗碗娖健?知道對(duì)方已經(jīng)結(jié)束了第一個(gè)數(shù)據(jù)的傳輸,在本機(jī)做好下一個(gè)數(shù)據(jù)的接受準(zhǔn)備之后(例如,把數(shù)據(jù)存入緩沖區(qū),假如緩沖區(qū)滿,則把緩沖區(qū)內(nèi)容存入磁盤文獻(xiàn)),把本機(jī)狀態(tài)線置為“高電平”,表達(dá)已經(jīng)做好了接受下一個(gè)數(shù)據(jù)的準(zhǔn)備。8088A得知8088B做好準(zhǔn)備,發(fā)送下一個(gè)數(shù)據(jù)。于是,下一個(gè)數(shù)據(jù)的傳輸可以由此開始(轉(zhuǎn)①)。這種方法實(shí)行時(shí),應(yīng)一方面啟動(dòng)8088A。設(shè)計(jì)一個(gè)用8255A作為8?jìng)€(gè)七段顯示器的接口電路,并設(shè)計(jì)一個(gè)把內(nèi)存地址為ADDRA的8個(gè)數(shù)字在這8?jìng)€(gè)七段顯示器上顯示的程序。解:設(shè)8個(gè)七段顯示器采用共陽接法,A口控制段的顯示,B口控制位的顯示。端口地址A口:200H,B口:201H,控制口:203HDATA?SEGMENT ADDRA ?DB ×,×,×,×,×,×,×,×?TABLE??DB 40H,4FH,24H,30H,19H??DB?12H,02H,78H,00H,10HDISPBIT? DB ?DATA?ENDSCODE SEGMENTASSUME CS:CODE,?DS:DATASTART:MOV?AX, DATA ??MOV DS,?AXMOV AL, 80H?;對(duì)8255A初始化,方式0,輸出MOV DX, 203H?OUT?DXLEA?BX,?TABLE ;BX置為七段碼表首地址MOV DISPBIT,?7FH?;置位碼初值為7FHLEA SI,?ADDRA ;SI置為顯示緩沖區(qū)首地址MOV?CX, 8?;CX置為循環(huán)次數(shù)初值8AGA:?MOV AL,?0FFH? ??MOV DX, 201HOUT DX,?AL?;熄滅所有數(shù)碼管MOV?AL,?[SI] ;取出一個(gè)待顯示數(shù)?XLAT ?;轉(zhuǎn)換成七段碼MOV?DX, 200HOUT?DX, AL?;送入段碼端口MOV AL, DISPBIT?;MOV?DX, 201HOUT DX, AL ;送當(dāng)前位碼,點(diǎn)亮一個(gè)數(shù)碼管ROR?DISPBIT, 1?;產(chǎn)生下一個(gè)位碼INC SI??;修改指針,指向下一個(gè)待顯示數(shù)據(jù)CALL DELAY ;延時(shí)LOOP?AGA? ;解決下一個(gè)數(shù)碼管的顯示MOV?AX,?4C00HINT 21HCODE?ENDSEND?START8254定期/計(jì)數(shù)器的定期與計(jì)數(shù)方式有什么區(qū)別?8254在方式0工作時(shí),各通道的CLK、GATE信號(hào)有什么作用?各通道的控制字地址都相同,8254是如何區(qū)分的?解:8254作為計(jì)數(shù)器使用時(shí),對(duì)CLK端的輸入脈沖進(jìn)行單純的減法計(jì)數(shù),這時(shí)CLK端輸入的脈沖不作為計(jì)時(shí)基準(zhǔn)。此外,用作計(jì)數(shù)器時(shí),計(jì)數(shù)完畢后必須重新初始化,只能使用一次。?8254作為定期器使用時(shí),規(guī)定CLK端輸入的脈沖必須作為時(shí)鐘基準(zhǔn),通過對(duì)該基準(zhǔn)時(shí)鐘脈沖的計(jì)數(shù)來實(shí)現(xiàn)精擬定期。用作定期器時(shí),計(jì)數(shù)的過程周而往復(fù),反復(fù)進(jìn)行。8254工作在方式0時(shí),CLK端輸入計(jì)數(shù)用的脈沖信號(hào);GATE信號(hào)為高電平時(shí),對(duì)CLK端輸入的脈沖進(jìn)行計(jì)數(shù);GATE信號(hào)為低電平時(shí),暫停計(jì)數(shù);GATE信號(hào)重新為高電平后,恢復(fù)原先的計(jì)數(shù)。由8254的方式控制字中的D7、D6兩位來選擇計(jì)數(shù)通道。設(shè)8254的端口地址為0240H~0243H,通道0輸入的CLK頻率為1MHz,為使通道0輸出1KHz的方波,編寫初始化程序。假如讓通道0與通道1級(jí)聯(lián)(即OUT0接CLK1)實(shí)現(xiàn)1秒鐘定期,則初始化程序如何編制。解:通道0輸出1KHz的方波:計(jì)數(shù)初值為1MHz/1KHz=1000,等于十六進(jìn)制數(shù)03E8H,控制字設(shè)定為先寫低8位,后寫高8位,方式3工作,二進(jìn)制計(jì)數(shù)方式,所以控制字為36H。初始化程序如下:MOV?AL,36H?;MOV DX,243H ;寫入通道0的控制字OUT? DX,AL?;MOV DX,240H ;MOVAL,0E8H ;寫入通道0的時(shí)間常數(shù)OUT?DX,AL?;MOVAL,03H ;?OUT DX,AL ;通道0與通道1級(jí)聯(lián)實(shí)現(xiàn)1秒定期:要實(shí)現(xiàn)1秒定期,對(duì)1MHz輸入脈沖進(jìn)行分頻的系數(shù)為1000000=5000×200。通道0工作在方式2,分頻系數(shù)200,采用十進(jìn)制計(jì)數(shù),則通道0方式控制字為:25H。通道1工作在方式0,分頻系數(shù)5000,也采用十進(jìn)制計(jì)數(shù),則通道1方式控制字為:61H。初始化程序如下:MOVAL,25H?;通道0控制字:方式2,十進(jìn)制計(jì)數(shù),只寫高8位MOVDX,243H?;OUTDX,AL ;MOVAL,61H ;通道1控制字:方式0,十進(jìn)制計(jì)數(shù),只寫高8位OUTDX,AL ;MOVDX,0240H ;MOVAL,02H?;通道0時(shí)間常數(shù)(BCD數(shù)高8位)OUTDX,AL?;MOVAL,50H?;通道1時(shí)間常數(shù)(BCD數(shù)高8位)MOVDX,0241H?;OUTDX,AL?;假如要再次進(jìn)行1秒鐘定期,則需要對(duì)通道1重新初始化。假如需要連續(xù)的1秒定期信號(hào),則通道1應(yīng)選用方式3。?對(duì)總數(shù)為1000000的分頻系數(shù),可以有多種分解方法。編制一個(gè)使PC機(jī)的8254產(chǎn)生600Hz方波的程序,并使該方波送至揚(yáng)聲器發(fā)聲。解:PC機(jī)中運(yùn)用8254定期器的通道2來驅(qū)動(dòng)揚(yáng)聲器。通道2的工作及其輸出受到主板上8255A的PB口(口地址61H)控制:GATE2接PB0,即PB0=1時(shí),定期器才也許工作;OUT2與PB1相與后輸出到揚(yáng)聲器,即PB1=1時(shí),定期器2的OUT2才干輸出到揚(yáng)聲器。定期器的輸出波形是對(duì)1.1931MHZ頻率信號(hào)分頻得到的,因此將定期器2工作在方式3,分頻系數(shù)用下式計(jì)算:分頻系數(shù)=1193100÷給定頻率(1193100=12348CH)因此程序如下:MOV?AL, 0B6H ;通道2控制字:方式3,16位常數(shù)OUT 43H,?AL ?;送入8254控制端口MOV DX,?12H ;MOV?AX, 348CH ;DX,AX中置入常數(shù)12348CHMOV?DI,?600 ;DI為輸出頻率DIV?DI?? ;除法運(yùn)算,計(jì)算分頻系數(shù)OUT 42H, AL? ;低8位送通道2MOV AL,?AH? ;OUT 42H, AL ;高8位送通道2IN AL,?61H ;OR?AL,?3 ?;OUT?61H, AL ;將8255A的B端口低2位置“1在RS-232C接口標(biāo)準(zhǔn)中,引腳TxD、RxD、、、、、的功能是什么?解:TxD:串行數(shù)據(jù)輸出。RxD:串行數(shù)據(jù)輸入。:數(shù)據(jù)終端準(zhǔn)備好狀態(tài),低電平有效。用于向調(diào)制解調(diào)器或外設(shè)表達(dá)數(shù)據(jù)終端已準(zhǔn)備好。:數(shù)據(jù)設(shè)備準(zhǔn)備好狀態(tài),低電平有效。調(diào)制解調(diào)器或外設(shè)準(zhǔn)備好時(shí)eq\o(\s\up7(——),DSR)有效。:請(qǐng)求發(fā)送信號(hào),低電平有效。表達(dá)數(shù)據(jù)終端設(shè)備已經(jīng)做好發(fā)送數(shù)據(jù)的準(zhǔn)備,請(qǐng)調(diào)制解調(diào)器/外設(shè)準(zhǔn)備接受數(shù)據(jù)。:清除發(fā)送(允許傳送)信號(hào),低電平有效。調(diào)制解調(diào)器/外設(shè)作好傳送準(zhǔn)備,允許數(shù)據(jù)終端設(shè)備發(fā)送數(shù)據(jù)時(shí)有效。16550的通信控制寄存器中的尋址位有什么作用?在初始化編程時(shí),應(yīng)當(dāng)如何設(shè)立?解:16550芯片內(nèi),接受緩沖寄存器/發(fā)送保持寄存器的地址與除數(shù)低字節(jié)寄存器的地址相同,中斷允許寄存器的地址與除數(shù)高字節(jié)寄存器的地址相同。為了區(qū)分同一地址的不同用途,16550使用DLAB位來加以標(biāo)記。DLAB位是通信線控制寄存器的最高位D7,該位設(shè)立為0,隨后的相應(yīng)操作對(duì)接受緩沖寄存器/發(fā)送保持寄存器或中斷允許寄存器進(jìn)行;該位設(shè)立為1,隨后的相應(yīng)操作對(duì)除數(shù)寄存器進(jìn)行。在向除數(shù)寄存器寫入初值之前,應(yīng)將DLAB置為1。由于一般不需要反復(fù)訪問除數(shù)寄存器,寫完除數(shù)后應(yīng)將DLAB置為0,以方便后續(xù)的操作。編寫用PC機(jī)中16550查詢方式輸入50個(gè)字符的異步通信程序。設(shè)16550的端口地址為3F8H~3FFH,數(shù)據(jù)格式為:8位數(shù)據(jù)位、1位偶校驗(yàn)位、2位停止位,通信速率為19.2Kbps。解:接受子程序中,假如接受成功,清CF標(biāo)志,否則,置位CF標(biāo)志位。程序如下:;16550查詢方式接受程序DATA SEGMENT REC_DATA?DB50DUP(?)?;存放接受的數(shù)據(jù) TIMES ?DW50?? ;要接受的數(shù)據(jù)個(gè)數(shù)DATA ENDSCODE?SEGMENT?ASSUME CS:CODE,DS:DATA?BEGIN:?MOV AX,DATA MOV DS,AX;初始化16550 MOV?DX,03FBH ;16550控制寄存器地址送DX?MOV AL,80H ?;置DLAB=1,設(shè)立除數(shù)寄存器?OUT DX,AL MOV AX,003CH??;波特率為19200bps時(shí),除數(shù)為003CH?MOV DX,03F8H? ?;除數(shù)寄存器地址送DX OUT?DX,AL?MOV?AL,AH?INC DX OUT DX,AL?MOV AL,1FH? ?;8位數(shù)據(jù)位,偶校驗(yàn),2位停止位?MOV DX,03FBH??;16550控制寄存器地址送DX?OUT?DX,AL ??;寫入控制字……CALL?RECEIVE……MOV AH,4CH ;程序結(jié)束,返回操作系統(tǒng) INT 21H ;查詢方式接受子程序RECEIVEPROC?NEAR LEA?BX,REC_DATA?;接受緩沖區(qū)首地址送BX?MOV?CX,TIMES ?;要接受的數(shù)據(jù)個(gè)數(shù)送CXREPIN:?MOV DX,03FDH ;通信狀態(tài)寄存器地址送DX?IN?AL,DX TEST AL,1EH??;檢測(cè)接受過程有無錯(cuò)誤 JNZ?ERROR?TEST?AL,01H??;檢測(cè)接受緩沖器中是否有數(shù)據(jù) JZ REPIN? ;沒有數(shù)據(jù),繼續(xù)檢測(cè) MOV?DX,03F8H??;數(shù)據(jù)接受寄存器地址送DX IN AL,DX?MOV?[BX],AL INC?BX LOOP?REPIN?CLC? ??;接受成功,清CF標(biāo)志位?JMP DONEERROR: STC? ??;接受不成功,置CF標(biāo)志位DONE:?RETRECEIVE?ENDPCODE ENDS?END?BEGINIntel8251A與16550芯片相比較,有些什么不同之處?答:兩個(gè)芯片的重要區(qū)別是:16550芯片只能進(jìn)行異步串行通訊,而Intel8251A不僅可以進(jìn)行異步串行通訊,并且也可以用于同步串行通訊。Intel8251A芯片沒有內(nèi)部的波特率發(fā)生電路,因此,它所需要的發(fā)送、接受時(shí)鐘信號(hào)只能依賴外部提供。為什么Intel8251A芯片初始化時(shí)需要先送3個(gè)00H,1個(gè)40H?是否每次都需要?答:由于Intel8251A只使用兩個(gè)端口地址,所有的控制信息都寫入同一個(gè)地址的端口內(nèi)。這樣,所有的控制信息必須按照一定的順序?qū)懭?否則就會(huì)產(chǎn)生錯(cuò)誤。為了保證初始化時(shí),Intel8251A芯片處在初始的狀態(tài),可以向Intel8251A先送3個(gè)00H,1個(gè)40H。假如程序可以保證Intel8251A已經(jīng)處在初始狀態(tài),那么這項(xiàng)操作是可以省略的。?習(xí)題八什么是DMA傳輸?DMA傳輸有什么優(yōu)點(diǎn)?為什么?所謂直接存儲(chǔ)器傳送(DMA)是指將外設(shè)的數(shù)據(jù)不通過CPU直接送入內(nèi)存儲(chǔ)器,或者,從內(nèi)存儲(chǔ)器不通過CPU直接送往外部設(shè)備。使用DMA傳輸之后,每個(gè)數(shù)據(jù)的傳輸過程不需要CPU參與,在DMA控制器的控制下,在一個(gè)DMA總線周期里完畢數(shù)據(jù)在外部接口和存儲(chǔ)單元之間的直接傳輸。所以使用DMA傳輸既可以減輕CPU的承擔(dān),又可以縮短系統(tǒng)對(duì)外部設(shè)備的響應(yīng)時(shí)間,提高數(shù)據(jù)傳輸速率。敘述一次數(shù)據(jù)塊DMA傳輸和一個(gè)數(shù)據(jù)DMA傳輸?shù)娜^程。一次數(shù)據(jù)塊DMA傳輸?shù)娜^程:程序?qū)MA控制器進(jìn)行初始化,寫入存儲(chǔ)器數(shù)據(jù)塊首地址,傳輸字節(jié)數(shù),傳輸方向等信息。同時(shí)啟動(dòng)外部設(shè)備(例如,啟動(dòng)輸出設(shè)備進(jìn)行第一次輸出);外部設(shè)備每完畢一次輸入/輸出,它的完畢信號(hào)通過DMA控制器啟動(dòng)一次DMA數(shù)據(jù)傳輸;所有預(yù)設(shè)的數(shù)據(jù)傳輸完畢,DMA控制器發(fā)出“傳輸完畢”信號(hào),向CPU申請(qǐng)中斷。CPU在中斷服務(wù)程序中設(shè)立完畢標(biāo)志,或者對(duì)DMA控制器進(jìn)行下一次初始化。一個(gè)數(shù)據(jù)DMA傳輸?shù)娜^程。外設(shè)準(zhǔn)備就緒,需要進(jìn)行DMA操作時(shí),向DMA控制器發(fā)出“DMA請(qǐng)求信號(hào)”。DMA控制器接到此信號(hào)后,向CPU發(fā)“總線請(qǐng)求信號(hào)”。CPU接到總線請(qǐng)求信號(hào),在當(dāng)前總線周期結(jié)束后,發(fā)出“DMA響應(yīng)信號(hào)”。DMAC向外部設(shè)備發(fā)出“外設(shè)讀”或“外設(shè)寫”控制信號(hào),向存儲(chǔ)器發(fā)出“存儲(chǔ)器寫”或“存儲(chǔ)器讀”控制信號(hào),同時(shí)發(fā)出存儲(chǔ)單元地址。在這二個(gè)信號(hào)的作用下,一字節(jié)的數(shù)據(jù)從外設(shè)接口通過數(shù)據(jù)總線送往存儲(chǔ)單元,或者從存儲(chǔ)單元送往外設(shè)接口。傳送1個(gè)字節(jié)之后,DMAC自動(dòng)修改內(nèi)部地址寄存器和字節(jié)計(jì)數(shù)器的內(nèi)容。DMA控制器撤消“總線請(qǐng)求信號(hào)”,CPU也撤消“總線應(yīng)答”信號(hào)。什么叫DMA通道?它如何組成?DMA通道是控制一個(gè)外設(shè)接口和存儲(chǔ)器進(jìn)行DMA傳輸?shù)南嚓P(guān)電路的總和。每個(gè)通道涉及地址寄存器、字節(jié)計(jì)數(shù)器、方式寄存器、DMA請(qǐng)求觸發(fā)器、屏蔽觸發(fā)器、狀態(tài)寄存器以及所需的其他控制電路。DMA控制器8237A的成組傳送方式和單字節(jié)傳送方式各有什么特點(diǎn)?它們的合用范圍各是什么?成組傳送方式下,DMA控制器獲得總線控制權(quán)后,可以連續(xù)進(jìn)入多個(gè)DMA周期,進(jìn)行多個(gè)字節(jié)的傳輸。這種方式可以獲得最高的數(shù)據(jù)傳輸速度。在數(shù)據(jù)傳輸期間,CPU不能訪問總線。假如一次傳輸?shù)臄?shù)據(jù)較多,這種方式會(huì)對(duì)系統(tǒng)工作產(chǎn)生一定的影響。成組傳送方式合用于外部設(shè)備規(guī)定很高的傳輸速率,系統(tǒng)其他承擔(dān)較輕,連續(xù)占用總線不會(huì)產(chǎn)生嚴(yán)重后果的情形。在單字節(jié)傳輸方式下,8237A完畢1個(gè)字節(jié)傳輸后都釋放系統(tǒng)總線,一次DMA傳輸結(jié)束,CPU可以在每個(gè)DMA周期結(jié)束后控制總線。這種方式合用于外部設(shè)備的傳輸速率規(guī)定不太高,或者系統(tǒng)不允許有較長(zhǎng)時(shí)間停頓的情況。如何用指令啟動(dòng)一次DMA傳輸?如何用指令允許/關(guān)閉一個(gè)通道的DMA傳輸?用指令將DMA請(qǐng)求寄存器中相關(guān)位置位,可以啟動(dòng)一次DMA傳輸。用指令將DMA屏蔽寄存器中相關(guān)位復(fù)位,可以允許一個(gè)通道的DMA傳輸。將DMA屏蔽寄存器中相關(guān)位置位,可以關(guān)閉一個(gè)通道的DMA傳輸。DMA控制器8237A能不能用中斷方式工作?請(qǐng)說明。DMA控制器8237A可以用中斷方式工作。將8237A的信號(hào)反相后連接到中斷控制器的中斷請(qǐng)求輸入端,則一次數(shù)據(jù)塊傳輸結(jié)束后,可以向CPU申請(qǐng)中斷,由專門的中斷服務(wù)程序進(jìn)行結(jié)束解決。如何判斷某通道的DMA傳輸是否結(jié)束?有幾種方法可供使用?判斷某通道的DMA傳輸是否結(jié)束有二種方法。其一是讀出DMA控制器的狀態(tài)寄存器內(nèi)容,測(cè)試其中代表該通道的狀態(tài)位,可以得知該通道的DMA傳輸是否結(jié)束。其二是讀出該通道的字節(jié)計(jì)數(shù)器內(nèi)容,假如值為0(對(duì)8237A而言為-1),表達(dá)該通道的DMA傳輸已經(jīng)結(jié)束。此外,可以用8237A的信號(hào)向CPU申請(qǐng)中斷。一旦進(jìn)入這個(gè)中斷服務(wù)程序,表白該通道的DMA傳輸已經(jīng)結(jié)束。敘述一次DMA控制器8237A編程使用的重要環(huán)節(jié)。DMA控制器8237A初始化編程的重要環(huán)節(jié)為:發(fā)復(fù)位命令;寫命令字,設(shè)立8237A的工作方式;寫方式字,設(shè)立需使用的通道的工作方式;清除先/后觸發(fā)器;寫入內(nèi)存儲(chǔ)器起始地址;寫入傳送的字節(jié)數(shù)-1;清除該通道的屏蔽位;啟動(dòng)外部設(shè)備,假如是內(nèi)存到輸出設(shè)備,用指令設(shè)立第一次DMA請(qǐng)求。使用DMA控制器8237A傳輸一個(gè)字節(jié)需要多少時(shí)間?受那些因素影響?請(qǐng)作具體分析。使用DMA控制器8237A傳輸1字節(jié)數(shù)據(jù)需要4個(gè)DMA控制器使用的時(shí)鐘周期,對(duì)于速度稍慢的外設(shè)/存儲(chǔ)器,也可以插入一個(gè)或多個(gè)等待周期。影響DMA周期時(shí)間長(zhǎng)短的因素有:DMA控制器使用的時(shí)鐘頻率:頻率越高,DMA周期越短;存儲(chǔ)器和外部設(shè)備的工作速度:假如速度跟不上DMA時(shí)鐘的規(guī)定,則需要插入等待周期,從而延長(zhǎng)整個(gè)DMA周期;使用壓縮時(shí)序可以縮短DMA周期;假如存儲(chǔ)器數(shù)據(jù)塊首地址低8位為“0”,前256個(gè)字節(jié)內(nèi)存地址的高8位相同,它們傳送時(shí)只需要發(fā)送一次高8位地址,后面255個(gè)數(shù)據(jù)的DMA周期達(dá)成最小;假如進(jìn)行存儲(chǔ)器之間數(shù)據(jù)傳輸,每個(gè)字節(jié)的傳輸需要二個(gè)DMA周期。?習(xí)題九A/D和D/A轉(zhuǎn)換在微機(jī)應(yīng)用中分別起什么作用?計(jì)算機(jī)加工、解決的信號(hào)可以分為數(shù)字量(Digit)和模擬量(Analog)兩種類型。現(xiàn)代計(jì)算機(jī)內(nèi)部都采用二進(jìn)制表達(dá)的數(shù)字量進(jìn)行信號(hào)的輸入、存儲(chǔ)、傳輸、加工與輸出。為了使用計(jì)算機(jī)對(duì)模擬量進(jìn)行采集、加工和輸出,需要把模擬量轉(zhuǎn)換成便于數(shù)字計(jì)算機(jī)存儲(chǔ)和加工的數(shù)字量(A/D轉(zhuǎn)換),或者把數(shù)字量轉(zhuǎn)換成模擬量(D/A轉(zhuǎn)換)。因此,D/A與A/D轉(zhuǎn)換是計(jì)算機(jī)用于多媒體、工業(yè)控制等領(lǐng)域的一項(xiàng)重要技術(shù)。如何將D/A轉(zhuǎn)換器連接到微型計(jì)算機(jī)?D/A轉(zhuǎn)換器將數(shù)字量轉(zhuǎn)換成模擬量輸出。為了保存由計(jì)算機(jī)送來的數(shù)字信號(hào),通常需要配置一個(gè)“數(shù)據(jù)寄存器”,向D/A轉(zhuǎn)換器提供穩(wěn)定的數(shù)字信號(hào)。D/A轉(zhuǎn)換芯片輸出的模擬信號(hào)功率一般比較小,為了可以驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)工作,D/A轉(zhuǎn)換器的輸出一般都要連接到運(yùn)算放大器進(jìn)行功率放大。修改圖9-5,將DAC0832的兩級(jí)鎖存合為一級(jí)使用,畫出連接圖,并編寫輸出三角波和鋸齒波的程序。為了將DAC0832的二級(jí)緩沖鎖存器合為一級(jí)使用,可以將它的第二級(jí)置為“直通”,也就是把和接地,用第一級(jí)的和對(duì)輸入進(jìn)行控制,如下圖。輸出三角波的程序段如下:S0:?MOVAL,0 ;AL中置初值0,輸出三角波的上升段S1: CALL?OUTPUT????;調(diào)用輸出子程序,輸出一個(gè)值?INC?AL ? ;產(chǎn)生上升段下一個(gè)值 JNZ S1? ?;上升段未結(jié)束,繼續(xù)輸出? DEC?AL? ??;恢復(fù)到最大值S2: CALL OUTPUT ?? ;輸出三角波的下降段 DEC?AL?? ;產(chǎn)生下降段下一個(gè)值 ?JNZ??S2 ;下降段未結(jié)束,繼續(xù)輸出 JMP S1 ??? ;下降段結(jié)束,輸出下一個(gè)三角波輸出鋸齒波的程序段如下:MOV AL,0J1:CALL OUTPUT???;輸出當(dāng)前值INC?AL? ;產(chǎn)生下一個(gè)輸出值JMP J1子程序“OUTPUT”為上面兩段程序共用:OUTPUT?PROC NEAR MOV?DX,PORT0? ;DAC0832端口地址?OUTDX PUSHAX?MOVAX,N? ;延時(shí)的時(shí)間常數(shù)WT: DEC AX JNZ WT ;延時(shí)?POP?AX RETOUTPUT?ENDP一個(gè)8位D/A轉(zhuǎn)換器的滿量程(相應(yīng)于數(shù)字量255)為10V。分別擬定模擬量2.0V和8.0V所相應(yīng)的數(shù)字量。模擬量2.0V所相應(yīng)的數(shù)字量為(2.0/10)×255=51模擬量8.0V所相應(yīng)的數(shù)字量為(8.0/10)×255=204簡(jiǎn)述逐次逼近式A/D轉(zhuǎn)換器的工作原理,并將它和∑-△A/D轉(zhuǎn)換器進(jìn)行比較。逐次逼近型(也稱逐位比較式)A/D轉(zhuǎn)換器重要由逐次逼近比較寄存器SAR,D/A轉(zhuǎn)換器、比較器以及時(shí)序和控制邏輯等部分組成。它從SAR的最高位開始,逐位設(shè)定SAR寄存器中的數(shù)字量,經(jīng)D/A轉(zhuǎn)換得到電壓VC,與待轉(zhuǎn)換模擬電壓Vx進(jìn)行比較。通過比較,逐次擬定各位的數(shù)碼應(yīng)是“1”還是“0”。轉(zhuǎn)換結(jié)果能否準(zhǔn)確逼近模擬信號(hào),重要取決于SAR和D/A的位數(shù)。位數(shù)越多,越能準(zhǔn)確逼近模擬量?!?△型模數(shù)轉(zhuǎn)換器是根據(jù)二次采樣的差進(jìn)行計(jì)算的,有很強(qiáng)的抗干擾能力,轉(zhuǎn)換精度高,以串行方式輸出數(shù)據(jù)。常用于高分辨率(常見為16、18、24位)的中、低頻信號(hào)測(cè)量。當(dāng)模擬量輸入端接有多路開關(guān)時(shí),通道切換后要等待足夠長(zhǎng)的時(shí)間,才干讀取轉(zhuǎn)換結(jié)果。若ADC輸入模擬電壓信號(hào)的最高頻率為100KHZ,采樣頻率的下限是多少?完畢一次A/D轉(zhuǎn)換時(shí)間的上限是多少?香農(nóng)定理告訴我們:采樣頻率一般要高于或至少等于輸入信號(hào)最高頻率的2倍。因此,采樣頻率的下限應(yīng)是200KHz。在200KHz采樣頻率下,完畢一次A/D轉(zhuǎn)換時(shí)間的上限是5μs。實(shí)際應(yīng)用中,采樣頻率可以達(dá)成信號(hào)最高頻率的4~8倍。假如采用400KHz的采樣頻率,完畢一次A/D轉(zhuǎn)換時(shí)間的上限是2.5μs。在使用A/D和D/A轉(zhuǎn)換器的系統(tǒng)中,地線連接時(shí)應(yīng)注意什么?模擬信號(hào)很容易受到電源和數(shù)字信號(hào)的干擾引起波動(dòng)。為提高輸出的穩(wěn)定性,減少誤差,模擬信號(hào)部分必須采用高精度基準(zhǔn)電源VREF和獨(dú)立的地線。所以,要把數(shù)字地和模擬地分開。模擬地是模擬信號(hào)及基準(zhǔn)電源的參考地,其余信號(hào)的參考地,涉及工作電源地,數(shù)據(jù)、地址、控制等相應(yīng)的“地”都是數(shù)字地。連接時(shí),先所有的模擬地連接在一起,把所有的數(shù)字地連接在一起,然后在一個(gè)點(diǎn)上(注意:不是兩個(gè)或更多)把模擬地和數(shù)字地連接起來。如何用一個(gè)AD芯片測(cè)量多路信息?模擬量多于一個(gè)時(shí),可以使用多路模擬開關(guān),輪流接通其中的一路進(jìn)行轉(zhuǎn)換,使多個(gè)模擬信號(hào)共用一個(gè)ADC進(jìn)行A/D轉(zhuǎn)換。一臺(tái)工控PC有兩塊818卡,基地址分別為BASE1,BASE2,試編制采樣24路(一塊卡16路,一塊卡8路)模擬量的C語言程序。#include“dos.h”#define N24?/*采樣點(diǎn)數(shù)*/#define BASE10x300??? #define?BASE20x310#define?INTERRUPT0x1c?/*定期中斷類型號(hào)*/staticunsignedad,tad[N],tt[N][16];voidfarhandler();?/*函數(shù)handler()聲明*/voidAD818(int);?/*函數(shù)AD818()聲明*/void(interruptfar*oldhandler)();/*定義oldhandler為指向中斷服務(wù)程序的指針*/…………..main()? ? ?{oldhander=getvect(INTERRUPT);?/*讀出原1CH中斷向量*/setvect(INTERRUPT,handler);?/*把新的1CH中斷向量寫入向量表*/…………..}voidAD818(intscan)?/*函數(shù)AD818從AD818卡采集一次數(shù)據(jù)*/{intlbit,hbit,it=0,status,base,ch;?/*采集結(jié)果置入全局變量ad中*/ base=(scan<=15)?BASE1:BASE2;?/*根據(jù)點(diǎn)號(hào)擬定所在采集卡的基地址*/ch=scan%16; /*計(jì)算該點(diǎn)在本采集卡上的通道號(hào)*/outportb(base+2,ch); /*向AD818輸出通道號(hào)*/outportb(base+1,0);?/*AD輸入量程控制*/outportb(base+9,0);?/*不使用中斷或DMA*/outportb(base+0,0);?/*啟動(dòng)AD轉(zhuǎn)換*/do{it=it+1;status=inportb(base+8)&128;/*讀出AD狀態(tài)寄存器,查詢EOC,等待AD轉(zhuǎn)換完畢*/}while(status!=0&&it<=10000);lbit=inportb(base+0)&240; /*讀入低8位,清除其中無效的最低4位*/hbit=inportb(base+1); /*讀入高8位*/if(it<=10000)ad=hbit*16+lbit/16;?/*采集正常,拼接二段數(shù)據(jù)*/elsead=0;?/*采集數(shù)據(jù)超時(shí),818卡有故障*/}voidinterruptfarhandler() /*55ms定期中斷服務(wù)程序,采集每個(gè)點(diǎn)的數(shù)據(jù)*/{intisp,s,i;for(isp=0;isp<=N-1;isp++){AD818(isp);?/*采集一個(gè)模擬量,存入ad*/for(i=0,s=0;i<=14;i++)?{tt[isp][i]=tt[isp][i+1];?/*移動(dòng)隊(duì)列中的數(shù)據(jù),以便裝入新的數(shù)據(jù)*/s=s+tt[isp][i];}?/*求前15個(gè)數(shù)據(jù)的累加和*/tt[isp][15]=ad;s=s+ad;?/*新數(shù)據(jù)進(jìn)隊(duì)列,求出16個(gè)數(shù)據(jù)的累加和*/tad[isp]=s/16;?/*求出16個(gè)數(shù)據(jù)的平均值*/}oldhandler(); /*進(jìn)入原1CH中斷服務(wù)程序,此后返回?cái)帱c(diǎn)*/}?習(xí)題十查找相關(guān)資料,用列表方式給出8088,8086,……直到P4各代微解決器的地址、數(shù)據(jù)線引腳數(shù)量,并推算出各自的內(nèi)存尋址空間。解決器數(shù)據(jù)線地址線內(nèi)存尋址空間80888201MB808616201MB80286162416MB80386/48632324GBPentium64324GBPentium2~4643664GB什么是MMX指令?它有什么特點(diǎn)?MMX指令是“多媒體擴(kuò)展指令”的英文簡(jiǎn)稱,它采用SIMD(單指令流多數(shù)據(jù)流)技術(shù),使得解決器在一條指令中對(duì)多個(gè)數(shù)據(jù)進(jìn)行解決,提高了對(duì)多媒體數(shù)據(jù)的解決能力。什么叫動(dòng)態(tài)執(zhí)行?使用動(dòng)態(tài)執(zhí)行技術(shù)會(huì)帶來什么好處?動(dòng)態(tài)執(zhí)行是通過預(yù)測(cè)指令流和數(shù)據(jù)流,調(diào)整指令的執(zhí)行順序,最大地發(fā)揮CPU內(nèi)部各部件的功效,提高系統(tǒng)執(zhí)行指令的速度。動(dòng)態(tài)執(zhí)行重要采用了:多路分支預(yù)測(cè):運(yùn)用轉(zhuǎn)移預(yù)測(cè)技術(shù)允許程序幾個(gè)分支流同時(shí)在解決器內(nèi)執(zhí)行;數(shù)據(jù)流分析:通過度析指令數(shù)據(jù)的相關(guān)性,把指令進(jìn)行優(yōu)化排序后執(zhí)行,充足運(yùn)用解決器內(nèi)部資源;推測(cè)執(zhí)行:根據(jù)各推測(cè)最終的對(duì)的性,對(duì)多個(gè)分支的運(yùn)營(yíng)結(jié)果進(jìn)行取舍。32位微解決器有哪幾種工作方式?各有什么特點(diǎn)?32位微解決器有4種不同的工作方式:實(shí)地址方式、保護(hù)方式、虛擬8086方式、系統(tǒng)管理方式。實(shí)地址方式:實(shí)地址方式使用16位80x86解決器的尋址方式(使用20位地址尋址1MB空間)、存儲(chǔ)器管理和中斷管理??梢允褂?2位寄存器,使用特權(quán)級(jí)0,可以執(zhí)行大多數(shù)指令。 保護(hù)方式:保護(hù)方式是32位微解決器的基本工作方式。它使用32位地址尋址4GB的實(shí)存空間,通過虛擬存儲(chǔ)管理、用戶優(yōu)先級(jí)管理、I/O管理等技術(shù),擴(kuò)大可使用的存儲(chǔ)空間,對(duì)操作系統(tǒng)和用戶程序進(jìn)行隔離和保護(hù)。虛擬8086方式:虛擬8086方式是保護(hù)模式下為任務(wù)提供的的8086工作環(huán)境。每個(gè)任務(wù)使用16位地址尋址1MB的內(nèi)存空間,以最低特權(quán)級(jí)運(yùn)營(yíng),不能使用特權(quán)指令。系統(tǒng)管理方式:系統(tǒng)管理模式重要用于電源管理,可以使解決器和外圍設(shè)備部件進(jìn)入“休眠”狀態(tài),在有鍵盤按下或鼠標(biāo)移動(dòng)時(shí)“喚醒”系統(tǒng),使之繼續(xù)工作。運(yùn)用SMM可以實(shí)現(xiàn)軟件關(guān)機(jī)。敘述XT總線與ISA總線的異同之處。XT總線可以看作是ISA總線的一個(gè)“子集”,它涉及8位數(shù)據(jù)線,20根地址線,使用與CPU相同的4.77MHz的時(shí)鐘信號(hào)。ISA總線在XT總線的基礎(chǔ)上,把數(shù)據(jù)線擴(kuò)展到16根,地址線擴(kuò)展到24根,使用獨(dú)立于CPU的8MHz時(shí)鐘信號(hào),中斷和DMA通道數(shù)目都有所增長(zhǎng)。ISA總線插槽由8位的XT總線插槽和ISA總線擴(kuò)展插槽兩部分組成。什么叫分級(jí)總線?使用分級(jí)總線有什么優(yōu)點(diǎn)?所謂分級(jí)總線是指系統(tǒng)中存在多組總線,每組總線可以有不同的數(shù)據(jù)線寬度、數(shù)據(jù)傳輸速率和不同的信號(hào)傳輸協(xié)議。系統(tǒng)內(nèi)的設(shè)備按照它們對(duì)傳輸速率、數(shù)據(jù)吞吐量的不同規(guī)定合理地連接在不同的總線上。不同總線之間通過“橋”電路進(jìn)行連接。使用分級(jí)總線可以使各種設(shè)備的數(shù)據(jù)傳輸規(guī)定得到最大限度的滿足,同時(shí)使整個(gè)系統(tǒng)的數(shù)據(jù)吞吐量和效能達(dá)成最大化。簡(jiǎn)述“兩個(gè)中心”結(jié)構(gòu)與“南北橋”結(jié)構(gòu)的區(qū)別,同時(shí)說明“兩個(gè)中心”結(jié)構(gòu)的優(yōu)越之處?!澳媳睒颉苯Y(jié)構(gòu)和“中心結(jié)構(gòu)”都支持多級(jí)總線的系統(tǒng)結(jié)構(gòu)。它們的重要區(qū)別在于,南橋芯片連接的所有高速外設(shè)都要通過PCI總線與解決器相連接,而“中心結(jié)構(gòu)”里所有連接IO設(shè)備的總線(PCI,ISA,USB……)都通過IO控制中心(ICH)與中心高速接口直接連接,從而緩解了PCI總線數(shù)據(jù)互換的擁擠限度。相比較而言,“中心結(jié)構(gòu)”對(duì)信息流的途徑分派更為合理。CPU←→Cache,Cache←→主存,主存←→輔存之間的數(shù)據(jù)傳輸各有什么特點(diǎn)?為什么?請(qǐng)分析因素。CPU與Cache之間數(shù)據(jù)傳輸?shù)闹匾攸c(diǎn)是:高速:Cache以與CPU相同或接近的速度工作;不擬定:CPU對(duì)Cache的訪問也許因“命中”而成功,也也許以“失靶”而失敗。Cache與主存之間數(shù)據(jù)傳輸?shù)闹匾匦允牵簲?shù)據(jù)傳輸以“頁”為單位,使用“成組傳輸方式(突發(fā)總線方式)”進(jìn)行。導(dǎo)致上述特點(diǎn)的因素是,這一層次以“高速”為追求的目的,運(yùn)用了程序、數(shù)據(jù)的“局部性”原理。主存與輔存之間的數(shù)據(jù)傳輸以“數(shù)據(jù)塊/扇區(qū)”為單位,通常以DMA方式進(jìn)行。導(dǎo)致上述特點(diǎn)的因素是,這一層次以“大容量”、“低價(jià)格”為追求的目的,輔存大容量、“粗粒度”的結(jié)構(gòu)特點(diǎn)正好可以滿足對(duì)上述目的的規(guī)定。系統(tǒng)對(duì)不同層次的數(shù)據(jù)傳輸有著不同的規(guī)定,因而設(shè)立了不同的軟硬件結(jié)構(gòu),最終導(dǎo)致了傳輸方式上的差異。什么叫“相聯(lián)存儲(chǔ)映像表”?說明它的結(jié)構(gòu)和用途。相聯(lián)存儲(chǔ)映像表是Cache內(nèi)紀(jì)錄Cache中各頁在主存的位置和其他信息的表格,由各頁的“標(biāo)記(Tag)”,“狀態(tài)”和“LRU位”組成。“標(biāo)記(Tag)”記錄了該頁在主存中的位置,供CPU訪問時(shí)進(jìn)行匹配查找使用?!盃顟B(tài)”和“LRU位”用于Cache頁的替換操作。為什么要進(jìn)行Cache和主存的“映像”?有哪幾種相聯(lián)映像的方法?比較各自的利弊。Cache和主存的“映像”是主存頁調(diào)入Cache的“規(guī)則”,為了提高CPU在Cache中查找信息的速度,這種“規(guī)則”是必須的。常見相聯(lián)映像的方法有三種:全相聯(lián)映像法:內(nèi)存頁可以調(diào)入Cache的任何一頁,規(guī)則簡(jiǎn)樸,頁沖突的也許性最小,查找所需工作量最大。直接映像法:每一個(gè)內(nèi)存頁只能調(diào)入Cache中相同頁號(hào)的一個(gè)頁,規(guī)則簡(jiǎn)樸,查找方便,塊沖突的也許性大。組相聯(lián)映像法:每一個(gè)內(nèi)存頁可以與Cache中一個(gè)組內(nèi)的若干個(gè)頁面相相應(yīng),規(guī)則稍復(fù)雜,查找工作量中檔,塊沖突的也許性中檔。什么叫“突發(fā)總線周期”?它有什么優(yōu)點(diǎn)?“突發(fā)總線周期”也稱為“成組傳送方式”,總線主設(shè)備在發(fā)送一個(gè)主存地址之后,通過連續(xù)的多個(gè)周期,傳輸(讀/寫)多個(gè)地址相連的存儲(chǔ)單元的數(shù)據(jù)。這種方式省去了多次發(fā)送地址、多次申請(qǐng)總線和多次互相聯(lián)絡(luò)的過程,因此可以獲得很高的數(shù)據(jù)傳輸速率。邏輯地址是如何轉(zhuǎn)換成線性地址的?簡(jiǎn)要敘述轉(zhuǎn)換過程。實(shí)地址方式下沒有“線性地址”。保護(hù)模式下,邏輯地址由“段號(hào)”和“段內(nèi)地址”兩部分組成。使用“段號(hào)”查找“段描述符表”,可以獲得該段的起始地址,與“段內(nèi)地址”相加,就得到了相應(yīng)的“線性地址”。線性地址是如何轉(zhuǎn)換成物理地址的?簡(jiǎn)要敘述轉(zhuǎn)換過程?!熬€性地址”由處在高位的“頁組號(hào)”、處在中間的“頁號(hào)”和處在低位的“頁內(nèi)地址”三部分組成。用“頁組號(hào)”查找“頁組表”,得到“頁表”的起始地址;用“頁號(hào)”查找該“頁表”,得到該頁的起始地址;頁起始地址加上“頁內(nèi)地址”就得到了它相應(yīng)的物理地址。請(qǐng)分析使用虛擬存儲(chǔ)管理帶來的利弊。虛擬存儲(chǔ)管理把輔存的一部分用作“虛擬”的主存,擴(kuò)大了操作系統(tǒng)可分派,程序員可運(yùn)用的存儲(chǔ)空間,便于實(shí)現(xiàn)任務(wù)之間的隔離和保護(hù),有效地支持了“多任務(wù)”運(yùn)營(yíng)環(huán)境的實(shí)現(xiàn)。它還可以有效地克服“內(nèi)存碎片”問題,簡(jiǎn)化了存儲(chǔ)管理。但是,實(shí)現(xiàn)虛擬存儲(chǔ)后,每次訪問主存都需要進(jìn)行兩次地址的轉(zhuǎn)換,增長(zhǎng)了系統(tǒng)的復(fù)雜性,增長(zhǎng)了系統(tǒng)的硬件成本,減少了訪問主存的速度,并且,由于系統(tǒng)復(fù)雜限度的增長(zhǎng),系統(tǒng)的可靠性也會(huì)受到影響。32位微解決器實(shí)行保護(hù)機(jī)制的目的是什么?有哪些重要措施?32位微解決器實(shí)行保護(hù)機(jī)制的主線目的在于增長(zhǎng)在“多任務(wù)”運(yùn)營(yíng)環(huán)境下系統(tǒng)的可靠性,使得任務(wù)之間、任務(wù)和操作系統(tǒng)之間實(shí)現(xiàn)隔離和保護(hù)。為了實(shí)現(xiàn)隔離和保護(hù),采用了以下幾項(xiàng)措施:為任務(wù)和資源設(shè)定一個(gè)“優(yōu)先級(jí)”,優(yōu)先級(jí)較低的任務(wù)不能訪問優(yōu)先級(jí)較高的資源,不能調(diào)用優(yōu)先級(jí)較高的程序模塊。使用虛擬內(nèi)存管理機(jī)制,使得任務(wù)和任務(wù)、任務(wù)和操作系統(tǒng)所使用的存儲(chǔ)空間互相隔離,從而保證每個(gè)任務(wù)的正常運(yùn)營(yíng)不受其它任務(wù)的影響,一個(gè)任務(wù)的故障不影響整個(gè)系統(tǒng)的正常運(yùn)營(yíng)。說明操作系統(tǒng)在保護(hù)模式下啟動(dòng)一個(gè)任務(wù)的過程。一個(gè)任務(wù)用JMP或CALL指令啟動(dòng)一個(gè)新的任務(wù)時(shí),解決器將當(dāng)前任務(wù)的所有通用寄存器、所有段寄存器中的選擇子、EFLAGS、EIP存入該任務(wù)自身的TSS,然后將新任務(wù)的選擇子、描述符裝入TR寄存器,并且將相應(yīng)TSS段中所保存的通用寄存器、段寄存器、EFLAGS、EIP副本裝入解決器相應(yīng)的寄存器中。在CS:EIP的控制下,一個(gè)新的任務(wù)開始執(zhí)行。用JMP、CALL指令調(diào)用同一個(gè)任務(wù)中其他程序段時(shí),指令中的“段選擇子”及其描述符被存入CS寄存器,“偏移地址”進(jìn)入EIP,于是,目的程序被執(zhí)行。對(duì)于CALL指令,本來程序的返回信息“CS:EIP”被壓入堆棧,和16位微解決器中十分相似。中斷和異常也會(huì)導(dǎo)致任務(wù)的轉(zhuǎn)換。32位微解決器如何實(shí)行對(duì)I/O過程的管理?保護(hù)方式下對(duì)I/O過程的管理重要有兩項(xiàng)措施:任務(wù)狀態(tài)段TSS中有一個(gè)最多64Kbits組成的“I/O允許位圖(IOM)”,它的每一位相應(yīng)一個(gè)I/O端口,為0表達(dá)該端口允許這個(gè)用戶進(jìn)行I/O操作。解決器一方面檢查存放在CS中的當(dāng)前任務(wù)的CPL(當(dāng)前任務(wù)優(yōu)先級(jí)),假如CPL的特權(quán)級(jí)高于或等于EFLAGS中由IOPL規(guī)定的特權(quán)級(jí),I/O操作不會(huì)受限制,否則將進(jìn)一步檢查IOM,對(duì)IOM為1的端口進(jìn)行操作將產(chǎn)生保護(hù)異常;對(duì)于運(yùn)營(yíng)在虛擬8086方式的任務(wù),用IOM來控制對(duì)I/O端口進(jìn)行訪問,對(duì)位圖相應(yīng)位為1的端口進(jìn)行訪問將產(chǎn)生保護(hù)異常。另一種辦法是:在IOM中封鎖對(duì)所有端口的訪問,當(dāng)前任務(wù)一旦執(zhí)行I/O指令,立即產(chǎn)生保護(hù)異常,進(jìn)入由操作系統(tǒng)設(shè)立的“異常解決程序”,在操作系統(tǒng)的控制下進(jìn)行間接的“I/O操作”。簡(jiǎn)要敘述保護(hù)方式與實(shí)地址方式下的中斷管理方法的區(qū)別。在實(shí)地址方式下,32位80X86微解決器采用與16位80X86相同的中斷管理機(jī)制,用1KB大小的“中斷向量表”存儲(chǔ)各中斷服務(wù)程序入口地址,這些“中斷向量”按照“中斷類型”的順序存放。中斷向量表存放在地址0000:0000開始的主存中。保護(hù)方式下用“中斷描述符表”來指出各中斷解決程序的入口地址,每一個(gè)中斷類型相應(yīng)一個(gè)“中斷門”或“陷阱門”描述符。中斷描述符表可以放在內(nèi)存的任何位置,表的首地址存放在IDTR寄存器中。保護(hù)模式下中斷響應(yīng)的過程與實(shí)地址方式基本相同,但是可以用中斷機(jī)制進(jìn)行任務(wù)的切換。什么叫“串行中斷”?它有什么優(yōu)點(diǎn)?串行
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版門窗行業(yè)市場(chǎng)拓展與渠道建設(shè)合同4篇
- 2025版寵物醫(yī)院害蟲防治與寵物健康服務(wù)合同4篇
- 2025年度鎳氫電池關(guān)鍵部件研發(fā)與制造合同4篇
- 二零二五年度智慧交通管理系統(tǒng)詢價(jià)合同協(xié)議書3篇
- 二零二五年度智能交通管理系統(tǒng)采購(gòu)合同樣本3篇
- 二零二五年度奶業(yè)集團(tuán)奶制品品牌授權(quán)及銷售合同
- 2025年度路燈采購(gòu)安裝及LED照明產(chǎn)品研發(fā)合同3篇
- 二零二五年度機(jī)關(guān)辦公樓物業(yè)智能化升級(jí)改造服務(wù)合同5篇
- 2025年度智能化培訓(xùn)學(xué)校教師團(tuán)隊(duì)聘用合同4篇
- 二零二五年度模特廣告代言聘用合同
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測(cè)濟(jì)南期末試題和答案
- 中儲(chǔ)糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 河南退役軍人專升本計(jì)算機(jī)真題答案
- 湖南省長(zhǎng)沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 駕駛證學(xué)法減分(學(xué)法免分)試題和答案(50題完整版)1650
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項(xiàng)整治三年行動(dòng)實(shí)施方案全國(guó)安全生產(chǎn)專項(xiàng)整治三年行動(dòng)計(jì)劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 產(chǎn)鉗助產(chǎn)護(hù)理查房
- 招聘專員轉(zhuǎn)正述職報(bào)告
評(píng)論
0/150
提交評(píng)論