中斷與中斷控制習(xí)題選解_第1頁(yè)
中斷與中斷控制習(xí)題選解_第2頁(yè)
中斷與中斷控制習(xí)題選解_第3頁(yè)
中斷與中斷控制習(xí)題選解_第4頁(yè)
中斷與中斷控制習(xí)題選解_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精品資料7.7 8259A只有兩個(gè)端口地址,但可讀 /寫寄存器數(shù)遠(yuǎn)遠(yuǎn)多于兩個(gè),如何保證正確讀/寫?解:8259A中使用了如下幾種方法來(lái)實(shí)現(xiàn)同一地址尋址多個(gè)內(nèi)部寄存器:(1)利用命令字 OCW:事先指定讀IRR或ISR;(2)利用命令字中位 4和位3的狀態(tài)來(lái)決定寫ICW1,OCW:還是寫OCW3 ;(3)根據(jù)順序來(lái)決定同一接口地址下的命令字(ICWZ,ICW3 ,ICW4,OCW1) 。7.11某80X86微機(jī)的中斷系統(tǒng)有 5個(gè)外部中斷源,接在 8259A的 氏7端,中斷類型碼為 5BH,5CH,5DH,5EH 和5FH , 8259A 的端口地址為 B0H,B1H 。允許它們以全嵌套工作方式工

2、作,中斷請(qǐng)求采用電平觸發(fā)方式。試編寫 8259A的初始化程序。解:先確定要寫哪些控制字,以及每個(gè)控制字對(duì)應(yīng)位的取值,再編程。此題,要寫的控 制字及位取值如下:(1) ICW1 = x x xllxll ,即:中斷請(qǐng)求為電平觸發(fā)、單片 8259A、寫ICW4(2) ICW2=01011x x x ,即:此片8259A中斷類型碼高5位為:01011(3) ICW3無(wú)需寫。(4 ) ICW4 = 00000 x 01 ,即:一般嵌套、非緩沖、正常 EOI ,8086 /8088 模式。其中x表不取值為0或1均可。假定控制字中的 x固定為0,初始化程序如下:MOVMOVOUTINCMOVOUTMOVO

3、UT7.12 某 80X86DX,0B0HAL,1BHDX , ALDXAL, 58HDX , AL AL,01HDX , AL系統(tǒng)中設(shè)置三片人主片的IR2和IR4。若已知當(dāng)前主;指向端口 0;中斷請(qǐng)求為邊沿觸發(fā)、單片8259A、寫ICW4;寫 ICWI;指向端口 1;中斷類型碼高 5位為01011;寫 ICW2;一般嵌套、非緩沖、正常 EOI , 8086 /8088 模;寫 ICW48259A級(jí)聯(lián)使用,一片為主,兩片為從,從片分別接 8259A和從8259A的IR5上各接有一個(gè)外部中斷源,其中斷向量號(hào)分別為75H,85H,95H。假設(shè)它們的中斷入口地址均在同一段中,段基址為4310H ,偏

4、移地址分別為1230H,2340H,3450H;所有中斷都采用邊沿觸發(fā)方式、全嵌套方式、正常EOI結(jié)束方式。(1)試畫出該系統(tǒng)的硬件連線圖;(2)試編寫全部初始化程序。解:(1)此題硬件連線要考慮各 8259A與CPU的連接,還要考慮三片 8259A間的級(jí)聯(lián)接。8259A與CPU連接的方法是:端口選擇線與一般與 MPU低位地址線 A。直接相連,也可與其他 Ai相連。數(shù)據(jù)線D0D7與MPU數(shù)據(jù)線D0D7直接相連。片選線CS與余下MPU高位地址線經(jīng)譯碼后產(chǎn)生的片選信號(hào)相連。RD、WR、INTR分別與控制總線組合形成的IOR、IOW和中斷響應(yīng)信號(hào)INTR相連。主片的INT與MPU的INTR直接相連。

