微機原理與接口技術(shù)習題答案_第1頁
微機原理與接口技術(shù)習題答案_第2頁
微機原理與接口技術(shù)習題答案_第3頁
微機原理與接口技術(shù)習題答案_第4頁
微機原理與接口技術(shù)習題答案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上第3章 8086CPU指令系統(tǒng)1. 寫出完成下列要求的變量定義語句:(1)在變量var1中保存6個字變量:4512H,4512,1,100/3,10H,65530;(2)在變量var2中保存字符串:BYTE, word, WORD;(3)在緩沖區(qū)buf1中留出100個字節(jié)的存儲空間; (4)在緩沖區(qū)buf2中,保存5個字節(jié)的55H,再保存10個字節(jié)的240,并將這一過程重復7次;(5)在變量var3中保存緩沖區(qū)buf1的長度;(6)在變量pointer中保存變量var1和緩沖區(qū)buf1的偏移地址。解:var1DW4512H,4512,-1,100/3,10H,6553

2、0var2DBBYTE,word,WORDbuf1DB100 DUP(?)buf2DB7 DUP(5 DUP(55H),10 DUP(240)var3DBLENGTH buf1pointerDW var1,buf1 (或者pointerDW OFFSET var1,OFFSET buf1)2. 設(shè)變量var1的邏輯地址為0100:0000,畫出下列語句定義的變量的存儲分配圖: var1 DB 12,12,20/6,4 DUP(0,55H) var2 DB Assemble var3 DW AB, cd, E var4 DW var2 var5 DD var2解:3. 指令正誤判斷,對正確指令寫

3、出源和目的操作數(shù)的尋址方式,對錯誤指令指出原因(設(shè)VAR1, VAR2為字變量, L1為標號): (1)MOV SI,100(2)MOV BX,VAR1SI (3)MOV AX, BX(4)MOV AL, DX (5)MOV BP, AL(6)MOV VAR1, VAR2 (7)MOV CS, AX(8)MOV DS, 0100H (9)MOV BXSI, 1(10)MOV AX, VAR1+VAR2 (11)ADD AX, LENGTH VAR1(12)OR BL, TYPE VAR2 (13)SUB DI, 78H(14)MOVS VAR1, VAR2 (15)PUSH 100H(16)P

4、OP CS (17)XCHG AX, ES(18)MOV DS, CS (19)JMP L1+5(20)DIV AX, 10 (21)SHL BL, 2(22)MOV AL, 15+23 (23)MUL CX(24)XCHG CL, SI (25)ADC CS:0100, AH(26)SBB VAR15,154解:(1)MOV SI,100正確。源:立即數(shù)尋址, 目的:寄存器尋址(2)MOV BX,VAR1SI 正確。源:寄存器相對尋址, 目的:寄存器尋址(3)MOV AX,BX正確。源:寄存器間接尋址,目的:寄存器尋址(4)MOV AL,DX錯誤。寄存器間接尋址時,DX, AX, CX不能作

5、地址寄存器(5)MOV BP,AL錯誤。操作數(shù)類型不一致(6)MOV VAR1,VAR2錯誤。兩存儲單元之間不能用MOV指令傳送數(shù)據(jù)(7)MOV CS,AX錯誤。CS不能為目的操作數(shù)(8)MOV DS,0100H錯誤。目的操作數(shù)為段寄存器時,源操作數(shù)不能為立即數(shù)(9)MOV BXSI,1錯誤。指令類型不定。(10)MOV AX,VAR1+VAR2 錯誤。MOV指令中不能完成加法運算(11)ADD AX,LENGTH VAR1 正確。源:立即數(shù)尋址。目的:寄存器尋址(12)OR BL,TYPE VAR2正確。源:立即數(shù)尋址。目的:寄存器尋址(13)SUB DI,78H錯誤。指令類型不定(14)M

6、OVS VAR1,VAR2正確。目的、源均為隱含尋址。操作數(shù)僅指出操作數(shù)類型(15)PUSH 100H錯誤。將常數(shù)壓入堆棧,要通過寄存器來實現(xiàn)(16)POPCS錯誤。目的操作數(shù)不能為CS(17)XCHGAX,ES錯誤。XCHG指令的操作數(shù)不能是段寄存器(18)MOVDS,CS錯誤。MOV指令不能從段寄存器到段寄存器(19)JMP L1+5正確。段內(nèi)直接轉(zhuǎn)移(20)DIVAX,10錯誤。指令格式錯誤。(21)SHLBL,2錯誤。移位指令的移位數(shù)為1或者CL(22)MOVAL,15+23正確。源:立即數(shù)尋址,目的:寄存器。編譯時就處理為38(23)MULCX正確。源:寄存器尋址,目的:寄存器尋址(

7、24)XCHGCL,SI 正確。源:寄存器間接尋址,目的:寄存器尋址(25)ADC CS:0100,AH 正確。源:寄存器尋址,目的: 直接尋址(數(shù)據(jù)在代碼段中)(26)SBBVAR1-5,154正確。源:立即數(shù)尋址,目的:直接尋址。4. 說明下列指令對的區(qū)別:(1) MOV AX,VAR1 與 MOV AX,OFFSET VAR1(2) MOV AX,VAR2 與 LEA AX,VAR2(3) MOV AL,LENGTH VAR1 與 MOV AL,SIZE VAR1(4) MOV AL,ES: DI CMP AL, SI 與 CMPSB(5) SHR AL,1 與 SAR AL,1(6)

8、SHR AL,1 與 ROR AL,1(7) ROL BX,1 與 RCL BX,1解:(1)MOV AX,VAR1 把變量VAR1對應地址單元中的一個字送入AX MOV AX,OFFSET VAR1 把VAR1的有效地址的偏移地址送入AX(2)MOV AX,VAR2 把變量VAR2對應地址單元中的一個字送入AX LEA AX,VAR2 把VAR2的有效地址的偏移地址送入AX(3)MOV AL,LENGTH VAR1 把變量VAR1的長度送入ALMOV AL,SIZE VAR1 把變量VAR1的大小送入AL(4)MOV AL,ES:DI CMP AL,SI 把以ES為段地址,DI為偏移地址的一

9、個字節(jié)送入AL,并與以SI內(nèi)容為偏移地址的一個字節(jié)作比較,改變標志寄存器內(nèi)容。(相當于作ES:(DI)與(DS: (SI)內(nèi)容比較) CMPSB對字符串中的一字節(jié)比較。尋址方式隱含。源串的地址由DS:SI指定,目的串的地址由ES:DI指定。(相當于作DS: (SI)與ES:(DI)內(nèi)容比較)(5)SHR AL,1AL邏輯右移1位,最高位移入0, 最低位移入CF。 SAR AL,1 AL算術(shù)右移1位,以最高位內(nèi)容移入,最低位移入CF, 其余各位右移一位。(6)SHR AL,1 AL邏輯右移1位,最高位移入0, 最低位移入CF。 ROR AL,1AL的各位構(gòu)成環(huán)形移位,右移一位,最低位內(nèi)容同時移入

10、到CF和最高位。(7)ROL BX,1 BX各位構(gòu)成環(huán)形移位,左移一位,最高位內(nèi)容同時移入到CF和最低位。RCL BX,1 BX和CF構(gòu)成環(huán)形移位,左移一位,CF內(nèi)容移入到最低位,最 高位移入CF。5. 寫出下列轉(zhuǎn)移指令的尋址方式(設(shè)L1為標號,VAR1為字型變量,DVAR1為雙字型變量): (1)JMP L1(2)JMP NEAR L1 (3)JNZ L1(4)JMP BX (5)JG L1(6)JMP VAR1SI (7)JMP FAR PTR L1 (8)JMP DVAR1解:(1)JMPL1 段內(nèi)直接尋址 (2)JMP NEAR PTR L1 段內(nèi)直接尋址(3)JNZ L1 段內(nèi)直接尋

11、址 (4)JMP BX段內(nèi)間接尋址(5)JGL1 段內(nèi)直接尋址 (6)JMP VAR1SI段內(nèi)間接尋址(7)JMPFARPTR L1 段間直接尋址 (8)JMPDVAR1 段間間接尋址6. 設(shè)(DS)2000H,(BX)0100H,(SI)0002H,(20100)3412H,(20102)7856H,(21200)4C2AH,(21202)65B7H,求下列指令執(zhí)行后AX寄存器的內(nèi)容: (1)MOV AX,1200H; (2)MOV AX,BX; (3)MOV AX, 1200H; (4)MOV AX, BX; (5)MOV AX,1100BX;(6)MOV AX, BXSI; (7)MOV

12、 AX,1100BXSI解:(1)1200H (2) 0100H (3)4C2AH (4)3412H (5)4C2AH (6)7856H (7)65B7H7. 執(zhí)行下列指令后,DX寄存器中的內(nèi)容是多少?TABLEDW 25,36,1,16,10000,13PYLDW 7MOV BX,OFFSET TABLEADD BX,PYLMOV DX,BX解:DX = 10FFH 由-16(FFF0H)的高8位和10000(2710H)的低8位構(gòu)成8. 如果堆棧的起始地址為2200:0000,棧底為0100H,(SP)00A8H,求(1)棧頂?shù)刂?;?)SS的內(nèi)容;(3)再存入數(shù)據(jù)5678H,3AF2H后

