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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第 3 章 8086CPU 指令系統1. 寫出完成下列要求的變量定義語句:( 1)在變量var1 中保存 6個字變量:4512H, 4512,1, 100/3 , 10H, 65530;( 2)在變量var2 中保存字符串:BYTE , word , WOR;D( 3)在緩沖區buf1 中留出 100個字節的存儲空間;(4)在緩沖區buf2中,保存5個字節的55H,再彳存10個字節的240,并將這一過程重復 7 次;( 5)在變量var3 中保存緩沖區buf1 的長度;( 6)在變量pointer 中保存變量var1 和緩沖區buf1 的偏移地址。解: var1 DW4512H,4512,-1

2、,100/3,10H,65530var2DB BYTE ,word,WORDbuf1DB100 DUP( ?)buf2DB7 DUP( 5 DUP(55H),10 DUP( 240) )var3DBLENGTH buf1pointer DW var1,buf1 (或者 pointer DW OFFSET var1, OFFSET buf1)2. 設變量 var1 的邏輯地址為0100: 0000,畫出下列語句定義的變量的存儲分配圖:var1 DB 12,12, 20/6 , 4 DUP( 0, 55H)var2 DB Assemble var3 DW AB , cd , Evar4 DW va

3、r2var5 DD var2解:0100;0000Hvarl000 BHvar40CH41HO019H0&H3.指令正i吳判斷,對正F4i 03H 00H ,5H COH 力HOOH 55H OOH 55H.確指Q013H4寫出源和目外工且73H65H6DH62H6CH65H42H41H64H63H mHJ操作叁001BH次的尋址方式,OOH0&H OOHCOH 01H對錯1yarS吳指令指出原因(設VAR1, VAR2為字變量,L1為標號):(1)MOV SI, 100(2)MOV BX VAR1SI(3)MOV AX, BX(4)MOV AL, DX(5)MOV BP, A

4、L(6)MOV VAR1, VAR2MOV 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)POP 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:

5、0100, AH(26)SBB VAR卜 5,154解:(1)MOV SI,100正確。源:立即數尋址,目的:寄存器尋址(2)MOV BX,VAR1SI正確。源:寄存器相對尋址,目的:寄存器尋址(3)MOV AX,BX正確。源::寄存器間接尋址,目的:寄存器尋址(4)MOV AL,DX錯誤。寄存器間接尋址時,DX, AX, CX 不能作地址寄存器(5)MOV BP,AL錯誤。操作數類型不一致(6) MOV VAR1,VAR2錯誤。兩存儲單元之間不能用MOV指令傳送數據7 MOV CS,AX錯誤。 CS 不能為目的操作數8 MOV DS,0100H錯誤。目的操作數為段寄存器時,源操作數不能為立即

6、數目的操作數為段寄存器時,源操作數不能為立即數9 MOV BXSI , 1錯誤。指令類型不定。指令類型不定。10MOV AX,V AR1+V AR2錯誤。 MOV 指令中不能完成加法運算11ADD AX,LENGTH V AR1正確。源:立即數尋址。目的:寄存器尋址12OR BL,TYPE V AR2正確。源:立即數尋址。目的:寄存器尋址13SUB DI,78H錯誤。指令類型不定14MOVS V AR1,VAR2正確。目的、源均為隱含尋址。操作數僅指出操作數類型目的、源均為隱含尋址。操作數僅指出操作數類型15PUSH100H錯誤。將常數壓入堆棧,要通過寄存器來實現將常數壓入堆棧,要通過寄存器來

