2023年現(xiàn)代微型計算機原理與接口技術(shù)習題解答接口部分_第1頁
2023年現(xiàn)代微型計算機原理與接口技術(shù)習題解答接口部分_第2頁
2023年現(xiàn)代微型計算機原理與接口技術(shù)習題解答接口部分_第3頁
2023年現(xiàn)代微型計算機原理與接口技術(shù)習題解答接口部分_第4頁
2023年現(xiàn)代微型計算機原理與接口技術(shù)習題解答接口部分_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

習題五接口電路與外部設(shè)備之間傳送的信號有哪幾種?傳輸方向如何?數(shù)據(jù)信號:對于輸入設(shè)備,數(shù)據(jù)信號從外設(shè)通過接口送往總線,對于輸出設(shè)備,數(shù)據(jù)信號從總線通過接口發(fā)往外部設(shè)備。狀態(tài)信號:狀態(tài)信號表白外部設(shè)備當前的工作狀態(tài),用來協(xié)調(diào)CPU與外部設(shè)備之間的操作。狀態(tài)信號總是從外部設(shè)備通過接口發(fā)往總線??刂菩盘枺嚎刂菩盘柺荂PU向外設(shè)發(fā)出的命令,它指定設(shè)備的工作方式,啟動或停止設(shè)備??刂菩盘枏模肞U通過接口發(fā)往外部設(shè)備。接口電路有哪些功能?哪些功能是必需的?接口電路可以具有:設(shè)備選擇功能、信息傳輸功能、數(shù)據(jù)格式轉(zhuǎn)換功能、聯(lián)絡(luò)功能、中斷管理功能、復位功能、可編程功能和錯誤檢測等功能。其中設(shè)備選擇功能和信息傳輸功能是每一個接口電路所必備的。其他的功能是否需要則由設(shè)備的特點和工作方式?jīng)Q定。I/O端口的編址有哪幾種方法?各有什么利弊?80X86系列CPU采用哪種方法??I/O端口的編址有兩種不同的方式。I/O端口與內(nèi)存統(tǒng)一編址:把內(nèi)存的一部分地址分派給I/O端口,一個8位端口占用一個內(nèi)存單元地址。已經(jīng)用于I/O端口的地址,存儲器不能再使用。I/O端口與內(nèi)存統(tǒng)一編址后,訪問內(nèi)存儲器單元和I/O端口使用相同的指令,這有助于減少CPU電路的復雜性,并給使用者提供方便。但是,I/O端口占用內(nèi)存地址,相對減少了內(nèi)存可用范圍。并且,由于難以區(qū)分訪問內(nèi)存和I/O的指令,減少了程序的可讀性和可維護性。I/O端口與內(nèi)存獨立編址:這種編址方法中,內(nèi)存儲器和I/O端口各自有自己獨立的地址空間。訪問I/O端口需要專門的I/O指令。80x86CPU采用I/O端口獨立編址方式。按照傳輸信號的種類,I/O端口有幾種?它們信號的傳輸方向如何?按照傳輸信號的種類,I/O端口有三種:數(shù)據(jù)端口:數(shù)據(jù)信息從端口輸入CPU(輸入設(shè)備接口),或者從CPU寫入端口(輸出設(shè)備接口);狀態(tài)端口:外設(shè)狀態(tài)信息從端口輸入CPU;控制端口:命令信息從CPU寫入端口。I/O端口譯碼電路的作用是什么?在最小模式和最大模式下分別有哪些輸入信號?I/O端口譯碼電路用于產(chǎn)生端口的讀寫選擇信號。在最小模式下,譯碼電路接受來自總線的地址信號(16位),(=0),或者信號。最大模式下,譯碼電路接受地址信號(16位),或者信號。外部設(shè)備數(shù)據(jù)傳送有哪幾種控制方式?從外部設(shè)備的角度,比較不同方式對外部設(shè)備的響應速度。外部設(shè)備數(shù)據(jù)傳送有以下四種控制方式。直接傳送方式(也稱為無條件傳送方式、同步傳送方式):這種情況下,外部端口完全被動地等待CPU的訪問,沒有擬定的響應速度,響應時間取決于CPU忙碌的限度以及程序?qū)ν獠吭O(shè)備控制采用的策略。查詢方式:假如CPU在某一時刻只對一個外設(shè)采用查詢方式進行數(shù)據(jù)傳輸,CPU的響應延遲約為3~10個指令周期。響應速度快于中斷方式,慢于DMA方式。中斷方式:CPU的響應延遲平均為幾十個指令周期,慢于查詢方式,但是這種方式可以同時管理多個外部設(shè)備。DMA方式:外部端口的傳輸請求由DMA控制器響應,由于DMAC是一個專用于傳輸控制的電路,任務單一,不發(fā)生DMA傳輸競爭時,響應延遲僅為1~2個DMAC使用的時鐘周期,遠快于中斷方式和查詢方式。敘述一次查詢式輸出過程中,接口內(nèi)各電路、信號的狀態(tài)變化過程。一個數(shù)據(jù)的查詢式輸出過程由二個階段組成:CPU從接口反復讀取狀態(tài)字:由地址譯碼電路產(chǎn)生狀態(tài)端口選擇信號,該信號不影響接口內(nèi)部的狀態(tài)。外部設(shè)備輸出完畢后,返回“確認”信號,該信號將狀態(tài)寄存器相關(guān)位(READY)置位。如狀態(tài)字表白外設(shè)已處在“就緒”狀態(tài),則向數(shù)據(jù)端口傳送數(shù)據(jù)。由地址譯碼電路產(chǎn)生的數(shù)據(jù)端口選通信號一方面將數(shù)據(jù)總線上的數(shù)據(jù)寫入數(shù)據(jù)寄存器,同時清除狀態(tài)寄存器中的相關(guān)位(READY),向輸出設(shè)備發(fā)出輸出啟動信號。有的輸出接口設(shè)有控制端口,輸出啟動信號通過寫控制端口產(chǎn)生。比較程序中斷方式和查詢方式的區(qū)別,根據(jù)比較,指出中斷工作方式的優(yōu)缺陷。中斷方式:外部設(shè)備工作完畢后,通過“中斷請求”信號“積極”向CPU“報告”。查詢方式:外部設(shè)備工作完畢后,狀態(tài)信號儲存在接口電路內(nèi),被動地等待CPU來讀取。根據(jù)上述比較,可以得到中斷工作方式的如下特點:優(yōu)點:CPU可以及時了解外部設(shè)備的狀態(tài),從而對外部設(shè)備IO請求進行及時解決。由于CPU“被動”地等待外部設(shè)備的“中斷請求”,外部設(shè)備進行輸入/輸出操作時,CPU可以同時執(zhí)行其他的程序,CPU和外部設(shè)備“并行”工作。由于同樣的因素,在中斷方式下,CPU可以同時管理多臺外部設(shè)備,CPU的效率得到提高。缺陷:用中斷方式需要CPU增長相應的管理邏輯,增長了CPU電路的復雜性。由于CPU“被動”地接受“中斷請求”信號,CPU必須通過與外部的一個聯(lián)絡(luò)過程才干知道是那一個設(shè)備在申請中斷,這增長了響應時間。為了從當前任務轉(zhuǎn)移到中斷服務,CPU必須保護原有的運營環(huán)境,進行“任務”的“切換”,這也會增長響應時間。有較多的設(shè)備使用中斷方式時,會產(chǎn)生“中斷申請”的“競爭”。這一方面減少了響應速度,另一方面增長了管理的復雜性。比較DMA方式和程序中斷方式的區(qū)別,根據(jù)比較,指出DMA工作方式的優(yōu)缺陷。中斷方式:外部設(shè)備每進行一個數(shù)據(jù)的輸入/輸出,都要通過“中斷申請”規(guī)定CPU進行解決。CPU通過執(zhí)行一段“中斷服務程序”完畢數(shù)據(jù)的傳輸。DMA方式:CPU通過對DMAC的初始化,啟動一個數(shù)據(jù)塊的傳輸操作。之后的數(shù)據(jù)傳輸通過信號的聯(lián)絡(luò),在外設(shè)接口和存儲器之間進行,CPU只需簡樸地讓出總線,而無需其他操作。根據(jù)上述比較,可以得到DMA工作方式的如下特點:優(yōu)點:對于CPU而言,它的任務僅僅是在一個數(shù)據(jù)塊傳輸之前對DMAC進行初始化,CPU用于傳輸控制的操作達成最小(不考慮與通道/IO解決器方式的比較),CPU的效率最高。CPU與外設(shè)“并行”工作。外部設(shè)備一個數(shù)據(jù)輸入/輸出完畢后,向DMAC申請進行數(shù)據(jù)傳輸,響應時間僅為DMAC的1~3個時鐘周期。響應速度達成最快,可以滿足高速傳輸?shù)男枰?。缺?實現(xiàn)DMA控制需要增長DMA控制器和總線控制邏輯,增長了系統(tǒng)的復雜性。DMA傳輸需要占用總線,并且具有較高的“優(yōu)先級”。這使得系統(tǒng)對其他設(shè)備的響應速度不能得到明確的保證。某輸入設(shè)備接口數(shù)據(jù)端口、狀態(tài)端口、控制端口地址分別為70H,71H,72H。狀態(tài)端口D5=1表達輸入完畢,控制端口D7=1表達啟動設(shè)備輸入(輸入完畢后由設(shè)備清除該位)。從該設(shè)備輸入100個字節(jié)數(shù)據(jù),存入以BUFFER為首地址的緩沖區(qū)。假如啟動該設(shè)備1秒后仍未完畢一次輸入,則視為超時錯,顯示犯錯信息后返回。分別用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用作響應計時器,初值0MOV AL,80H ?OUT? 72H,AL? ;啟動輸入W:? IN AL,71H????INC ?DX????;記錄延遲時間 ?TEST?AL,00100000B?;測試完畢位? ?JNZ? READ ??;輸入完畢,轉(zhuǎn)READ讀取數(shù)據(jù)?? ?CMP?DX,50000? ;假設(shè)循環(huán)50000次時間為1秒 ??JB W??? ;未超時,繼續(xù)測試? ??JMP? OVERTIME ?;超過1秒,報告犯錯READ:? IN??AL,70H ? ;讀入數(shù)據(jù) ? MOV?[BX],AL?? ;數(shù)據(jù)存入緩沖區(qū) ???INC ?BX ???;修改指針????LOOP?ONE ;100個數(shù)據(jù)尚未輸入完畢,轉(zhuǎn)ONE繼續(xù) ?JMP??DONE ??;100個數(shù)據(jù)輸入完畢,轉(zhuǎn)DONE結(jié)束程序OVERTIME: LEA??DX,ERROR?? MOV?AH,9 ? INT 21H ?? ;響應超時,顯示犯錯信息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); ? /*啟動輸入*/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è)備數(shù)據(jù)端口、狀態(tài)端口地址分別為220H,221H。狀態(tài)端口D0=1表達輸出完畢。將數(shù)據(jù)段中以STRING為首地址的20個字符(用七位ASCII代碼存儲)添加水平和垂直校驗發(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???;垂直校驗碼初值為0 ONE: MOV DX,221H ??;DX置為狀態(tài)端口地址 ? IN?? AL,DX ? ?TEST??AL,00000001B ;測試輸出完畢位 ? JZ ONE ?? ;未完畢,轉(zhuǎn)ONE繼續(xù)讀取狀態(tài) ? ?MOV? AL,[BX] ? ;從字符串取出一個字符的ASCII代碼? ?AND? AL,07FH ;清除最高位,準備置入校驗位 ?JPE? ?OUTPUT?? ;判代碼奇偶屬性, ??OR?? AL,80H???;奇數(shù)個“1”O(jiān)UTPUT: MOV? DX,220H ? ?OUT ? DX,AL ?;輸出添加了校驗位的代碼 ?XOR SUM,AL?? ;生成垂直校驗位 ?INC? BX?? ?;修改指針 ???LOOP? ONE ?;20個數(shù)據(jù)尚未輸出完畢,轉(zhuǎn)ONE繼續(xù)? MOV DX,221H ?;輸出垂直校驗代碼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輸出的程序流程圖。

習題六什么叫中斷?有哪幾種不同類型的中斷?由于某個事件的發(fā)生,CPU暫停當前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行解決該事件的一個程序。該程序執(zhí)行完畢后,CPU接著執(zhí)行被暫停的程序。這個過程稱為中斷。 根據(jù)中斷源的位置,有兩種類型的中斷。有的中斷源在CPU的內(nèi)部,稱為內(nèi)部中斷。大多數(shù)的中斷源在CPU的外部,稱為外部中斷。根據(jù)中斷引腳的不同,或者CPU響應中斷的不同條件,也可以把中斷劃分為可屏蔽中斷和不可屏蔽中斷兩種。什么是中斷類型?它有什么用處??用若干位二進制表達的中斷源的編號,稱為中斷類型。中斷類型用來區(qū)分不同的中斷,使CPU可以在中斷響應時調(diào)出相應的中斷服務程序進行中斷解決。有哪幾種擬定中斷優(yōu)先級的方法?說明每一種方法各自的優(yōu)劣之處。擬定中斷優(yōu)先權(quán)有四種可選的方法。(1) 軟件查詢法:采用程序查詢的方法擬定中斷服務的順序。這種方法中斷邏輯最簡樸(基本上不需要外部中斷邏輯),優(yōu)先級可以靈活設(shè)立,但中斷響應所需時間最長。(2)分類申請法:CPU分設(shè)二個中斷申請信號的輸入引腳。這種方法需要CPU提供條件。(3)鏈式優(yōu)先權(quán)排隊:菊花鏈法。這種方法需要的外部中斷邏輯比較簡樸,容易實現(xiàn),但是設(shè)備較多時信號延遲大,對設(shè)備故障敏感。(4)可編程中斷控制器:“向量”優(yōu)先權(quán)排隊專用電路。這種方法功能最全面,控制靈活,可以通過程序設(shè)定中斷優(yōu)先權(quán)為固定的或循環(huán)的,但需要增長專用的中斷控制器。什么是中斷嵌套?使用中斷嵌套有什么好處?對于可屏蔽中斷,實現(xiàn)中斷嵌套的條件是什么?CPU在解決級別較低的中斷過程中,出現(xiàn)了級別較高的中斷請求。CPU停止執(zhí)行低檔別中斷的解決程序而去優(yōu)先解決高級別中斷,等高級別中斷解決完畢后,再接著執(zhí)行低檔別的未解決完的中斷解決程序,這種中斷解決方式稱為多重(級)中斷或中斷嵌套。使用中斷嵌套可以使高優(yōu)先級別的中斷得到及時的響應和解決。對于可屏蔽中斷,由于CPU在響應中斷時已將IF清零,所以一定要在中斷解決程序中加入開中斷指令,才有也許進行中斷嵌套。什么叫中斷屏蔽?如何設(shè)立I/O接口的中斷屏蔽?用程序的方法使某些中斷源的中斷請求不可以發(fā)送到CPU,或者雖然可以發(fā)送但是不能得到響應,這種方法稱為中斷屏蔽。在外設(shè)的接口內(nèi)增設(shè)一個中斷屏蔽觸發(fā)器(可以用D觸發(fā)器實現(xiàn)),該觸發(fā)器的端與中斷請求信號相“與”后連接到INTR。當=0時,中斷請求不能發(fā)往INTR。通過設(shè)定中斷屏蔽觸發(fā)器的狀態(tài),可以控制中斷請求信號是否可以送到INTR端。置IF=0,可以使80x86CPU不響應來自INTR的可屏蔽中斷請求。什么是中斷向量?中斷類型為1FH的中斷向量為2345H:1234H,畫圖說明它在中斷向量表中的安頓位置。中斷服務程序的入口地址稱為中斷向量。中斷類型為1FH,它的中斷向量放置在1FH×4=0000:7CH開始的位置上。如右圖。敘述一次可屏蔽中斷的全過程。(1)中斷源請求中斷外部中斷源通過INTR引腳向CPU請求中斷。(2)中斷響應中斷源提出中斷請求后,假如CPU處在允許中斷狀態(tài)(IF=1);沒有不可屏蔽中斷請求和總線請求;當前指令執(zhí)行結(jié)束。則轉(zhuǎn)入中斷響應周期。在中斷響應周期:CPU取得中斷源的中斷類型;將標志寄存器FLAGS和CS、IP(斷點)先后壓入堆棧保存;清除自陷標志位TF和中斷允許標志位IF;讀中斷向量表,獲得相應的中斷服務程序入口地址,轉(zhuǎn)入中斷服務程序。(3)中斷服務中斷服務程序的重要內(nèi)容涉及:保護現(xiàn)場開中斷中斷解決關(guān)中斷恢復現(xiàn)場(4)中斷返回簡要敘述8259A內(nèi)部IRR,IMR,ISR三個寄存器各自的作用。三個寄存器長度均為8位。IRR用來記錄引腳IR7~IR0上由外部設(shè)備送來的中斷請求信號。當外部中斷請求線IRi變?yōu)橛行r,IRR中與之相應的第i位被置1。IMR用于設(shè)立對中斷請求的屏蔽信號。此寄存器的第i位被置1時,與之相應的外部中斷請求線IRi被屏蔽,不能向CPU發(fā)出INT信號??赏ㄟ^軟件設(shè)立IMR內(nèi)容,擬定每一個中斷請求的屏蔽狀態(tài)。ISR用于記錄當前正在被服務的所有中斷級,涉及尚未服務完而半途被更高優(yōu)先級打斷的中斷級。若CPU響應了IRi中斷請求,則ISR中與之相應的第i位置1。ISR用于中斷優(yōu)先級管理。8259A是如何進行中斷優(yōu)先權(quán)管理的?8259A通過以下兩種途徑實現(xiàn)對中斷優(yōu)先權(quán)的管理:通過設(shè)立中斷屏蔽寄存器IMR,可以屏蔽某些中斷請求,從而動態(tài)地改變各請求端的優(yōu)先級別。8259A響應某個中斷請求之后,將ISR寄存器相應位置1。假如后續(xù)的中斷請求級別低于正在響應的中斷請求,則該中斷不能立即被響應。反之,假如新的中斷請求級別高于正在響應的中斷請求,則允許進行中斷嵌套。中斷服務結(jié)束時,應將ISR寄存器相應位清零。特殊全嵌套方式有什么特點?它的使用場合是什么?特殊全嵌套方式一般用于級聯(lián)方式下的8259A主片。假如8259A主片在一次中斷解決尚未結(jié)束時,收到了來自同一個引腳的第二次中斷請求,并且該8259A采用普通全嵌套方式,則它不會響應來自同一個引腳的第二次中斷請求。假如該8259A采用特殊全嵌套方式,就會響應當請求(中斷嵌套),從而可以及時響應連接在同一從片8259A上,并且相對有較高優(yōu)先級別的中斷請求。向8259A發(fā)送“中斷結(jié)束”命令有什么作用?8259A有哪幾種中斷結(jié)束方式?分析各自的利弊。中斷服務完畢時,必須給8259A一個命令,使這個中斷級別在ISR中的相應位清“0”,表達該中斷解決已經(jīng)結(jié)束,允許響應新的較低檔別的中斷。這個命令稱為“中斷結(jié)束”命令。8259A有兩種不同的中斷結(jié)束方式。(1)自動中斷結(jié)束方式(AEOI)8259A在中斷響應周期內(nèi)自動清除ISR中相應位。這種方式使用簡樸,但是不能充足實現(xiàn)中斷的優(yōu)先權(quán)管理。這種方式只能用在系統(tǒng)中只有一個8259A,且多個中斷不會嵌套的情況。(2)非自動中斷結(jié)束方式(EOI)從中斷服務程序返回前,在程序里向8259A輸出一個中斷結(jié)束命令(EOI),把ISR相應位清“0”。這種方式可以有效地實現(xiàn)中斷優(yōu)先權(quán)的管理,從而保證高優(yōu)先級的中斷可以得到及時響應。但是,假如在程序里忘了將ISR相應位清零,那么,8259A將不再響應這個中斷以及比它級別低的中斷請求。某系統(tǒng)中有兩片8259A,從片的請求信號連主片的IR2引腳,設(shè)備A中斷請求信號連從片IR5引腳。說明設(shè)備A在一次I/O操作完畢后通過兩片8259A向8086申請中斷,8086CPU通過兩片8259A響應中斷,進入設(shè)備A中斷服務程序,發(fā)送中斷結(jié)束命令,返回斷點的全過程。設(shè)備A通過從片IR5引腳向從片發(fā)出中斷請求;從片將IRR5置“1”,并通過INT(與主片IR2相連)向主片發(fā)出中斷請求;主片將IRR2置“1”,通過INT(與CPU的INTR相連)向CPU發(fā)出中斷請求;CPU通過第一個向主片和從片響應中斷請求;主片8259A在CAS0~CAS2上發(fā)出代碼“010”,表達連接在IR2上的從片中斷被響應,同時主片還把本片ISR2置“1”,把本片IRR2清“0”;從片收到第一個和主片CAS0~CAS2上發(fā)來的010代碼后,將本片ISR5置“1”,同時把本片IRR5清“0”。收到第二個后,將本片IRR5相應的中斷類型通過數(shù)據(jù)總線發(fā)往CPU;CPU進入設(shè)備A的中斷服務程序,在程序中先后對主片和從片發(fā)出中斷結(jié)束命令,兩個芯片內(nèi)的ISR2和ISR5先后被清零。中斷服務結(jié)束,返回斷點繼續(xù)執(zhí)行。某8086系統(tǒng)用3片8259A級聯(lián)構(gòu)成中斷系統(tǒng),主片中斷類型號從10H開始。從片的中斷申請連主片的IR4和IR6引腳,它們的中斷類型號分別從20H、30H開始。主、從片采用電平觸發(fā),嵌套方式,普通中斷結(jié)束方式。請編寫它們的初始化程序。假設(shè)主片端口地址為10H,12H。從片的端口地址分別為18H,1AH和1CH,1EH?!璏OV?AL,00011001B? ?;主片ICW1OUT?10H,AL ?? ;電平觸發(fā),級連方式MOV?AL,10H ? ;主片ICW2OUT?12H, AL???? ;主片中斷類型MOV AL,01010000B ;主片ICW3OUT?12H,AL??? ?;IR4,IR6連有從片MOV AL,00010001B ??;主片ICW4OUT 12H,AL? ??;特殊全嵌套,非自動中斷結(jié)束MOV AL,00011001B? ?;從片ICW1OUT 18H,AL??? ;電平觸發(fā),級連方式MOV?AL,20H ?? ?;從片ICW2OUT 1AH,AL? ? ;從片中斷類型MOV AL,00000100B ;從片ICW3OUT 1AH,AL? ?? ;本片連接在主片IR4引腳上MOV AL,00000001B ??;從片ICW4OUT?1AH,AL? ???;非特殊全嵌套,非自動中斷結(jié)束MOV AL,00011001B?? ;從片ICW1O(jiān)UT?1CH,AL? ? ;電平觸發(fā),級連方式MOV AL,30H ??;從片ICW2OUT 1EH,?AL ? ;從片中斷類型MOV?AL,00000110B? ;從片ICW3OUT?1EH,AL ? ;本片連接在主片IR6引腳上MOV?AL,00000001B ? ;從片ICW4OUT?1EH,AL ? ;非特殊全嵌套,非自動中斷結(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:非特殊全嵌套,緩沖方式,主片,非自動中斷結(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),因素是:多個設(shè)備的中斷請求假如直接送往CPU,應采用“線或”的方法,每個接口的中斷請求信號應由“OC門(集電極開路門)”以“負邏輯”的方式連接,如下圖。電路沒有解決中斷優(yōu)先權(quán)的問題。CPU用信號響應中斷時,會將所有正在申請中斷的接口的請求信號清除。加接“菊花鏈”可以解決該問題。電路沒有解決中斷類型的發(fā)送問題,需要增長相關(guān)電路。例如,把設(shè)備接口的INTR連接到8259A。?習題七8255A的方式選擇控制字和C口按位控制字的端口地址是否同樣,8255A如何區(qū)分這兩種控制字?寫出A端口作為基本輸入,B端口作為基本輸出的初始化程序。解:8255A的方式選擇控制字和C口按位控制字的端口地址同樣,它們之間的區(qū)別在控制字的D7位(特性位)的值不同,8255A的方式選擇控制字D7=1,而C口按位置位/復位控制字D7=0。初始化程序:(設(shè)端口地址為,A口:200H,B口:201H,控制口:203H)MOV AL,90HMOV ?DX,203HOUT ? DX,AL用8255A的A端口接8位二進制輸入,B端口和C端口各接8只發(fā)光二極管顯示二進制數(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端口相應位ADD AL, 02H ;形成下一個命令字LOOP?LPA ? ;解決C端口下一位將8255A用作兩臺計算機并行通信的接口電路,請畫出采用查詢式輸入/輸出方式工作的接口電路,并寫出采用查詢式輸入/輸出方式的程序。解:用兩片8255作兩臺計算機8088_A與8088_B之間并行通信的接口電路,兩片8255之間的連接如下圖所示。兩片8255均在方式1、查詢方式下工作。(1)8088_A輸出程序:(8255_A的A口作為數(shù)據(jù)輸出口,C口的PC0作為“數(shù)據(jù)輸出選通”信號,負脈沖輸出。C口的PC6作為“應答”信號輸入,負脈沖有效。端口地址:

A口:200H,C口:202H,控制口:203H)DATA?SEGMENTBuffer DB “Thisisaexample.”,0DH,0AH,-1DATA?ENDSCODE?SEGMENTSTART:?MOV AX,DATA MOV?DS,AX?LEA BX,Buffer?;輸出緩沖區(qū)指針送BX MOV DX,203H?MOV AL,0A0H?;8255_A的方式選擇字,A口工作在方式1、輸出,C口低四位輸出 OUT DX,AL??MOV AL,1?OUT DX,AL?;將PC0置1?CALL DELAY ;延時等待對方完畢初始化 ?;A口查詢方式輸出NEXT: MOV?DX,202H IN AL,DL TEST AL,80H?;判別是否有效?JZ NEXT ;數(shù)據(jù)尚未取走,等待 MOV DX,200H?MOV AL,[BX] OUT?DX,AL?;輸出一項數(shù)據(jù)?INC?BX MOV DX,203H?MOV AL,0?OUT DX NOP NOP INC AL OUT DX,AL?;通過PC0向?qū)Ψ桨l(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ù)輸入選通”信號,輸入,負脈沖有效。PC0為“應答”信號輸出,負脈沖有效。端口地址:A口:210H,C口:212H,控制口:213H)DATA?SEGMENTBuffer?DB?80DUP(?)DATA ENDS;CODE?SEGMENTSTART:?MOV AX,DATA?MOV DS,AX?LEA BX,Buffer ;輸入緩沖區(qū)指針送BX?MOV?DX,213H MOV AL,0B0H?;8255_B的方式選擇字,A口工作在方式1,輸入,C口低四位輸出。 OUT?DX,?MOV?AL,01H OUT DX,AL ;PC0置1,表達沒有“應答”信號 CALL DELAY?;延時等待對方狀態(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ā)“應答”負脈沖?CMP?BYTEPTR[BX-1],-1 ;數(shù)據(jù)接受完了嗎??JNE AGA ;未完,繼續(xù) MOV AX,4C00H INT?21HCODE?ENDS END?START說明:這道題有多種可選的解法,上面的方法是程序比較簡樸的一種。這種方法實行時,應先啟動8088B,使它一方面“就緒”,然后開始通訊。由于雙方都用負脈沖進行選通,聯(lián)絡(luò)過程比較簡樸,也比較可靠??蛇x的另一種方法是:在上述連接的基礎(chǔ)上用中斷方式進行數(shù)據(jù)傳輸,以提高CPU的工作效率。需要編制雙方的中斷服務程序,初始化時要設(shè)立中斷向量,允許8255中斷,開放中斷等操作。當然也要連接相應的中斷請求信號線。可選的第三種方法是:雙方用一根狀態(tài)線(C端口某一位)送往對方,用這兩根線進行聯(lián)絡(luò)(“握手”)。這種方法看似簡樸,其實程序是比較復雜的。雙方聯(lián)絡(luò)的過程如下圖。 ?8088B在初始化完畢后,把它的狀態(tài)線置為“高電平”,表達可以開始接受數(shù)據(jù)。而8088A在初始化完畢后,把它的狀態(tài)線置為“低電平”,表達數(shù)據(jù)傳輸尚未開始。8088A查詢8088B的狀態(tài),在發(fā)現(xiàn)8088B“就緒”(狀態(tài)線為高電平)后,把數(shù)據(jù)發(fā)往8255的(A或B)端口。8088A發(fā)出數(shù)據(jù)之后把本機狀態(tài)置為“就緒”(高電平),表達數(shù)據(jù)已經(jīng)送到端口的數(shù)據(jù)線上。8088B查詢8088A的狀態(tài),得知8088A的狀態(tài)線“就緒”,知道8088A已經(jīng)把數(shù)據(jù)送出,于是從8255接受數(shù)據(jù),并把自身的狀態(tài)線置為“未就緒”,表達已經(jīng)把8088A發(fā)出的數(shù)據(jù)接受。8088A查詢到8088B的狀態(tài)線變?yōu)榈碗娖剑缹Ψ揭呀?jīng)把數(shù)據(jù)接受完畢,于是把本機的狀態(tài)線置為“低電平”,表達這個數(shù)據(jù)的發(fā)送已經(jīng)完畢,而下一個數(shù)據(jù)尚未發(fā)出。8088B查詢到8088A的狀態(tài)線變?yōu)椤暗碗娖健?知道對方已經(jīng)結(jié)束了第一個數(shù)據(jù)的傳輸,在本機做好下一個數(shù)據(jù)的接受準備之后(例如,把數(shù)據(jù)存入緩沖區(qū),假如緩沖區(qū)滿,則把緩沖區(qū)內(nèi)容存入磁盤文獻),把本機狀態(tài)線置為“高電平”,表達已經(jīng)做好了接受下一個數(shù)據(jù)的準備。8088A得知8088B做好準備,發(fā)送下一個數(shù)據(jù)。于是,下一個數(shù)據(jù)的傳輸可以由此開始(轉(zhuǎn)①)。這種方法實行時,應一方面啟動8088A。設(shè)計一個用8255A作為8個七段顯示器的接口電路,并設(shè)計一個把內(nèi)存地址為ADDRA的8個數(shù)字在這8個七段顯示器上顯示的程序。解:設(shè)8個七段顯示器采用共陽接法,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?;對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] ;取出一個待顯示數(shù)?XLAT ?;轉(zhuǎn)換成七段碼MOV?DX, 200HOUT?DX, AL?;送入段碼端口MOV AL, DISPBIT?;MOV?DX, 201HOUT DX, AL ;送當前位碼,點亮一個數(shù)碼管ROR?DISPBIT, 1?;產(chǎn)生下一個位碼INC SI??;修改指針,指向下一個待顯示數(shù)據(jù)CALL DELAY ;延時LOOP?AGA? ;解決下一個數(shù)碼管的顯示MOV?AX,?4C00HINT 21HCODE?ENDSEND?START8254定期/計數(shù)器的定期與計數(shù)方式有什么區(qū)別?8254在方式0工作時,各通道的CLK、GATE信號有什么作用?各通道的控制字地址都相同,8254是如何區(qū)分的?解:8254作為計數(shù)器使用時,對CLK端的輸入脈沖進行單純的減法計數(shù),這時CLK端輸入的脈沖不作為計時基準。此外,用作計數(shù)器時,計數(shù)完畢后必須重新初始化,只能使用一次。?8254作為定期器使用時,規(guī)定CLK端輸入的脈沖必須作為時鐘基準,通過對該基準時鐘脈沖的計數(shù)來實現(xiàn)精擬定期。用作定期器時,計數(shù)的過程周而往復,反復進行。8254工作在方式0時,CLK端輸入計數(shù)用的脈沖信號;GATE信號為高電平時,對CLK端輸入的脈沖進行計數(shù);GATE信號為低電平時,暫停計數(shù);GATE信號重新為高電平后,恢復原先的計數(shù)。由8254的方式控制字中的D7、D6兩位來選擇計數(shù)通道。設(shè)8254的端口地址為0240H~0243H,通道0輸入的CLK頻率為1MHz,為使通道0輸出1KHz的方波,編寫初始化程序。假如讓通道0與通道1級聯(lián)(即OUT0接CLK1)實現(xiàn)1秒鐘定期,則初始化程序如何編制。解:通道0輸出1KHz的方波:計數(shù)初值為1MHz/1KHz=1000,等于十六進制數(shù)03E8H,控制字設(shè)定為先寫低8位,后寫高8位,方式3工作,二進制計數(shù)方式,所以控制字為36H。初始化程序如下:MOV?AL,36H?;MOV DX,243H ;寫入通道0的控制字OUT? DX,AL?;MOV DX,240H ;MOVAL,0E8H ;寫入通道0的時間常數(shù)OUT?DX,AL?;MOVAL,03H ;?OUT DX,AL ;通道0與通道1級聯(lián)實現(xiàn)1秒定期:要實現(xiàn)1秒定期,對1MHz輸入脈沖進行分頻的系數(shù)為1000000=5000×200。通道0工作在方式2,分頻系數(shù)200,采用十進制計數(shù),則通道0方式控制字為:25H。通道1工作在方式0,分頻系數(shù)5000,也采用十進制計數(shù),則通道1方式控制字為:61H。初始化程序如下:MOVAL,25H?;通道0控制字:方式2,十進制計數(shù),只寫高8位MOVDX,243H?;OUTDX,AL ;MOVAL,61H ;通道1控制字:方式0,十進制計數(shù),只寫高8位OUTDX,AL ;MOVDX,0240H ;MOVAL,02H?;通道0時間常數(shù)(BCD數(shù)高8位)OUTDX,AL?;MOVAL,50H?;通道1時間常數(shù)(BCD數(shù)高8位)MOVDX,0241H?;OUTDX,AL?;假如要再次進行1秒鐘定期,則需要對通道1重新初始化。假如需要連續(xù)的1秒定期信號,則通道1應選用方式3。?對總數(shù)為1000000的分頻系數(shù),可以有多種分解方法。編制一個使PC機的8254產(chǎn)生600Hz方波的程序,并使該方波送至揚聲器發(fā)聲。解:PC機中運用8254定期器的通道2來驅(qū)動揚聲器。通道2的工作及其輸出受到主板上8255A的PB口(口地址61H)控制:GATE2接PB0,即PB0=1時,定期器才也許工作;OUT2與PB1相與后輸出到揚聲器,即PB1=1時,定期器2的OUT2才干輸出到揚聲器。定期器的輸出波形是對1.1931MHZ頻率信號分頻得到的,因此將定期器2工作在方式3,分頻系數(shù)用下式計算:分頻系數(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?? ;除法運算,計算分頻系數(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接口標準中,引腳TxD、RxD、、、、、的功能是什么?解:TxD:串行數(shù)據(jù)輸出。RxD:串行數(shù)據(jù)輸入。:數(shù)據(jù)終端準備好狀態(tài),低電平有效。用于向調(diào)制解調(diào)器或外設(shè)表達數(shù)據(jù)終端已準備好。:數(shù)據(jù)設(shè)備準備好狀態(tài),低電平有效。調(diào)制解調(diào)器或外設(shè)準備好時eq\o(\s\up7(——),DSR)有效。:請求發(fā)送信號,低電平有效。表達數(shù)據(jù)終端設(shè)備已經(jīng)做好發(fā)送數(shù)據(jù)的準備,請調(diào)制解調(diào)器/外設(shè)準備接受數(shù)據(jù)。:清除發(fā)送(允許傳送)信號,低電平有效。調(diào)制解調(diào)器/外設(shè)作好傳送準備,允許數(shù)據(jù)終端設(shè)備發(fā)送數(shù)據(jù)時有效。16550的通信控制寄存器中的尋址位有什么作用?在初始化編程時,應當如何設(shè)立?解:16550芯片內(nèi),接受緩沖寄存器/發(fā)送保持寄存器的地址與除數(shù)低字節(jié)寄存器的地址相同,中斷允許寄存器的地址與除數(shù)高字節(jié)寄存器的地址相同。為了區(qū)分同一地址的不同用途,16550使用DLAB位來加以標記。DLAB位是通信線控制寄存器的最高位D7,該位設(shè)立為0,隨后的相應操作對接受緩沖寄存器/發(fā)送保持寄存器或中斷允許寄存器進行;該位設(shè)立為1,隨后的相應操作對除數(shù)寄存器進行。在向除數(shù)寄存器寫入初值之前,應將DLAB置為1。由于一般不需要反復訪問除數(shù)寄存器,寫完除數(shù)后應將DLAB置為0,以方便后續(xù)的操作。編寫用PC機中16550查詢方式輸入50個字符的異步通信程序。設(shè)16550的端口地址為3F8H~3FFH,數(shù)據(jù)格式為:8位數(shù)據(jù)位、1位偶校驗位、2位停止位,通信速率為19.2Kbps。解:接受子程序中,假如接受成功,清CF標志,否則,置位CF標志位。程序如下:;16550查詢方式接受程序DATA SEGMENT REC_DATA?DB50DUP(?)?;存放接受的數(shù)據(jù) TIMES ?DW50?? ;要接受的數(shù)據(jù)個數(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ù)為003CH?MOV DX,03F8H? ?;除數(shù)寄存器地址送DX OUT?DX,AL?MOV?AL,AH?INC DX OUT DX,AL?MOV AL,1FH? ?;8位數(shù)據(jù)位,偶校驗,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ù)個數(shù)送CXREPIN:?MOV DX,03FDH ;通信狀態(tài)寄存器地址送DX?IN?AL,DX TEST AL,1EH??;檢測接受過程有無錯誤 JNZ?ERROR?TEST?AL,01H??;檢測接受緩沖器中是否有數(shù)據(jù) JZ REPIN? ;沒有數(shù)據(jù),繼續(xù)檢測 MOV?DX,03F8H??;數(shù)據(jù)接受寄存器地址送DX IN AL,DX?MOV?[BX],AL INC?BX LOOP?REPIN?CLC? ??;接受成功,清CF標志位?JMP DONEERROR: STC? ??;接受不成功,置CF標志位DONE:?RETRECEIVE?ENDPCODE ENDS?END?BEGINIntel8251A與16550芯片相比較,有些什么不同之處?答:兩個芯片的重要區(qū)別是:16550芯片只能進行異步串行通訊,而Intel8251A不僅可以進行異步串行通訊,并且也可以用于同步串行通訊。Intel8251A芯片沒有內(nèi)部的波特率發(fā)生電路,因此,它所需要的發(fā)送、接受時鐘信號只能依賴外部提供。為什么Intel8251A芯片初始化時需要先送3個00H,1個40H?是否每次都需要?答:由于Intel8251A只使用兩個端口地址,所有的控制信息都寫入同一個地址的端口內(nèi)。這樣,所有的控制信息必須按照一定的順序?qū)懭?否則就會產(chǎn)生錯誤。為了保證初始化時,Intel8251A芯片處在初始的狀態(tài),可以向Intel8251A先送3個00H,1個40H。假如程序可以保證Intel8251A已經(jīng)處在初始狀態(tài),那么這項操作是可以省略的。?習題八什么是DMA傳輸?DMA傳輸有什么優(yōu)點?為什么?所謂直接存儲器傳送(DMA)是指將外設(shè)的數(shù)據(jù)不通過CPU直接送入內(nèi)存儲器,或者,從內(nèi)存儲器不通過CPU直接送往外部設(shè)備。使用DMA傳輸之后,每個數(shù)據(jù)的傳輸過程不需要CPU參與,在DMA控制器的控制下,在一個DMA總線周期里完畢數(shù)據(jù)在外部接口和存儲單元之間的直接傳輸。所以使用DMA傳輸既可以減輕CPU的承擔,又可以縮短系統(tǒng)對外部設(shè)備的響應時間,提高數(shù)據(jù)傳輸速率。敘述一次數(shù)據(jù)塊DMA傳輸和一個數(shù)據(jù)DMA傳輸?shù)娜^程。一次數(shù)據(jù)塊DMA傳輸?shù)娜^程:程序?qū)MA控制器進行初始化,寫入存儲器數(shù)據(jù)塊首地址,傳輸字節(jié)數(shù),傳輸方向等信息。同時啟動外部設(shè)備(例如,啟動輸出設(shè)備進行第一次輸出);外部設(shè)備每完畢一次輸入/輸出,它的完畢信號通過DMA控制器啟動一次DMA數(shù)據(jù)傳輸;所有預設(shè)的數(shù)據(jù)傳輸完畢,DMA控制器發(fā)出“傳輸完畢”信號,向CPU申請中斷。CPU在中斷服務程序中設(shè)立完畢標志,或者對DMA控制器進行下一次初始化。一個數(shù)據(jù)DMA傳輸?shù)娜^程。外設(shè)準備就緒,需要進行DMA操作時,向DMA控制器發(fā)出“DMA請求信號”。DMA控制器接到此信號后,向CPU發(fā)“總線請求信號”。CPU接到總線請求信號,在當前總線周期結(jié)束后,發(fā)出“DMA響應信號”。DMAC向外部設(shè)備發(fā)出“外設(shè)讀”或“外設(shè)寫”控制信號,向存儲器發(fā)出“存儲器寫”或“存儲器讀”控制信號,同時發(fā)出存儲單元地址。在這二個信號的作用下,一字節(jié)的數(shù)據(jù)從外設(shè)接口通過數(shù)據(jù)總線送往存儲單元,或者從存儲單元送往外設(shè)接口。傳送1個字節(jié)之后,DMAC自動修改內(nèi)部地址寄存器和字節(jié)計數(shù)器的內(nèi)容。DMA控制器撤消“總線請求信號”,CPU也撤消“總線應答”信號。什么叫DMA通道?它如何組成?DMA通道是控制一個外設(shè)接口和存儲器進行DMA傳輸?shù)南嚓P(guān)電路的總和。每個通道涉及地址寄存器、字節(jié)計數(shù)器、方式寄存器、DMA請求觸發(fā)器、屏蔽觸發(fā)器、狀態(tài)寄存器以及所需的其他控制電路。DMA控制器8237A的成組傳送方式和單字節(jié)傳送方式各有什么特點?它們的合用范圍各是什么?成組傳送方式下,DMA控制器獲得總線控制權(quán)后,可以連續(xù)進入多個DMA周期,進行多個字節(jié)的傳輸。這種方式可以獲得最高的數(shù)據(jù)傳輸速度。在數(shù)據(jù)傳輸期間,CPU不能訪問總線。假如一次傳輸?shù)臄?shù)據(jù)較多,這種方式會對系統(tǒng)工作產(chǎn)生一定的影響。成組傳送方式合用于外部設(shè)備規(guī)定很高的傳輸速率,系統(tǒng)其他承擔較輕,連續(xù)占用總線不會產(chǎn)生嚴重后果的情形。在單字節(jié)傳輸方式下,8237A完畢1個字節(jié)傳輸后都釋放系統(tǒng)總線,一次DMA傳輸結(jié)束,CPU可以在每個DMA周期結(jié)束后控制總線。這種方式合用于外部設(shè)備的傳輸速率規(guī)定不太高,或者系統(tǒng)不允許有較長時間停頓的情況。如何用指令啟動一次DMA傳輸?如何用指令允許/關(guān)閉一個通道的DMA傳輸?用指令將DMA請求寄存器中相關(guān)位置位,可以啟動一次DMA傳輸。用指令將DMA屏蔽寄存器中相關(guān)位復位,可以允許一個通道的DMA傳輸。將DMA屏蔽寄存器中相關(guān)位置位,可以關(guān)閉一個通道的DMA傳輸。DMA控制器8237A能不能用中斷方式工作?請說明。DMA控制器8237A可以用中斷方式工作。將8237A的信號反相后連接到中斷控制器的中斷請求輸入端,則一次數(shù)據(jù)塊傳輸結(jié)束后,可以向CPU申請中斷,由專門的中斷服務程序進行結(jié)束解決。如何判斷某通道的DMA傳輸是否結(jié)束?有幾種方法可供使用?判斷某通道的DMA傳輸是否結(jié)束有二種方法。其一是讀出DMA控制器的狀態(tài)寄存器內(nèi)容,測試其中代表該通道的狀態(tài)位,可以得知該通道的DMA傳輸是否結(jié)束。其二是讀出該通道的字節(jié)計數(shù)器內(nèi)容,假如值為0(對8237A而言為-1),表達該通道的DMA傳輸已經(jīng)結(jié)束。此外,可以用8237A的信號向CPU申請中斷。一旦進入這個中斷服務程序,表白該通道的DMA傳輸已經(jīng)結(jié)束。敘述一次DMA控制器8237A編程使用的重要環(huán)節(jié)。DMA控制器8237A初始化編程的重要環(huán)節(jié)為:發(fā)復位命令;寫命令字,設(shè)立8237A的工作方式;寫方式字,設(shè)立需使用的通道的工作方式;清除先/后觸發(fā)器;寫入內(nèi)存儲器起始地址;寫入傳送的字節(jié)數(shù)-1;清除該通道的屏蔽位;啟動外部設(shè)備,假如是內(nèi)存到輸出設(shè)備,用指令設(shè)立第一次DMA請求。使用DMA控制器8237A傳輸一個字節(jié)需要多少時間?受那些因素影響?請作具體分析。使用DMA控制器8237A傳輸1字節(jié)數(shù)據(jù)需要4個DMA控制器使用的時鐘周期,對于速度稍慢的外設(shè)/存儲器,也可以插入一個或多個等待周期。影響DMA周期時間長短的因素有:DMA控制器使用的時鐘頻率:頻率越高,DMA周期越短;存儲器和外部設(shè)備的工作速度:假如速度跟不上DMA時鐘的規(guī)定,則需要插入等待周期,從而延長整個DMA周期;使用壓縮時序可以縮短DMA周期;假如存儲器數(shù)據(jù)塊首地址低8位為“0”,前256個字節(jié)內(nèi)存地址的高8位相同,它們傳送時只需要發(fā)送一次高8位地址,后面255個數(shù)據(jù)的DMA周期達成最小;假如進行存儲器之間數(shù)據(jù)傳輸,每個字節(jié)的傳輸需要二個DMA周期。?習題九A/D和D/A轉(zhuǎn)換在微機應用中分別起什么作用?計算機加工、解決的信號可以分為數(shù)字量(Digit)和模擬量(Analog)兩種類型?,F(xiàn)代計算機內(nèi)部都采用二進制表達的數(shù)字量進行信號的輸入、存儲、傳輸、加工與輸出。為了使用計算機對模擬量進行采集、加工和輸出,需要把模擬量轉(zhuǎn)換成便于數(shù)字計算機存儲和加工的數(shù)字量(A/D轉(zhuǎn)換),或者把數(shù)字量轉(zhuǎn)換成模擬量(D/A轉(zhuǎn)換)。因此,D/A與A/D轉(zhuǎn)換是計算機用于多媒體、工業(yè)控制等領(lǐng)域的一項重要技術(shù)。如何將D/A轉(zhuǎn)換器連接到微型計算機?D/A轉(zhuǎn)換器將數(shù)字量轉(zhuǎn)換成模擬量輸出。為了保存由計算機送來的數(shù)字信號,通常需要配置一個“數(shù)據(jù)寄存器”,向D/A轉(zhuǎn)換器提供穩(wěn)定的數(shù)字信號。D/A轉(zhuǎn)換芯片輸出的模擬信號功率一般比較小,為了可以驅(qū)動執(zhí)行機構(gòu)工作,D/A轉(zhuǎn)換器的輸出一般都要連接到運算放大器進行功率放大。修改圖9-5,將DAC0832的兩級鎖存合為一級使用,畫出連接圖,并編寫輸出三角波和鋸齒波的程序。為了將DAC0832的二級緩沖鎖存器合為一級使用,可以將它的第二級置為“直通”,也就是把和接地,用第一級的和對輸入進行控制,如下圖。輸出三角波的程序段如下:S0:?MOVAL,0 ;AL中置初值0,輸出三角波的上升段S1: CALL?OUTPUT????;調(diào)用輸出子程序,輸出一個值?INC?AL ? ;產(chǎn)生上升段下一個值 JNZ S1? ?;上升段未結(jié)束,繼續(xù)輸出? DEC?AL? ??;恢復到最大值S2: CALL OUTPUT ?? ;輸出三角波的下降段 DEC?AL?? ;產(chǎn)生下降段下一個值 ?JNZ??S2 ;下降段未結(jié)束,繼續(xù)輸出 JMP S1 ??? ;下降段結(jié)束,輸出下一個三角波輸出鋸齒波的程序段如下:MOV AL,0J1:CALL OUTPUT???;輸出當前值INC?AL? ;產(chǎn)生下一個輸出值JMP J1子程序“OUTPUT”為上面兩段程序共用:OUTPUT?PROC NEAR MOV?DX,PORT0? ;DAC0832端口地址?OUTDX PUSHAX?MOVAX,N? ;延時的時間常數(shù)WT: DEC AX JNZ WT ;延時?POP?AX RETOUTPUT?ENDP一個8位D/A轉(zhuǎn)換器的滿量程(相應于數(shù)字量255)為10V。分別擬定模擬量2.0V和8.0V所相應的數(shù)字量。模擬量2.0V所相應的數(shù)字量為(2.0/10)×255=51模擬量8.0V所相應的數(shù)字量為(8.0/10)×255=204簡述逐次逼近式A/D轉(zhuǎn)換器的工作原理,并將它和∑-△A/D轉(zhuǎn)換器進行比較。逐次逼近型(也稱逐位比較式)A/D轉(zhuǎn)換器重要由逐次逼近比較寄存器SAR,D/A轉(zhuǎn)換器、比較器以及時序和控制邏輯等部分組成。它從SAR的最高位開始,逐位設(shè)定SAR寄存器中的數(shù)字量,經(jīng)D/A轉(zhuǎn)換得到電壓VC,與待轉(zhuǎn)換模擬電壓Vx進行比較。通過比較,逐次擬定各位的數(shù)碼應是“1”還是“0”。轉(zhuǎn)換結(jié)果能否準確逼近模擬信號,重要取決于SAR和D/A的位數(shù)。位數(shù)越多,越能準確逼近模擬量?!?△型模數(shù)轉(zhuǎn)換器是根據(jù)二次采樣的差進行計算的,有很強的抗干擾能力,轉(zhuǎn)換精度高,以串行方式輸出數(shù)據(jù)。常用于高分辨率(常見為16、18、24位)的中、低頻信號測量。當模擬量輸入端接有多路開關(guān)時,通道切換后要等待足夠長的時間,才干讀取轉(zhuǎn)換結(jié)果。若ADC輸入模擬電壓信號的最高頻率為100KHZ,采樣頻率的下限是多少?完畢一次A/D轉(zhuǎn)換時間的上限是多少?香農(nóng)定理告訴我們:采樣頻率一般要高于或至少等于輸入信號最高頻率的2倍。因此,采樣頻率的下限應是200KHz。在200KHz采樣頻率下,完畢一次A/D轉(zhuǎn)換時間的上限是5μs。實際應用中,采樣頻率可以達成信號最高頻率的4~8倍。假如采用400KHz的采樣頻率,完畢一次A/D轉(zhuǎn)換時間的上限是2.5μs。在使用A/D和D/A轉(zhuǎn)換器的系統(tǒng)中,地線連接時應注意什么?模擬信號很容易受到電源和數(shù)字信號的干擾引起波動。為提高輸出的穩(wěn)定性,減少誤差,模擬信號部分必須采用高精度基準電源VREF和獨立的地線。所以,要把數(shù)字地和模擬地分開。模擬地是模擬信號及基準電源的參考地,其余信號的參考地,涉及工作電源地,數(shù)據(jù)、地址、控制等相應的“地”都是數(shù)字地。連接時,先所有的模擬地連接在一起,把所有的數(shù)字地連接在一起,然后在一個點上(注意:不是兩個或更多)把模擬地和數(shù)字地連接起來。如何用一個AD芯片測量多路信息?模擬量多于一個時,可以使用多路模擬開關(guān),輪流接通其中的一路進行轉(zhuǎn)換,使多個模擬信號共用一個ADC進行A/D轉(zhuǎn)換。一臺工控PC有兩塊818卡,基地址分別為BASE1,BASE2,試編制采樣24路(一塊卡16路,一塊卡8路)模擬量的C語言程序。#include“dos.h”#define N24?/*采樣點數(shù)*/#define BASE10x300??? #define?BASE20x310#define?INTERRUPT0x1c?/*定期中斷類型號*/staticunsignedad,tad[N],tt[N][16];voidfarhandler();?/*函數(shù)handler()聲明*/voidAD818(int);?/*函數(shù)AD818()聲明*/void(interruptfar*oldhandler)();/*定義oldhandler為指向中斷服務程序的指針*/…………..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ù)點號擬定所在采集卡的基地址*/ch=scan%16; /*計算該點在本采集卡上的通道號*/outportb(base+2,ch); /*向AD818輸出通道號*/outportb(base+1,0);?/*AD輸入量程控制*/outportb(base+9,0);?/*不使用中斷或DMA*/outportb(base+0,0);?/*啟動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ù)超時,818卡有故障*/}voidinterruptfarhandler() /*55ms定期中斷服務程序,采集每個點的數(shù)據(jù)*/{intisp,s,i;for(isp=0;isp<=N-1;isp++){AD818(isp);?/*采集一個模擬量,存入ad*/for(i=0,s=0;i<=14;i++)?{tt[isp][i]=tt[isp][i+1];?/*移動隊列中的數(shù)據(jù),以便裝入新的數(shù)據(jù)*/s=s+tt[isp][i];}?/*求前15個數(shù)據(jù)的累加和*/tt[isp][15]=ad;s=s+ad;?/*新數(shù)據(jù)進隊列,求出16個數(shù)據(jù)的累加和*/tad[isp]=s/16;?/*求出16個數(shù)據(jù)的平均值*/}oldhandler(); /*進入原1CH中斷服務程序,此后返回斷點*/}?習題十查找相關(guān)資料,用列表方式給出8088,8086,……直到P4各代微解決器的地址、數(shù)據(jù)線引腳數(shù)量,并推算出各自的內(nèi)存尋址空間。解決器數(shù)據(jù)線地址線內(nèi)存尋址空間80888201MB808616201MB80286162416MB80386/48632324GBPentium64324GBPentium2~4643664GB什么是MMX指令?它有什么特點?MMX指令是“多媒體擴展指令”的英文簡稱,它采用SIMD(單指令流多數(shù)據(jù)流)技術(shù),使得解決器在一條指令中對多個數(shù)據(jù)進行解決,提高了對多媒體數(shù)據(jù)的解決能力。什么叫動態(tài)執(zhí)行?使用動態(tài)執(zhí)行技術(shù)會帶來什么好處?動態(tài)執(zhí)行是通過預測指令流和數(shù)據(jù)流,調(diào)整指令的執(zhí)行順序,最大地發(fā)揮CPU內(nèi)部各部件的功效,提高系統(tǒng)執(zhí)行指令的速度。動態(tài)執(zhí)行重要采用了:多路分支預測:運用轉(zhuǎn)移預測技術(shù)允許程序幾個分支流同時在解決器內(nèi)執(zhí)行;數(shù)據(jù)流分析:通過度析指令數(shù)據(jù)的相關(guān)性,把指令進行優(yōu)化排序后執(zhí)行,充足運用解決器內(nèi)部資源;推測執(zhí)行:根據(jù)各推測最終的對的性,對多個分支的運營結(jié)果進行取舍。32位微解決器有哪幾種工作方式?各有什么特點?32位微解決器有4種不同的工作方式:實地址方式、保護方式、虛擬8086方式、系統(tǒng)管理方式。實地址方式:實地址方式使用16位80x86解決器的尋址方式(使用20位地址尋址1MB空間)、存儲器管理和中斷管理??梢允褂?2位寄存器,使用特權(quán)級0,可以執(zhí)行大多數(shù)指令。 保護方式:保護方式是32位微解決器的基本工作方式。它使用32位地址尋址4GB的實存空間,通過虛擬存儲管理、用戶優(yōu)先級管理、I/O管理等技術(shù),擴大可使用的存儲空間,對操作系統(tǒng)和用戶程序進行隔離和保護。虛擬8086方式:虛擬8086方式是保護模式下為任務提供的的8086工作環(huán)境。每個任務使用16位地址尋址1MB的內(nèi)存空間,以最低特權(quán)級運營,不能使用特權(quán)指令。系統(tǒng)管理方式:系統(tǒng)管理模式重要用于電源管理,可以使解決器和外圍設(shè)備部件進入“休眠”狀態(tài),在有鍵盤按下或鼠標移動時“喚醒”系統(tǒng),使之繼續(xù)工作。運用SMM可以實現(xiàn)軟件關(guān)機。敘述XT總線與ISA總線的異同之處。XT總線可以看作是ISA總線的一個“子集”,它涉及8位數(shù)據(jù)線,20根地址線,使用與CPU相同的4.77MHz的時鐘信號。ISA總線在XT總線的基礎(chǔ)上,把數(shù)據(jù)線擴展到16根,地址線擴展到24根,使用獨立于CPU的8MHz時鐘信號,中斷和DMA通道數(shù)目都有所增長。ISA總線插槽由8位的XT總線插槽和ISA總線擴展插槽兩部分組成。什么叫分級總線?使用分級總線有什么優(yōu)點?所謂分級總線是指系統(tǒng)中存在多組總線,每組總線可以有不同的數(shù)據(jù)線寬度、數(shù)據(jù)傳輸速率和不同的信號傳輸協(xié)議。系統(tǒng)內(nèi)的設(shè)備按照它們對傳輸速率、數(shù)據(jù)吞吐量的不同規(guī)定合理地連接在不同的總線上。不同總線之間通過“橋”電路進行連接。使用分級總線可以使各種設(shè)備的數(shù)據(jù)傳輸規(guī)定得到最大限度的滿足,同時使整個系統(tǒng)的數(shù)據(jù)吞吐量和效能達成最大化。簡述“兩個中心”結(jié)構(gòu)與“南北橋”結(jié)構(gòu)的區(qū)別,同時說明“兩個中心”結(jié)構(gòu)的優(yōu)越之處?!澳媳睒颉苯Y(jié)構(gòu)和“中心結(jié)構(gòu)”都支持多級總線的系統(tǒng)結(jié)構(gòu)。它們的重要區(qū)別在于,南橋芯片連接的所有高速外設(shè)都要通過PCI總線與解決器相連接,而“中心結(jié)構(gòu)”里所有連接IO設(shè)備的總線(PCI,ISA,USB……)都通過IO控制中心(ICH)與中心高速接口直接連接,從而緩解了PCI總線數(shù)據(jù)互換的擁擠限度。相比較而言,“中心結(jié)構(gòu)”對信息流的途徑分派更為合理。CPU←→Cache,Cache←→主存,主存←→輔存之間的數(shù)據(jù)傳輸各有什么特點?為什么?請分析因素。CPU與Cache之間數(shù)據(jù)傳輸?shù)闹匾攸c是:高速:Cache以與CPU相同或接近的速度工作;不擬定:CPU對Cache的訪問也許因“命中”而成功,也也許以“失靶”而失敗。Cache與主存之間數(shù)據(jù)傳輸?shù)闹匾匦允牵簲?shù)據(jù)傳輸以“頁”為單位,使用“成組傳輸方式(突發(fā)總線方式)”進行。導致上述特點的因素是,這一層次以“高速”為追求的目的,運用了程序、數(shù)據(jù)的“局部性”原理。主存與輔存之間的數(shù)據(jù)傳輸以“數(shù)據(jù)塊/扇區(qū)”為單位,通常以DMA方式進行。導致上述特點的因素是,這一層次以“大容量”、“低價格”為追求的目的,輔存大容量、“粗粒度”的結(jié)構(gòu)特點正好可以滿足對上述目的的規(guī)定。系統(tǒng)對不同層次的數(shù)據(jù)傳輸有著不同的規(guī)定,因而設(shè)立了不同的軟硬件結(jié)構(gòu),最終導致了傳輸方式上的差異。什么叫“相聯(lián)存儲映像表”?說明它的結(jié)構(gòu)和用途。相聯(lián)存儲映像表是Cache內(nèi)紀錄Cache中各頁在主存的位置和其他信息的表格,由各頁的“標記(Tag)”,“狀態(tài)”和“LRU位”組成。“標記(Tag)”記錄了該頁在主存中的位置,供CPU訪問時進行匹配查找使用。“狀態(tài)”和“LRU位”用于Cache頁的替換操作。為什么要進行Cache和主存的“映像”?有哪幾種相聯(lián)映像的方法?比較各自的利弊。Cache和主存的“映像”是主存頁調(diào)入Cache的“規(guī)則”,為了提高CPU在Cache中查找信息的速度,這種“規(guī)則”是必須的。常見相聯(lián)映像的方法有三種:全相聯(lián)映像法:內(nèi)存頁可以調(diào)入Cache的任何一頁,規(guī)則簡樸,頁沖突的也許性最小,查找所需工作量最大。直接映像法:每一個內(nèi)存頁只能調(diào)入Cache中相同頁號的一個頁,規(guī)則簡樸,查找方便,塊沖突的也許性大。組相聯(lián)映像法:每一個內(nèi)存頁可以與Cache中一個組內(nèi)的若干個頁面相相應,規(guī)則稍復雜,查找工作量中檔,塊沖突的也許性中檔。什么叫“突發(fā)總線周期”?它有什么優(yōu)點?“突發(fā)總線周期”也稱為“成組傳送方式”,總線主設(shè)備在發(fā)送一個主存地址之后,通過連續(xù)的多個周期,傳輸(讀/寫)多個地址相連的存儲單元的數(shù)據(jù)。這種方式省去了多次發(fā)送地址、多次申請總線和多次互相聯(lián)絡(luò)的過程,因此可以獲得很高的數(shù)據(jù)傳輸速率。邏輯地址是如何轉(zhuǎn)換成線性地址的?簡要敘述轉(zhuǎn)換過程。實地址方式下沒有“線性地址”。保護模式下,邏輯地址由“段號”和“段內(nèi)地址”兩部分組成。使用“段號”查找“段描述符表”,可以獲得該段的起始地址,與“段內(nèi)地址”相加,就得到了相應的“線性地址”。線性地址是如何轉(zhuǎn)換成物理地址的?簡要敘述轉(zhuǎn)換過程?!熬€性地址”由處在高位的“頁組號”、處在中間的“頁號”和處在低位的“頁內(nèi)地址”三部分組成。用“頁組號”查找“頁組表”,得到“頁表”的起始地址;用“頁號”查找該“頁表”,得到該頁的起始地址;頁起始地址加上“頁內(nèi)地址”就得到了它相應的物理地址。請分析使用虛擬存儲管理帶來的利弊。虛擬存儲管理把輔存的一部分用作“虛擬”的主存,擴大了操作系統(tǒng)可分派,程序員可運用的存儲空間,便于實現(xiàn)任務之間的隔離和保護,有效地支持了“多任務”運營環(huán)境的實現(xiàn)。它還可以有效地克服“內(nèi)存碎片”問題,簡化了存儲管理。但是,實現(xiàn)虛擬存儲后,每次訪問主存都需要進行兩次地址的轉(zhuǎn)換,增長了系統(tǒng)的復雜性,增長了系統(tǒng)的硬件成本,減少了訪問主存的速度,并且,由于系統(tǒng)復雜限度的增長,系統(tǒng)的可靠性也會受到影響。32位微解決器實行保護機制的目的是什么?有哪些重要措施?32位微解決器實行保護機制的主線目的在于增長在“多任務”運營環(huán)境下系統(tǒng)的可靠性,使得任務之間、任務和操作系統(tǒng)之間實現(xiàn)隔離和保護。為了實現(xiàn)隔離和保護,采用了以下幾項措施:為任務和資源設(shè)定一個“優(yōu)先級”,優(yōu)先級較低的任務不能訪問優(yōu)先級較高的資源,不能調(diào)用優(yōu)先級較高的程序模塊。使用虛擬內(nèi)存管理機制,使得任務和任務、任務和操作系統(tǒng)所使用的存儲空間互相隔離,從而保證每個任務的正常運營不受其它任務的影響,一個任務的故障不影響整個系統(tǒng)的正常運營。說明操作系統(tǒng)在保護模式下啟動一個任務的過程。一個任務用JMP或CALL指令啟動一個新的任務時,解決器將當前任務的所有通用寄存器、所有段寄存器中的選擇子、EFLAGS、EIP存入該任務自身的TSS,然后將新任務的選擇子、描述符裝入TR寄存器,并且將相應TSS段中所保存的通用寄存器、段寄存器、EFLAGS、EIP副本裝入解決器相應的寄存器中。在CS:EIP的控制下,一個新的任務開始執(zhí)行。用JMP、CALL指令調(diào)用同一個任務中其他程序段時,指令中的“段選擇子”及其描述符被存入CS寄存器,“偏移地址”進入EIP,于是,目的程序被執(zhí)行。對于CALL指令,本來程序的返回信息“CS:EIP”被壓入堆棧,和16位微解決器中十分相似。中斷和異常也會導致任務的轉(zhuǎn)換。32位微解決器如何實行對I/O過程的管理?保護方式下對I/O過程的管理重要有兩項措施:任務狀態(tài)段TSS中有一個最多64Kbits組成的“I/O允許位圖(IOM)”,它的每一位相應一個I/O端口,為0表達該端口允許這個用戶進行I/O操作。解決器一方面檢查存放在CS中的當前任務的CPL(當前任務優(yōu)先級),假如CPL的特權(quán)級高于或等于EFLAGS中由IOPL規(guī)定的特權(quán)級,I/O操作不會受限制,否則將進一步檢查IOM,對IOM為1的端口進行操作將產(chǎn)生保護異常;對于運營在虛擬8086方式的任務,用IOM來控制對I/O端口進行訪問,對位圖相應位為1的端口進行訪問將產(chǎn)生保護異常。另一種辦法是:在IOM中封鎖對所有端口的訪問,當前任務一旦執(zhí)行I/O指令,立即產(chǎn)生保護異常,進入由操作系統(tǒng)設(shè)立的“異常解決程序”,在操作系統(tǒng)的控制下進行間接的“I/O操作”。簡要敘述保護方式與實地址方式下的中斷管理方法的區(qū)別。在實地址方式下,32位80X86微解決器采用與16位80X86相同的中斷管理機制,用1KB大小的“中斷向量表”存儲各中斷服務程序入口地址,這些“中斷向量”按照“中斷類型”的順序存放。中斷向量表存放在地址0000:0000開始的主存中。保護方式下用“中斷描述符表”來指出各中斷解決程序的入口地址,每一個中斷類型相應一個“中斷門”或“陷阱門”描述符。中斷描述符表可以放在內(nèi)存的任何位置,表的首地址存放在IDTR寄存器中。保護模式下中斷響應的過程與實地址方式基本相同,但是可以用中斷機制進行任務的切換。什么叫“串行中斷”?它有什么優(yōu)點?串行

溫馨提示

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

評論

0/150

提交評論