(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案_第1頁
(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案_第2頁
(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案_第3頁
(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案_第4頁
(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

(2025年)《微機(jī)原理及接口技術(shù)》典型習(xí)題參考答案一、尋址方式與指令執(zhí)行結(jié)果分析已知8086CPU中,(DS)=2000H,(BX)=0100H,(SI)=0002H,(20102H)=34H,(20103H)=12H,(21200H)=00H,(21201H)=40H,(21202H)=0FH,(21203H)=80H。分析以下指令的尋址方式,計(jì)算操作數(shù)的物理地址(若為內(nèi)存操作數(shù)),并給出指令執(zhí)行后目標(biāo)寄存器或內(nèi)存單元的內(nèi)容。1.MOVAX,1234H尋址方式:立即尋址。操作數(shù)1234H直接包含在指令中。執(zhí)行后(AX)=1234H。2.MOVAX,BX尋址方式:寄存器尋址。源操作數(shù)為BX寄存器內(nèi)容。執(zhí)行后(AX)=(BX)=0100H。3.MOVAX,[1200H]尋址方式:直接尋址。有效地址EA=1200H,物理地址=DS×16+EA=2000H×16+1200H=21200H。操作數(shù)為內(nèi)存單元21200H和21201H的內(nèi)容(低地址存低字節(jié)),即(21200H)=00H,(21201H)=40H,因此操作數(shù)為4000H(小端模式)。執(zhí)行后(AX)=4000H。4.MOVAX,[BX]尋址方式:寄存器間接尋址。有效地址EA=(BX)=0100H,物理地址=2000H×16+0100H=20100H。但題目中未直接給出20100H和20101H的值,需注意題目中給出(20102H)=34H,(20103H)=12H,推測可能為連續(xù)存儲。假設(shè)(20100H)=XXH,(20101H)=YYH,但題目未明確,需根據(jù)后續(xù)指令修正。5.MOVAX,[BX+SI]尋址方式:基址變址尋址。EA=(BX)+(SI)=0100H+0002H=0102H,物理地址=2000H×16+0102H=20102H。題目中給出(20102H)=34H(低字節(jié)),(20103H)=12H(高字節(jié)),因此操作數(shù)為1234H。執(zhí)行后(AX)=1234H。6.MOV[BX+10H],AX假設(shè)執(zhí)行前(AX)=5678H,尋址方式:寄存器相對尋址。EA=(BX)+10H=0100H+10H=0110H,物理地址=2000H×16+0110H=20110H。執(zhí)行后,(20110H)=78H(AX低字節(jié)),(20111H)=56H(AX高字節(jié))。二、匯編程序分析與修改以下為統(tǒng)計(jì)字?jǐn)?shù)組中負(fù)數(shù)個數(shù)的匯編程序段,存在多處錯誤,請指出并修正,說明修正后的執(zhí)行流程。原程序:DATASEGMENTARRAYDW-1,3,-5,7,-9COUNTEQU$-ARRAYRESULTDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,COUNTMOVBX,0MOVAL,0LOOP1:MOVAX,ARRAY[BX]TESTAX,8000HJZNEXTINCALNEXT:INCBXLOOPLOOP1MOVRESULT,ALMOVAH,4CHINT21HCODEENDSENDSTART錯誤分析與修正:1.COUNT定義錯誤:ARRAY為字?jǐn)?shù)組(DW),每個元素占2字節(jié),原COUNT=$-ARRAY計(jì)算的是字節(jié)數(shù),而循環(huán)次數(shù)應(yīng)為元素個數(shù)(字節(jié)數(shù)/2)。修正:COUNTEQU($-ARRAY)/2。2.BX增量錯誤:字?jǐn)?shù)組訪問時,BX應(yīng)每次增加2(每個字占2字節(jié))。原程序中INCBX僅增加1,導(dǎo)致訪問錯位。修正:將INCBX改為ADDBX,2。3.RESULT類型匹配:RESULT定義為DB(字節(jié)),統(tǒng)計(jì)的負(fù)數(shù)個數(shù)可能超過255(但本題數(shù)組長度為5,不會溢出),但AL為8位寄存器,此處無本質(zhì)錯誤,可保留。4.LOOP指令的CX使用:LOOP指令自動遞減CX并判斷是否為0,原程序中CX初始化為COUNT(元素個數(shù)),正確。修正后程序:DATASEGMENTARRAYDW-1,3,-5,7,-9COUNTEQU($-ARRAY)/2;元素個數(shù)=5RESULTDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,COUNT;CX=5MOVBX,0MOVAL,0;計(jì)數(shù)器初始化為0LOOP1:MOVAX,ARRAY[BX];取第BX/2個元素(BX=0,2,4,...)TESTAX,8000H;測試最高位(符號位)JZNEXT;符號位為0(非負(fù)),跳過INCAL;負(fù)數(shù)則計(jì)數(shù)器加1NEXT:ADDBX,2;指向下一個字LOOPLOOP1;CX減1,非零則循環(huán)MOVRESULT,AL;保存結(jié)果MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART執(zhí)行流程:初始化DS段寄存器,CX=5(元素個數(shù)),BX=0(指向第一個元素),AL=0(計(jì)數(shù)器)。循環(huán)中依次取ARRAY[0](-1)、ARRAY[2](3)、ARRAY[4](-5)、ARRAY[6](7)、ARRAY[8](-9),通過TESTAX,8000H判斷符號位。若符號位為1(負(fù)數(shù)),AL加1。BX每次加2指向下一個字,CX遞減至0時退出循環(huán),最終RESULT保存負(fù)數(shù)個數(shù)(3)。三、8255A并行接口應(yīng)用設(shè)計(jì)某系統(tǒng)中8255A的端口地址為0C0H(A口)、0C1H(B口)、0C2H(C口)、0C3H(控制口)。要求:A口工作于方式0輸出,B口工作于方式0輸入,C口高4位輸出、低4位輸入?,F(xiàn)需通過A口控制8個LED(LED亮為高電平),B口連接8位開關(guān)(開關(guān)閉合對應(yīng)位為0),當(dāng)開關(guān)S0(B口BIT0)閉合時,LED0(A口BIT0)亮;S1閉合時,LED1亮,以此類推。編寫8255A初始化程序,并設(shè)計(jì)實(shí)現(xiàn)該功能的循環(huán)程序段。分析與解答:1.確定控制字:8255A控制字格式為:D7=1(有效),D6D5=00(A口方式0),D4=0(A口輸出),D3=1(C口高4位輸出),D2=0(B口方式0),D1=1(B口輸入),D0=1(C口低4位輸入)。因此控制字=10001011B=8BH。2.初始化程序:向控制口寫入控制字,設(shè)置各端口工作方式。3.功能實(shí)現(xiàn)邏輯:循環(huán)讀取B口開關(guān)狀態(tài)(開關(guān)閉合對應(yīng)位為0),取反后(使閉合位為1)作為A口輸出值(LED亮需高電平),僅保留BIT0~BIT7對應(yīng)位。匯編程序:MOVDX,0C3H;控制口地址MOVAL,8BH;控制字:A口方式0輸出,B口方式0輸入,C口高4位輸出、低4位輸入OUTDX,AL;初始化8255ALOOP_LED:MOVDX,0C1H;B口地址(輸入)INAL,DX;讀取開關(guān)狀態(tài)(閉合位為0)NOTAL;取反后,閉合位為1(對應(yīng)LED亮)ANDAL,0FFH;確保僅低8位有效(可選)MOVDX,0C0H;A口地址(輸出)OUTDX,AL;輸出到LEDJMPLOOP_LED;循環(huán)檢測四、8253定時器/計(jì)數(shù)器應(yīng)用設(shè)計(jì)某系統(tǒng)中8253的端口地址為200H(計(jì)數(shù)器0)、201H(計(jì)數(shù)器1)、202H(計(jì)數(shù)器2)、203H(控制口)。系統(tǒng)時鐘頻率為2MHz,要求使用計(jì)數(shù)器0工作于方式2(分頻器),輸出頻率為1kHz的連續(xù)方波。計(jì)算計(jì)數(shù)初值,編寫初始化程序,并說明其工作過程。分析與解答:1.計(jì)算計(jì)數(shù)初值:方式2為分頻器,輸出頻率=輸入頻率/計(jì)數(shù)初值(N)。已知輸入時鐘頻率f=2MHz=2×10?Hz,要求輸出f_out=1kHz=103Hz,因此N=f/f_out=2×10?/103=2000。2.控制字設(shè)置:計(jì)數(shù)器0,先讀/寫低字節(jié)后高字節(jié)(RL1RL0=11),方式2(M2M1M0=010),二進(jìn)制計(jì)數(shù)(BCD=0)。控制字=00110100B=34H。3.初始化程序:向控制口寫入控制字,再向計(jì)數(shù)器0寫入低字節(jié)(00H)和高字節(jié)(7DH,因?yàn)?000=07D0H,低字節(jié)為D0H=208,高字節(jié)為07H=7)。注意:2000的十六進(jìn)制為07D0H,因此低字節(jié)是D0H,高字節(jié)是07H。匯編程序:MOVDX,203H;控制口地址MOVAL,34H;控制字:計(jì)數(shù)器0,先低后高,方式2,二進(jìn)制OUTDX,AL;寫入控制字MOVDX,200H;計(jì)數(shù)器0地址MOVAL,0D0H;計(jì)數(shù)初值低字節(jié)(2000=07D0H)OUTDX,AL;寫入低字節(jié)MOVAL,07H;計(jì)數(shù)初值高字節(jié)OUTDX,AL;寫入高字節(jié)工作過程:初始化后,計(jì)數(shù)器0加載初值2000,開始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)到1時,輸出端OUT0變?yōu)榈碗娖?;?jì)數(shù)到0時,OUT0回到高電平,并自動重新加載初值2000,重復(fù)此過程。因此OUT0輸出頻率為1kHz的連續(xù)負(fù)脈沖(寬度為1個時鐘周期),等效于方波(占空比約為1/2000,近似方波)。五、中斷系統(tǒng)編程基礎(chǔ)某8086系統(tǒng)中,中斷類型碼為60H的中斷服務(wù)程序入口地址為1234H:5678H。計(jì)算該中斷向量在中斷向量表中的位置,編寫設(shè)置該中斷向量的程序段,并說明中斷響應(yīng)過程中CPU自動完成的操作。分析與解答:1.中斷向量表位置計(jì)算:中斷向量表中每個中斷類型碼占4字節(jié)(2字節(jié)偏移地址+2字節(jié)段地址),位置=類型碼×4。對于類型碼60H,位置=60H×4=180H。因此,中斷向量表中180H~183H單元存放該中斷的向量:180H=78H(偏移低字節(jié)),181H=56H(偏移高字節(jié)),182H=34H(段地址低字節(jié)),183H=12H(段地址高字節(jié))。2.設(shè)置中斷向量的程序段:需將中斷服務(wù)程序的偏移地址(5678H)和段地址(1234H)寫入中斷向量表的對應(yīng)位置。由于8086系統(tǒng)中,中斷向量表位于00000H~003FFH,可通過MOV指令或串操作寫入。匯編程序:CLI;關(guān)中斷,防止設(shè)置過程中被打斷MOVAX,0;ES指向中斷向量表段(0000H)MOVES,AXMOVBX,60H×4;BX=180H(向量表偏移)MOVAX,5678H;偏移地址MOVES

溫馨提示

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

最新文檔

評論

0/150

提交評論