7、實現16POPCS錯誤。目的操作數不能為CS17XCHGAX, ES錯誤。 XCHG 指令的操作數不能是段寄存器18MOVDS, CS錯誤。 MOV 指令不能從段寄存器到段寄存器19JMPL1+5正確。段內直接轉移20DIVAX ,10錯誤。指令格式錯誤。21SHLBL,錯誤。移位指令的移位數為1 或者 CL22MOVAL ,15+23正確。源:立即數尋址,目的:寄存器。編譯時就處理為3823MULCX正確。源:寄存器尋址,目的:寄存器尋址24XCHGCL,SI 正確。源:寄存器間接尋址,目的:寄存器尋址25ADCCS:0100,AH 正 確。源 :寄存器尋址,目的: 直接尋址(數據在代碼段中

8、26SBBVAR1-5,154 正確。源:立即數尋址,目的:直接尋址。4. 說明下列指令對的區別:MOV AX,VAR1與 MOV AX, OFFSET VAR1MOV AX,VAR2與 LEA AX , VAR2MOV AL,LENGTHVAR1 與 MOV AL, SIZE VAR1MOV AL,ES: DICMP AL, SI與 CMPSBSHR AL,與 SAR AL,SHR AL,與 ROR AL,ROL BX,與 RCL BX,解: ( 1 MOVAX ,VAR1把變量 VAR1 對應地址單元中的一個字送入AXMOVAX , OFFSET VAR1 把 VAR1 的有效地址的偏移地

9、址送入AX2) MOVAX , VAR2把變量 VAR2 對應地址單元中的一個字送入AXLEA AX , VAR2 把 VAR2 的有效地址的偏移地址送入AX3) MOV AL , LENGTH V AR1 把變量 VAR1 的長度送入ALMOV AL , SIZE VAR1 把變量 VAR1 的大小送入AL4) MOV AL , ES: DICMP AL , SI把以 ES 為段地址,DI 為偏移地址的一個字節送入AL ,并與以 SI 內容為偏移地址的一個字節作比較,改變標志寄 存器內容。(相當于作ES: (DI)與(DS: (SI)內容比較)對字符串中的一字節比較。尋址方式隱含。源串的地址

10、由CMPSBDS:SI 指定,目的串的地址由ES:DI 指定。 (相當于作DS:(SI)與ES: (DI)內容比較)5) SHR AL , 1AL邏輯右移1 位,最高位移入0, 最低位移入CF。SAR AL , 1AL算術右移1 位,以最高位內容移入,最低位移入CF,其余各位右移一位。6) SHR AL , 1AL 邏輯右移1 位,最高位移入0, 最低位移入CF。ROR AL , 1AL 的各位構成環形移位,右移一位,最低位內容同時移入到CF 和最高位。7) ROL BX , 1BX 各位構成環形移位,左移一位,最高位內容同時移入到CF 和最低位。RCL BX , 1BX 和 CF 構成環形移

11、位,左移一位,CF 內容移入到最低位,最高位移入CF。5. 寫出下列轉移指令的尋址方式(設L1為標號,VAR1為字型變量,DVAR1為雙字型變量):1)JMPL1(2)3)JNZL1(4)5)JG L1(6)7)JMPFAR PTR L1(8)解: ( 1 ) JMP L1 段內直接尋址( 3) JNZ L1 段內直接尋址( 5) JG L1 段內直接尋址JMP NEAR L1JMP BXJMP VAR1SIJMP DVAR1( 2) JMP NEAR PTR L1 段內直接尋址( 4) JMP BX 段內間接尋址( 6) JMP VAR1SI 段內間接尋址6. 設(DS =2000H, (B

12、X) =0100H, (SI) = 0002H, (20100) =3412H, (20102) =7856H,(21200) = 4C2AH (21202) = 65B7H,求下列指令執行后 AX寄存器的內容:(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 AX,1100BXSI解: ( 1 ) 1200H( 2)0100H( 3) 4C2AH ( 4) 3412H( 5) 4C2AH( 6) 7856H ( 7) 65B7

13、H7.執行下列指令后,DX寄存器中的內容是多少?TABLE DW 25, 36,1,16, 10000, 13PYL DW 7MOV BX, OFFSET TABLEADD BX, PYLMOV DX, BX解: DX = 10FFH8. 如果堆棧的起始地址為由-16 (FFF0H)的高8位和10000 (2710H)的低8位構成2200: 0000,棧底為 0100H, (SR) = 00A8H,求1 )棧頂地址;2 2) SS的內容;(3)再存入數據 5678H, 3AF2H后,SP的內容。解:棧頂地址00A8H , SS = 2200H, 再存入 2 個字后,SP = 00A4H9 .設