5、8259A級(jí)聯(lián)連接方法是:從片的INT與主片的某個(gè)IRi直接相連。主片的CAS2 CAS。與各從片的CAS2 CAS。直接相連。SP/EN則取決于是采用緩沖還是非緩沖方式。本題采用非緩沖方式, 主片SP/ EN接+5V ,從片SP/ EN接地。由此畫出硬件連線圖,如圖7.3所示。7.5 825。八構(gòu)成的中斷邏輯可修改(2)初始化程序應(yīng)包括兩部分內(nèi)容,即主、從片的初始化和填寫相關(guān)中斷向量表。對(duì)主片編程時(shí)要注意。在多片級(jí)聯(lián)方式下,系統(tǒng)要工作在完全嵌套方式,主片必須設(shè)置為特殊全嵌套方式,以便同級(jí)中斷能打斷同級(jí)中斷。因?yàn)樵诙嗥?jí)聯(lián)方式下,從片的8個(gè)中斷源是共用主片的一個(gè)中斷級(jí),而實(shí)際上從片的 8個(gè)中斷

6、源也有優(yōu)先級(jí)區(qū)別。假定當(dāng)前正在服務(wù)的 中斷級(jí)是從片的某個(gè)中斷級(jí),若當(dāng) CPU正在為該中斷源服務(wù)時(shí),該從片又向主片提出中斷 請(qǐng)求,此時(shí)對(duì)主片而言是同一級(jí)中斷請(qǐng)求, 但對(duì)從片來(lái)說(shuō)卻是出現(xiàn)了一個(gè)高優(yōu)先級(jí)中斷請(qǐng)求, 應(yīng)該優(yōu)先處理,彳四定主片、從片 1、從片 2地址分另I為:PORT00. PORT01 , PORT10, PORT1IPORT20,PORT21 ,程序段如下::初始化8259A主片;寫ICW1邊沿觸發(fā)、多片級(jí)聯(lián)、寫 ICW4;寫ICW2 ,主片中斷向斷號(hào)為 70H-78HMOVAL,11HOUTPORT00, ALMOVAL,70HOUTPORT01 . ALMOVAL.,000l0l

7、00B; 寫 ICW3, IR2,IR4, 接有從片OUTPORT01 . ALMOVAL,00010001B; 寫 ICW4 特殊全嵌套、非緩沖、正常OUTPORT01 , ALMOVAL,OFFH; 用 OCW1 屏蔽所有中斷請(qǐng)求OUTPORT01 , AL; 初始化8259A 從片 1EOIMOVAL,11 H; 寫 ICW1, 邊沿觸發(fā)、多片級(jí)聯(lián)、寫 ICW4OUTPORT11,ALMOVAL.,01.H; 寫 ICW2 ,從片1 中斷向量號(hào)為 80H-87HOUTPORT11,ALMOVAL,02H;寫 ICW3. 對(duì)應(yīng)主片 IRi 的編碼為 010OUTPORT11. ,ALMOV

8、AL,01H; 寫 ICW4 ,一般全嵌套、非緩沖、正常EOIOUTPORT11 ,ALMOVAL,0FFH; 用 OCW1 屏蔽所有中斷請(qǐng)求OUTPORT11 . AL; 初始化8259A 從片 2MUVAL,11H;寫 ICW 1 。邊沿觸發(fā)、多片級(jí)聯(lián)、寫 ICW4OUTPORT20,ALMOVAL.90H; 寫 ICW2 。從片2 中斷向量號(hào)為 90H 97HOUTPORT21.ALMOVAL,04HDUTPORT21, ALMOVA.L,01 HOUTPORT21, ALMOVAL.0FFHOUTPORT21, AL; 填寫 T5H,85H 和 95H 號(hào)中斷向址SUBDI 、 DI;

9、 ES 指向中斷向量表段基址MOVES, DICLDMOVDI , 75H*4;75H 號(hào)中斷向量地址MOVAX , 1230H; 中斷處理程序偏移地址STOSWMOVAx,4310H; 中斷處理程序段基址STOSWMOVDI.,85H*4;初始化 85H 號(hào)中斷向量MOVAX.2340HSTOWSMOVAx .4310HSTOSWMOVDI,95H *4;初始化 95H 號(hào)中斷向量MOV AX,3450HSTOW SMOVAx.4310HSTOSWMOVAL.00H;用OCW1 開放主片所有中斷請(qǐng)求OUTPORT01 H. ALOUT PORT 11 H , AL;用 OCW1 開放從片所有