13、,SP的內(nèi)容。解:棧頂?shù)刂?00A8H, SS = 2200H, 再存入2個字后,SP = 00A4H9. 設(shè)已用偽指令EQU定義了4個標識符:N1 EQU 2100N2 EQU 10N3 EQU 20000N4 EQU 25000下列指令是否正確?并說明原因。(1)ADD AL,N1N2;(2)MOV AX,N3N4;(3)SUB BX,N4N3;(4)SUB AH,N4N3N1;(5)ADD AL,N2;(6)MOV AH,N2*N2解:(1)錯誤。N1-N2=2090>255 (2)正確 (3)正確(4)錯誤。N4-N3-N1=2900>255 (5)正確 (6)正確10.

14、按下列要求寫出指令:(1)將AX寄存器的低4位清零,其余位不變;(2)將BX寄存器的低4位置1,其余位不變;(3)將AL寄存器的低4位保持不變,高4位取反;(4)測試BX中的位1和位2,當這兩位同時為0時將AL置0FFH,否則AL清零;(5)測試BX中的位1和位2,當這兩位有一位為0時將AL置0FFH,否則AL清零;(6)將AL中保存的字母ASCII碼變換成相應的大寫字母的ASCII碼;(7)將AL中保存的字母ASCII碼變換成相應的小寫字母的ASCII碼;(8)將AX中的各位取反;(9)將DX中的低7位取反,高9位不變;(10)將CX中的低8位與高8位互換。解:(1)AND AX,0FFF0