14、已用偽指令 EQU1義了 4個標識符:N1 EQU 2100N2 EQU 10N3 EQU 20000N4 EQU 250001)ADD AL,N1 N2;( 2)MOV AX,N3 N4;3)SUB BX,N4 N3;( 4)SUB AH,N4 N3 N1;5)ADD AL,N2;( 6)MOV AH,N2*N21 )錯誤。N1-N2=2090>255( 2)正確卜列指令是否正確?并說明原因。3)正確4)錯誤。N4-N3-N1=2900>2555)正確6)正確10 . 按下列要求寫出指令:(1)將AX寄存器的低4位清零,其余位不變;(2)將BX寄存器的低4位置1,其余位不變;(

15、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 , 0FFF0H( 2) OR BX, 000FH( 3) XOR AL , 0F0H4)

16、TESTBX, 06H( 5)MOVAX ,BXJZZEROANDAX ,06HMOVAL , 00HXORAX ,06HJMPOVERJZOVERZERO:OVER :MOVAL , 0FFHOVER :MOVAL ,0FFH( 6) AND AL , 5FH或者:CMPAL, 61HJL OVER (無需變換或不是字母)CMPAL, 7AHJG OVER (不是字母)AND AL , 5FH 或 SUB AL , 20HOVER :7) OR AL , 20H或者:CMPAL, 41HJL OVER (不是字母)CMPAL, 5AHJG OVER (無需變換或不是字母)OR AL , 20

17、H 或 ADD AL , 20HOVER :( 8) XOR AX , 0FFFFH 或者NOT AX( 9) XOR DX, 007FH( 10) XCHG CH, CL11. 寫出完成下述功能的程序段:( 1)傳送40H 到 AL 寄存器;( 2)將AL 的內容乘以2;(3)傳送16H到AH寄存器;( 4) AL的內容加上AH的內容。計算最后結果(AL) =?解: ( 1 ) MOV AL,40H( 5) SHL AL,1( 6) MOV AH,16H( 7) ADD AL , AHAL=96H12. 寫出完成下述功能的程序段:(1)從緩沖區BUF的0004偏移地址處傳送一個字到 AX寄存

18、器;(2)將AX寄存器的內容右移 2位;(3)將AX內容與BUF的0006偏移地址處的一個字相乘;(4)相乘結果存入 BUF的0020H偏移地址處(低位在前)。解: ( 1) LEA SI, BUFMOVAX, SI+4(2) SHRAX,1SHRAX,1(3) MULWORD PTR 6SI(4) MOV20HSI,AXMOV22HSI,DX13.設(BX> = 11001011B,變量VAR的內容為00110010B,求下列指令單獨執行后 BX的內 容:(1)XOR BX, VAR;(2)AND BX, VAR;(3)OR BX, VAR;(4)XOR BX, 11110000B;(

19、5)AND BX, 00001111B;(6)TEST BX, 1解: ( 1 ) 00F9H2) 0002H3) 00FBH4) 003BH5) 000BH6) 00CBH14.(DX) = 10111011B,(CD =3, (CF)1 ,求下列指令單獨執行后求下列指令單獨執行后DX的內容:解:1)4)7)SHR DX,SHL DX,SAL DH,1;1;1;2)5)8)SAR DX, CL;ROR DX, CL;RCL DX, CL;DX= 0000 0000 1011 1011BCF=13)6)9)CL=3SHL DX,ROL DL,RCR DL,CL;CL;1 ) SHR DX, 1

20、DX 邏輯右移10000 0000 0101 1101B =005DH2) SAR DX, CLDX 算術右移30000 0000 0001 0111B0017H3) SHL DX, CLDX 邏輯左移30000 0101 1101 1000B05D8H4) SHL DX, 1DX 邏輯左移10000 0001 0111 0110B0176H5) ROR DX, CLDX 循環右移30110 0000 0001 0111B6017H6) ROL DL , CLDL 循環左移30000 0000 1101 1101B00DDH7) SAL DH , 1DH 算術左移10000 0000 1011