10、中斷請(qǐng)求OUT PORT21H,AL7.13 某 8085/8088 系統(tǒng)中,若 8259A 處于單片、全嵌套工作方式.且采用非特殊屏蔽和非特殊結(jié)束方式,中斷請(qǐng)求信號(hào)是邊沿觸發(fā)。IR0 的中斷類型碼為58H 。試對(duì) 8259A初始化編程。解 :此題無(wú)需寫ICW3 。其他控制字及位取值如下(2) ICW2 =01011 x x x ,1 ) ICW1 =xxx10x11,即 :中斷請(qǐng)求為邊沿觸發(fā)、單片 8259A , 寫 ICW4即 : 此片 8259A 中斷類型碼高5 位為 01011( 3 ) ICW4 = 00000 x O1 ,即 : 一般嵌套、非緩沖、正常EOI,8086/8088 模

11、式。其中 x 表示取值為 0 或 1 均可。假定控制字中的 x 固定為 0, 初始化程序如下:MOVDX, x x x x x x x0BMOVAL,13HICW4OUTDX,ALINC DXMOVAL,58HOUTDX , ALMOVAL,O1HOUTDX , AL7.14 分別列出下列情況下應(yīng)向 8259A(1)讀中斷請(qǐng)求寄存器IRR;(2)讀中斷屏蔽寄存器IMR;(3)讀中斷服務(wù)寄存器ISR;(4) 向 8259A 發(fā)中斷結(jié)束命令EOIo 。解:(1)應(yīng)先對(duì) 0 端口寫 OCW3( 讀 IRR命令字為 00001010B ,指令序列為 :MOV AL, 00001010BOUTx x x

12、 x x x x 0B,ALINAL, x x x x x x x 0B(2) 無(wú)需發(fā)操作命令字,直接對(duì)1; 指向端口 0; 中斷請(qǐng)求為邊沿觸發(fā)、單片 8259A 、寫;寫 ICW 1; 指向端口 1; 中斷類型碼高5 位為 01011; 寫 ICW2; 一般嵌套、非緩沖、正常EOI,8086 模式; 寫 ICW4提供的操作命令字:命令字),再通過(guò)讀0 端口獲得 IRR 值,讀 IRR; 讀 IRR 命令字; 寫 OCW3( 讀 IRR 命令字 );讀 IRR端口讀操作:;讀 IMR再通過(guò)讀。 端口獲得 ISR 值, 讀 ISR 命令; 讀 ISR 命令字IN AL, x x x x x x

13、x 1B(3)應(yīng)先對(duì)0 端口寫 OCW3( 讀 ISR 命令字 ),字為 00001011B ,指令序列為 :MOV AL, 00001011BOUT x x x x x x x0B,AL;寫 OCW3(讀 ISR 命令字)INAL, x x x x x x x 0B;讀 ISR(4)有四種中斷結(jié)束命令 EOI ,由寫OCW:設(shè)置。非特殊EOI命令:00100000B;特殊 EOI 命令:01100L2L1L0B;自動(dòng)循環(huán) EOI命令:10100000B;特殊循環(huán)EOI命令:11100 L2 L1L0B7.16 若一 PC/AT應(yīng)用系統(tǒng)中有5個(gè)故障源A,B,C,D,E ,當(dāng)任一個(gè)源變?yōu)榈碗娖綍r(shí)

14、, 則有故障要處理。它們的優(yōu)先權(quán)順序是從 A到E依次降低,處理程序的人口地址分別為8000H,S100H,8200H,8300H和8400H?,F(xiàn)只有IRQ2可用,試按查詢式中斷識(shí)別與判優(yōu)方案設(shè)計(jì)該中斷系統(tǒng),包括硬件設(shè)計(jì)和軟件編程。解:按查詢式中斷識(shí)別與判優(yōu)方案設(shè)計(jì)的中斷系統(tǒng)如圖7.4所示。麗一IOR j電DM位中新清奈;故障源A處理程序的人口地址 CS: IP;故障源B處理程序的入口地址CS:IP;故障源C處理程序的人口地址CS:I P;故障源D處理程序的人 A地址CS:IP;故障源E處理程序的人口地址 CS:I P;關(guān)中斷圖L4 聲泡式中斷誑別與判伏電瓶5個(gè)故障源A, B,C,D,E通過(guò)與非