15、H (2)OR BX,000FH (3)XOR AL,0F0H(4) TESTBX,06H (5)MOVAX,BX JZ ZERO ANDAX,06H MOVAL,00H XOR AX,06H JMP OVER JZ OVERZERO:MOVAL,0FFH MOVAL,0FFH OVER: OVER: (6)AND AL,5FH或者:CMPAL,61H JLOVER (無需變換或不是字母)CMPAL,7AHJGOVER (不是字母)AND AL,5FH 或 SUB AL,20HOVER: (7)OR AL,20H 或者:CMPAL,41H JLOVER (不是字母)CMPAL,5AHJGOVE

16、R (無需變換或不是字母)ORAL,20H 或 ADD AL,20HOVER:(8)XOR AX,0FFFFH或者NOTAX(9)XOR DX,007FH (10)XCHGCH,CL11. 寫出完成下述功能的程序段:(1)傳送40H到AL寄存器;(2)將AL的內(nèi)容乘以2;(3)傳送16H到AH寄存器;(4)AL的內(nèi)容加上AH的內(nèi)容。計算最后結(jié)果(AL)?解:(1)MOV AL,40H (2)SHL AL,1 (3)MOV AH,16H (4)ADD AL,AH AL=96H12. 寫出完成下述功能的程序段:(1)從緩沖區(qū)BUF的0004偏移地址處傳送一個字到AX寄存器;(2)將AX寄存器的內(nèi)容

17、右移2位;(3)將AX內(nèi)容與BUF的0006偏移地址處的一個字相乘;(4)相乘結(jié)果存入BUF的0020H偏移地址處(低位在前)。解: (1)LEA SI, BUFMOVAX, SI+4 (2)SHRAX,1SHRAX,1(3)MULWORD PTR 6SI(4)MOV20HSI,AXMOV22HSI,DX13. 設(shè)(BX)B,變量VAR的內(nèi)容為B,求下列指令單獨執(zhí)行后BX的內(nèi)容:(1)XOR BX,VAR;(2)AND BX,VAR;(3)OR BX,VAR;(4)XOR BX,B;(5)AND BX,B;(6)TEST BX,1解:(1)00F9H (2)0002H(3)00FBH(4)00

18、3BH(5)000BH(6)00CBH14. 設(shè)(DX)B,(CL)3,(CF)1,求下列指令單獨執(zhí)行后DX的內(nèi)容:(1)SHR DX,1;(2)SAR DX,CL;(3)SHL DX,CL;(4)SHL DX,1;(5)ROR DX,CL;(6)ROL DL,CL;(7)SAL DH,1;(8)RCL DX,CL;(9)RCR DL,1解:DX= 0000 0000 1011 1011B CF=1 CL=3(1)SHR DX,1DX邏輯右移10000 0000 0101 1101B=005DH(2)SARDX,CLDX算術(shù)右移30000 0000 0001 0111B=0017H(3)SHL

19、DX,CLDX邏輯左移30000 0101 1101 1000B=05D8H(4)SHLDX,1DX邏輯左移10000 0001 0111 0110B=0176H(5)RORDX,CLDX循環(huán)右移30110 0000 0001 0111B=6017H(6)ROLDL,CLDL循環(huán)左移30000 0000 1101 1101B=00DDH(7)SALDH,1DH算術(shù)左移10000 0000 1011 1011B=00BBH(8)RCLDX,CLDX帶進位循環(huán)左移30000 0101 1101 1100B=05DCH(9)RCRDL,1DL帶進位循環(huán)右移10000 0000 1101 1101B=