21、 1011B = 00BBH8) RCL DX, CLDX 帶進位循環左移30000 0101 1101 1100B = 05DCH9) RCRDL, 1 DL 帶進位循環右移10000 0000 1101 1101B00DDH15. 選擇題(各小題只有一個正確答案)( 1)執行下列三條指令后:MOV SP, 1000HPUSH AXCALL BXa.(SP)= 1000H;b.(SP)= 0FFEHc.(SP)= 1004H;d.(SP)= 0FFCH(2)要檢查寄存器 AL中的內容是否與 AH相同,應使用的指令為:a. AND AL, AHb. OR AL, AHc. XOR AL, AH

22、 d. SBB AL, AH(3)指令JMP NEAR PTR L1與CALL L1 ( L1為標號)的區別在于:a. 尋址方式不同;b. 是否保存IP 內容;c. 目地址不同;d. 對標志位影響不同。SP=0FFCH解: ( 1) D PUSHU AX 則 AX 入棧,SP=0FFEH; CALL BX 則 IP 入棧, 2) C 異或,若相同,則 AL=0 , ZF = 1。 3) 3) B16.寄存器DX AX組成32位數,DX為高位,編寫程序段實現:(1) DX AX右移3位,并將移出的低 3位保存在CL中;(2) DX AX左移3位,并將移出的高 3位保存在CL中;解: ( 1 )移

23、出3 位應該按時序移入CL 中。XOR CL,CLMOV BL,3L1:SHR DX, 1RCR AX , 1RCL CL , 1DEC BLJNZ L1( 2)移出3 位應該按時序移入CL 中。XOR CL,CLMOV BL,3L1:SHL AX , 1RCR DX, 1RCR CL , 1DEC BLJNZ L117 .編寫程序段實現將 BL中的每一位重復 4次,成32位的雙字DX: AX,例如當BL= 01011101B 時,則得到的(DX) = 0F0FH , (AX) = 0FF0FH。解:算術右移時,移入的值就是最高位本身,這樣可以使位內容重復,利用這一點可以實現題目的要求。XOR

24、DX,DXXORAX,AXMOVCX,4L1: SHRBL,1RCRAX,1SARAX,1SARAX,1SARAX,1LOOPL1MOVCX,4L2: SHRBL,1RCRDX,1SARDX,1SARDX,1SARDX,1LOOPL218 .字變量VAR1中保存有小于38250的16位無符號數,編寫程序段實現VAR1 +150,并進行四舍五入操作,將商保存在字節變量VAR2 中。解:根據題意,38250+ 150 = 255,因此商不會超過 255,可以用一個字節表示。a+ b的四舍五入操作可以通過判斷除后余數實現:余數大于等于除數的一半, 則商加1;否則不用加1。但這種方法用匯編語言編程實現

25、時比較復雜,這里介紹另外一種方法:設一 b的四舍五入后的結果為 c,用表示取整數操作,則c a 0.5b這種方法是在除法操作之前,在被除數上加上除數的一半,這樣除法操作后得到的值就是考慮了四舍五入的商。VAR1 DW 12345VAR2 DB ?DATAA DB 150MOV AX,V AR1XOR BX,BXMOV BL,DATAASHR BX,1ADD AX,BXDIV DATAAMOV VAR2,AL19.有一組無符號的16位數據保存在 BUFFER中,前兩個字節存放數據的個數,編程實現按下式進行濾波處理:1y的 3 x(k) x(k 1)鄧 2) k 2y(k) x(k)k 2解:濾波

26、結果保存在 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,0L1:MOV BX,3ADD AX,SIADC DX,0PUSH DXPUSH AXDIV BXMOV DI,AXPOP AXPOP DXSUB AX, SI-4SUBB DX,0ADD DI,2ADD SI,2LOOP L120 . 在由字符串構成的緩沖區BUFFER 中,前 2 個字節存放字符個數,后續每個字節存放一個字符的ASCII 碼。編寫程序實現將字符串2004替

溫馨提示

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

評論

0/150

提交評論