15、門與IRQ2相連。即任一個(gè)源變?yōu)榈碗娖綍r(shí)通過(guò)IRQ2向CPU發(fā)中斷請(qǐng)求,在中斷服務(wù)程序中通過(guò)讀取三態(tài)緩沖器來(lái)識(shí)別故障源,并通過(guò)讀端口控制信號(hào)復(fù)位中斷謂求.程序如下:DATA SEGMENTBASE DW 8000H, 0000HDW 8100H,0000HDW8200H,0000HDW8300H,0000H:DW 8400H . 0000HDATA ENDSCODE SEHMENTASSUMECS:CODE , DS: DATASTART:MOV Ax,DATAMOV DS. Ax CLIMOV DI,0AH *.4;取 IRQ2 的中斷向量地址CLDXOR Ax,AxMOV ES, Ax;E

16、S指向中斷向量表段基址MOV Ax ,OFFSET INT_ROUT ;填寫中斷向量的偏移地址STOSWMOV Ax,SEG INT_ROUT;填寫中斷向量的段基址STOSWSTI; 開中斷;其他處理MOVAH,4CH; 中斷服務(wù)程序INT21 HINT_ROUT PROC:PUSHAx; 保護(hù)現(xiàn)場(chǎng)PUSHBxSTI; 開中斷LEABx.BASE; 指向故障源A 中斷處理程序地址INAL,20H; 讀狀態(tài)寄存器NOTAL; 取反 . 將低電平變?yōu)楦唠娖紸NDAL,0F8HWAITl:TESTAL,OFFH; 有末處理中斷?JZRETURN; 無(wú)中斷返回SHLAL. , 1; 有故障JNCNEX

17、T; 無(wú),跳過(guò)CALL.DWORDPRTBX;轉(zhuǎn)相應(yīng)故障源中斷處理NEXT:ADDBx,4; 指向下一故降源中斷處理程序地址JMPWAIT1RETURN:CLI; 關(guān)中斷POPBX: 恢復(fù)現(xiàn)場(chǎng)POPAxSTI; 開中斷I RETINT_ROUT ENDPCODE ENDSEND START7.17 試編寫一個(gè)基于查詢式中斷識(shí)別與判優(yōu)方案的中斷程序,該程序控制 8 臺(tái)設(shè)備,假定狀態(tài)寄存器地址為 044DH ,其最低位優(yōu)先級(jí)最高,最高位優(yōu)先級(jí)最低:某位置"1"表示相應(yīng)的設(shè)備有服務(wù)請(qǐng)求。同時(shí)假定已定義一個(gè)地址數(shù)組 ADDR _ TAB ,數(shù)組中的第i 個(gè)元素提供第 i 臺(tái)設(shè)備的中

18、斷處理程序人口地址的偏移量解 :基于查詢式中斷識(shí)別與判優(yōu)的中斷程序如下:INT_ PROC PRDCPUSH AX;保護(hù)現(xiàn)場(chǎng)PUSH BxSTI; 開中斷MOVBX,0; 指向第0 臺(tái)設(shè)備中斷處理程序地址INAL,40H; 狀態(tài)寄存器WAIT $ :TESTAL.0FFH; 有未處理中斷?JZRETURN; 無(wú)中斷返回SHLAL ,1; 第 i 臺(tái)設(shè)備有中斷?JNCNEXT; 無(wú),跳過(guò)CALLADDR_TAB.BX; 轉(zhuǎn)第 i 臺(tái)設(shè)備中斷處理NEXT:ADDBX,2; 指向下一臺(tái)設(shè)備中斷處理程序地址JMPWAIT$RETURN : CLI; 關(guān)中斷POPBX; 恢復(fù)現(xiàn)場(chǎng)POPAXSTI; 開中

19、斷IRETINT_PROCENDP9 型中斷例程與主程序處于相同的源模7. 18 假設(shè)起始地址的標(biāo)號(hào)為 I NT_ RDUT 塊. 試為主程序編寫裝填中斷向量表的程序段。解 :裝填中斷向量表可用DOS 的 25H 號(hào)功能調(diào)用,亦可用 MOV 指令或串操作指令直 接對(duì)中斷向量表進(jìn)行寫操實(shí)現(xiàn)。用 DOS 的 25H 號(hào)功能調(diào)用。程序段如下PUSHDSMOVDX . OFFSET INT_ROUTDXMOVAX . SEG INT_ROUTMOVDS , AXMOVAH,25HMOVAL, 09HINT2IH量POP DS用串操作指令填寫.程序段如下:PUSHESCLIMOVDI.09H* 4CLD