20、00DDH15. 選擇題(各小題只有一個正確答案)(1)執(zhí)行下列三條指令后:MOV SP,1000HPUSH AXCALL BXa. (SP)1000H;b. (SP)0FFEH;c. (SP)1004H;d. (SP)0FFCH;(2)要檢查寄存器AL中的內(nèi)容是否與AH相同,應使用的指令為:a. AND AL, AHb. OR AL, AHc. XOR AL, AH d. SBB AL, AH(3)指令JMP NEAR PTR L1與CALL L1(L1為標號)的區(qū)別在于:a. 尋址方式不同; b. 是否保存IP的內(nèi)容;c. 目的地址不同;d. 對標志位的影響不同。解:(1)DPUSHU A

21、X則AX入棧,SP=0FFEH;CALL BX則IP入棧,SP=0FFCH(2)C異或,若相同,則AL=0,ZF1。(3)B16. 寄存器DX:AX組成32位數(shù),DX為高位,編寫程序段實現(xiàn):(1)DX:AX右移3位,并將移出的低3位保存在CL中;(2)DX:AX左移3位,并將移出的高3位保存在CL中;解:(1)移出的3位應該按時序移入CL中。 XOR CL,CL MOV BL,3L1: SHRDX,1RCRAX,1RCL CL,1DEC BLJNZ L1(2)移出的3位應該按時序移入CL中。 XOR CL,CL MOV BL,3L1: SHLAX,1RCRDX,1RCR CL,1DEC BLJ

22、NZ L117. 編寫程序段實現(xiàn)將BL中的每一位重復4次,構(gòu)成32位的雙字DX:AX,例如當BLB時,則得到的(DX)0F0FH,(AX)0FF0FH。解:算術(shù)右移時,移入的值就是最高位本身,這樣可以使位內(nèi)容重復,利用這一點可以實現(xiàn)題目的要求。XORDX,DXXORAX,AXMOVCX,4L1:SHRBL,1 RCRAX,1SARAX,1SARAX,1SARAX,1LOOPL1MOVCX,4L2: SHRBL,1RCRDX,1 SARDX,1 SARDX,1 SARDX,1LOOPL218. 字變量VAR1中保存有小于38250的16位無符號數(shù),編寫程序段實現(xiàn)VAR1÷150,并進行

23、四舍五入操作,將商保存在字節(jié)變量VAR2中。解:根據(jù)題意,38250÷150255,因此商不會超過255,可以用一個字節(jié)表示。a÷b的四舍五入操作可以通過判斷除后余數(shù)實現(xiàn):余數(shù)大于等于除數(shù)的一半,則商加1;否則不用加1。但這種方法用匯編語言編程實現(xiàn)時比較復雜,這里介紹另外一種方法:設(shè)a÷b的四舍五入后的結(jié)果為c,用表示取整數(shù)操作,則這種方法是在除法操作之前,在被除數(shù)上加上除數(shù)的一半,這樣除法操作后得到的值就是考慮了四舍五入的商。 VAR1DW 12345VAR2DB ?DATAADB 150MOV AX,VAR1XOR BX,BXMOV BL,DATAASHR B

24、X,1ADD AX,BXDIV DATAAMOV VAR2,AL19. 有一組無符號的16位數(shù)據(jù)保存在BUFFER中,前兩個字節(jié)存放數(shù)據(jù)的個數(shù),編程實現(xiàn)按下式進行濾波處理:解:濾波結(jié)果保存在FILT中。BUFFER DW 0CHDW 33H, 18H, 1BH, 06H, 33H, 08HDW 3H, 6H, 0FH, 51H, 05H, 0CHFILT DW 100H DUP(?)LEA SI,BUFFERLEA DI,FILTMOV CX,SIMOV DI,CXADD SI,2ADD DI,2XOR DX,DXMOV AX,SIMOV DI,AXMOV BX,2SIMOV 2DI,BXADD SI,4ADD DI,4DEC CXDEC CXADD AX,BXADC DX,0MOV BX,3L1:ADD AX,SIADC DX,0PUSH DXPUSH AXDIV BXMOV DI,AXPOP AXPOP DXSUB AX, SI-4SUBB DX,0ADD DI,2ADD SI,2LOOP L120. 在由字符串構(gòu)成的緩沖區(qū)BUFFER中,前2個字節(jié)存放字符個數(shù),后續(xù)每個字節(jié)存放一個字符的ASCII碼。編寫程序?qū)崿F(xiàn)將字符串2004替換成2006。解:在數(shù)據(jù)段中定義:BUFFER DW 7

溫馨提示

  • 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

提交評論