20、XOR Ax,AxMOV ES,Ax0000HMOV AX, OFFSET INT_ROUTSTOSWMTV Ax , SEG INT_ROUTSTOSWST I; 取中斷向量的偏移地址送; 取中斷向盤的段基址送DS;取 DOS 的功能調(diào)用號(hào)送 AH; 取中斷類型碼送AL; 調(diào) 25H 號(hào)功能調(diào)用填寫中斷向; 關(guān)中斷: 取 9 型中斷的中斷向量地址;ES 指向中斷向量表段基址; 填寫中斷向里的偏移地址; 填寫中斷向量的段基址; 開中斷POP ES7.19假設(shè)某80486 系統(tǒng)工作在實(shí)地址方式。 已知(SP)=0100H,(5) = 0300H, (FLAGS)=0240H,00020DH 至0

21、0023H 單元的內(nèi)容分別是 40H .00H .00H .01 H 。同時(shí)還已知INT8的偏移量00A0H 在段基址為0900 H 的CS段內(nèi)。試指出在執(zhí)行IN幾指令并進(jìn)人該指令相應(yīng)的中斷服務(wù)程序時(shí) .SP,SS,IP,CS,FLAGS和堆棧最頂端三個(gè)字的內(nèi)容。解:由題意可知:INT8指令的地址為0900H:00A0H; IN 幾中斷服務(wù)程序的人口地址為 0100H:0040 H。CPU執(zhí)行INT 8指令時(shí)。先保存 FLAGS , CS:IP 值至堆棧,并清除 FLAGS中的1F和TF位,進(jìn)而改變CS: IP值轉(zhuǎn)入中斷服務(wù)程序。由此可得 CPU在執(zhí)行INT8指令并進(jìn)人該指令相應(yīng)的中斷服務(wù)程序

22、時(shí)各寄存器和存儲(chǔ)器單元值如下:(SP)=(SP)-6=0100H-6=00FAH, (SS)=0300H;(CS:IP)為中斷服務(wù)程序人口地址 :(IP)=0040H. (CS) = 0100H;FLAGS 中 IF=TF=0,即 FLAGS9 = FLAGS8 = 0。所以:(FLAGS)=0040H:堆棧最頂端三個(gè)字的內(nèi)容為 :(00FEH)=0240H; FLAGS值(00FCH) = 0900H;斷點(diǎn) CS 值(00FA00H)=00A0H:斷點(diǎn) IP 值7.20 討論在80X86系統(tǒng)的調(diào)試應(yīng)用中.INT3指令和單步自陷所產(chǎn)生的中斷差別,指出其應(yīng)用場(chǎng)合。解:INT3指令產(chǎn)生的是斷點(diǎn)中斷

23、,即程序運(yùn)行遇到斷點(diǎn)(INT3指令)時(shí)才暫停.轉(zhuǎn)去執(zhí)行斷點(diǎn)處理程序,主要用于在程序連續(xù)運(yùn)行方式下設(shè)置斷點(diǎn)調(diào)試程序;而單步自陷則使程序進(jìn)人單步運(yùn)行方式。即每執(zhí)行一條指令,程序運(yùn)行都會(huì)暫停,轉(zhuǎn)去執(zhí)行單步處理程序,用于單 步運(yùn)行調(diào)試程序。7.21 若80X86系統(tǒng)正以單步方式運(yùn)行某用戶程序 (該程序己開放外部中斷,即 IF=1) 的過(guò)程中執(zhí)行一條除法指令時(shí),1NTR線上出現(xiàn)了可屏蔽中斷請(qǐng)求,與此同時(shí) .這條除法指令也產(chǎn)生了除法出錯(cuò)中斷。試以流程圖表示CPU處理這三種同時(shí)出現(xiàn)的中斷的過(guò)程。解:中斷過(guò)程如圖7.5所示。CPU先響應(yīng)除法出錯(cuò)中斷.再響應(yīng)INTR中斷,處理完畢返 回單步運(yùn)行的用戶程序。卜-基指。7.22試編寫出只有一片8259A 的8088系統(tǒng)中8259A 的初始化程序.8259A 的地址為02C0H 和 02C1 H ,要求:(1)中斷請(qǐng)求物人采用電平觸發(fā);(2) I%請(qǐng)求的中斷類型碼為16(3)采用緩沖方式;(4)采用普通的 E

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論