《微機原理第3章習題.ppt》由會員分享,可在線閱讀,更多相關(guān)《微機原理第3章習題.ppt(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第三章 習題,31什么叫尋址方式?8086/8088CPU共有哪幾種尋址方式?(略) 32設(shè)(DS)=6000H,(ES)=2000H,(SS)=1500H,(SI)=00A0H,(BX)=0800H,(BP)=1200H,數(shù)據(jù)變量VAR為0050H。 請分別指出下列各條指令源操作數(shù)的尋址方式?它的物理地址是多少? (1)MOV AX,BX (2)MOV DL,80H (3)MOV AX,VAR (4)MOV AX,VARBXSI (5)MOV AL,B (6)MOV DI,ES:BX (7)MOV DX,BP (8)MOV BX,20HBX,解: (1)寄存器尋址 無物理地址 (2)立即尋址
2、 無物理地址 (3)立即尋址 無物理地址 (4)基址變址相對尋址 PA=(DS)10HVAR(BX)(SI)608F0H (5)立即尋址 無物理地址 (6)寄存器間接尋址 PA=(ES) 10H(BX)20800H (7)寄存器間接尋址 PA=(SS) 10H(BP)16200H (8)寄存器相對尋址 PA=(DS) 10H(BX)20H60820H,33假設(shè)(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H, 位移量DATA=40H (217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H, 試確定下列轉(zhuǎn)移指令的轉(zhuǎn)移地址。
3、(1)JMP 2300H (2)JMP WORD PTRBX (3)JMP DWORD PTRBX+DATA,解: (1)JMP 2300H 段內(nèi)直接轉(zhuǎn)移 PA(CS)10H(IP)+2300H05500H (2)JMP WORD PTRBX 段內(nèi)間接轉(zhuǎn)移 PA(CS)10HBX =0200H+(217A0H) =04300H (3)JMP DWORD PTRBX+DATA 段間間接轉(zhuǎn)移 PABX+DATA=(217E2H) 10H(217E0H) =90000H+0400H=90400H,34試說明指令MOV BX,5BX與指令LEA BX,5BX的區(qū)別。 答: MOV BX,5BX是數(shù)據(jù)傳
4、送類指令,表示將數(shù)據(jù)段中以(BX+5)為偏移地址的16位數(shù)據(jù)送寄存器BX中。 LEA BX,5BX是取偏移地址指令,結(jié)果為 (BX)=(BX)+5,即操作數(shù)的偏移地址為(BX)+5 35設(shè)堆棧指針SP的初值為2300H,(AX)=50ABH,(BX)=1234H。執(zhí)行指令PUSH AX后,(SP)=?,再執(zhí)行指令PUSH BX及POP AX之后,(SP)=?(AX)=?(BX)=? 解:執(zhí)行指令PUSH AX后,(SP)=22FEH 執(zhí)行指令PUSH BX及POP AX之后, (SP)=22FEH,(AX)=(BX)=1234H,36指出下列指令的錯誤。 (1)MOV AH,CX 類型不匹配或
5、兩操作數(shù)字長不相等 (2)MOV 33H,AL 立即數(shù)不能做目的操作數(shù) (3)MOV AX,SIDI 兩變址寄存器不能同時使用 (4)MOV BX,SI 兩操作數(shù)不能同時為存儲器操作數(shù) (5)ADD BYTE PTRBP,256 兩操作數(shù)類型不匹配,(6)MOV DATASI,ES:AX 源操作數(shù)形式錯,寄存器操作數(shù)不加段重設(shè)符 (7)JMP BYTE PTRBX 轉(zhuǎn)移地址的字長至少應(yīng)是16位 (8)OUT 230H,AX 對I/O指令,端口地址超過8位,必須采用間接尋址 (9)MOV DS,BP 正確 (10)MUL 39H MUL指令中操作數(shù)不能為立即數(shù),37已知(AL)=7BH,(BL)
6、=38H,試問執(zhí)行指令A(yù)DD AL,BL后,AF、CF、OF、PF、SF和ZF的值各為多少? 解: (AL)=B3H AF=1,CF=0,OF=1, PF=0,SF=1,ZF=0 38試比較無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用指令和中斷指令有什么異同?(略),39試判斷下列程序執(zhí)行后,BX中的內(nèi)容。 MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 解:該程序是首先將BX內(nèi)容不帶進位循環(huán)左移1位,再循環(huán) 右移3位,即相當于將BX內(nèi)容不帶進位循環(huán)右移2位, 所以結(jié)果為(BX)=C02DH,310按下列要求寫出相應(yīng)的指令或程序段 (1)寫出兩條使AX內(nèi)容為0的指令; M
7、OV AX,0 XOR AX,AX AND AX,0 SUB AX,AX (2)使BL寄存器中的高4位和低4位互換; MOV CL,4 ROL BL,CL 或 ROR BL,CL (3)屏蔽CX寄存器的b11、b7和b3位; AND CX,0F777H (4)測試DX中的b0和b8位是否為1。 TEST DX,0101H,311分別指出以下兩個程序段的功能。,(1)MOV CX,10 LEA SI,F(xiàn)IRST LEA DI,SECOND STD REP MOVSB 將數(shù)據(jù)段中FIRST為最高地址的10個字節(jié)數(shù)據(jù)按減地址方向傳送到附加段SECOND為最高地址的向前10個單元中。,(2)CLD L
8、EA DI,1200H MOV CX,0F00H XOR AX,AX REP STOSW 將附加段中偏移地址為1200H單元開始的0F00H個字單元清零。,312執(zhí)行以下兩條指令后,標志寄存器FLAGS的六個狀態(tài)位各為什么狀態(tài)? MOV AX,84A0H ADD AX,9460H 解:(AX)=1900H 在兩個16位數(shù)進行加法運算時,對CF、ZF、SF、OF會產(chǎn)生影響,但對PF和AF標志位,只有其低8位運算影響它們的狀態(tài)。 AF=0,PF=1,CF=1, ZF=0,SF=0,OF=1,313將+46和-38分別乘以2,可應(yīng)用什么指令來完成?如果除以2呢? 解: 將+46和-38分別乘以2,可
9、分別用邏輯左移指令SHL和算術(shù)左移指令SAL完成。SHL針對無符號數(shù),SAL針對有符號數(shù),也可用MUL(無符號數(shù))和IMUL(有符號數(shù)) 除以2,用SHR或DIV實現(xiàn)46/2,用SAR或IDIV實現(xiàn)38/2。,314已知AX=8060H,DX=03F8H,端口PORT1的地址是48H,內(nèi)容為40H;PORT2的地址是84H,內(nèi)容為85H。請指出下列指令執(zhí)行后的結(jié)果。 (1)OUT DX,AL 將60H輸出到地址為03F8H的端口中 (2)IN AL,PORT1 從PORT1讀入一字節(jié)數(shù)據(jù),則(AL)40H (3)OUT DX,AX 將AX8060H從地址為03F8H的端口輸出 (4)IN AX
10、,48H 由48H端口讀入16位的數(shù)據(jù) (5)OUT PORT2,AX 將8060H從地址為84H的端口輸出,315試編寫程序,統(tǒng)計BUFFER為起始地址的連續(xù)200個單元中0的個數(shù)。 解: LEA SI,BUFFER MOV CX,200 XOR BX,BX AGAIN:MOV AL,SI CMP AL,0 JNE GOON INC BX GOON: INC SI LOOP AGAIN HLT,316寫出完成下述功能的程序段。 (1)從地址DS:0012H中傳送一個數(shù)據(jù)56H到AL寄存器。 MOV DS:BYTE PTR0012H,56H MOV AL,0012H (2)將AL中的內(nèi)容左移兩
11、位。 MOV CL,2 SHL AL,CL (3)AL的內(nèi)容與字節(jié)單元DS:0013H中的內(nèi)容相乘。 MUL DS:BYTE PTR0013H (4)乘積存入字單元DS:0014H中。 MOV DS:0014H,AX,317若(AL)=96H,(BL)=12H,在分別執(zhí)行指令MUL和IMUL后,其結(jié)果是多少?OF=?CF=? 解: 執(zhí)行MUL BL后 (AX)0A8CH,CFOF1 執(zhí)行IMUL BL后 (AX)F88CH,CFOF1,補充作業(yè),1. 系統(tǒng)有一個堆棧段區(qū),其地址為1250H:0000H1250H:0100H, (SP)=0052H,則計算以下數(shù)值 (1)棧頂物理地址 (2)棧底
12、物理地址 (3)堆棧段寄存器SS中的段地址 (4)若把數(shù)據(jù)3456H存入,此時SP的值,解: (1)棧頂?shù)刂罚哼壿嫷刂窞?250H:0052H 物理地址為1250H16+0052H=12552H (2)棧底地址:邏輯地址為1250H:0100H 物理地址為1250H16+0100H=12600H (3)段寄存器:(SS)=1250H (4)若把數(shù)據(jù)3456H存入, 此時(SP)=0050H,2. 已知(DS)=3000H, (BX)=1000H, (DI)=0020H,MASK=0300H,內(nèi)存分配如圖所示。連續(xù)執(zhí)行下列指令后,DS,SI,DI,AX的內(nèi)容是什么?標志位狀態(tài)如何? LEA SI
13、,MASKBX+DI MOV AX,SI LDS DI,BX+SI SUB AX,76EBH,解:(1)LEA SI,MASKBX+DI,這條指令傳送的是源操作數(shù)的有效地址而不是內(nèi)容, (SI)=MASK+(BX)+(DI) =0300H+1000H+0020H=1320H (2)MOV AX,SI,這條指令傳送的是源操作數(shù)的有效地址的內(nèi)容,源操作數(shù)的物理地址PA=(DS)16+(SI)=31320H,則(AX)=1322H (3)LDS DI,BX+SI, 其源操作數(shù)的物理地址PA=(DS)16+(SI)+(BX) =30000H+1320H+1000H=32320H 則(DS)=2000H
14、,(DI)=1000H (4)(AX)=1322H,執(zhí)行SUB AX,76EBH后, (AX)=1322H-76EBH=9C37H 標志位狀態(tài)分別為:CF=1,SF=1,ZF=0, OF=0,PF=0,AF=1,補充習題,1. 一個有16個字的數(shù)據(jù)區(qū),起始地址為70A0H:DDF6H,則這個數(shù)據(jù)區(qū)末字單元的物理地址是( ) (A)7E815H (B)7E816H (C)7E814H (D)7E7F8H 2. 已知(BL)6FH,執(zhí)行TEST BL,8FH后, (BL)( ) (A)0FH (B)6FH (C)0 (D)EFH,3. 讀程序回答問題 XOR AX,AX MOV BX,1 MOV
15、CX,5 LOP:ADD AX,BX INC BX INC BX LOOP LOP HLT 上述程序段執(zhí)行后, (AX)25,(BX)11,4. 在程序運行過程中,確定下一條指令的物理地址的計算表達式是( ) (A)(CS)10H(IP) (B) (DS)10H(DI) (C) (SS)10H(SP) (D) (ES)10H(SI),5. 設(shè)(SS)2000H,則下列程序執(zhí)行后,(SP)( ),(AL)中數(shù)據(jù)在內(nèi)存地址( )中,(AH)中數(shù)據(jù)在內(nèi)存地址( )中。 MOV SP,2000H MOV AX,1234H PUSH AX 答案:1FFEH,21FFEH,21FFFH,6. 有如下程序段
16、 MOV AX,1234H MOV BX,5678H ADD AL,BL DAA ;(AL)=12H,CF=1 MOV CL,AL MOV AL,AH ADC AL,BH DAA ;12H+56H+CF=69H 執(zhí)行程序后,(AL)=69H,(CL)=12H,7. 寄存器間接尋址時,操作數(shù)在( )中 (A)寄存器 (B)存儲器 (C)堆棧區(qū) (D)累加器 8. 執(zhí)行返回指令,退出中斷服務(wù)程序,這時返回地址來自( ) (A)ROM區(qū) (B)程序計數(shù)區(qū) (C)堆棧區(qū) (D)CPU的暫存寄存器,9. 讀程序回答問題 MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV
17、 CX,4 MUL CX HLT 執(zhí)行后,(AH)8DH,(AL)00H,10. 下面程序段中,當滿足條件轉(zhuǎn)到NEXT標號執(zhí)行時,(AL)的值正確的是( ) CMP AL,0FBH JNB NEXT NEXT: (A)80H (B)8FH (C)F0H (D)FEH,答案:SP=1FFEH,AX=00F0H DX=ACF0H,DI=1234H,CF=0,ZF=0,MOV SP,2000H MOV AX,00F0H MOV SI,1234H MOV DX,5678H,PUSH SI POP DI SHL DX,1 TEST AX,DX PUSH DX,11. 執(zhí)行下列程序后,SP=?AX=?DX
18、=? DI=?標志位CF=?ZF=?,12.交換SI、DI的內(nèi)容,正確程序段是(AC) (A)PUSH SI (B) PUSH SI PUSH DI PUSH DI POP SI POP DI POP DI POP SI (C)MOV AX,SI (D)MOV AX,SI MOV SI,DI MOV BX,DI MOV DI,AX XCHG BX,AX,13. 完成41H送2100H,42H送2101H的 正確程序段是( A ) (A)MOV AX,4241H MOV 2100H,AX (B)MOV AX,AB MOV 2100H,AX,14.下列程序段執(zhí)行后,(BX)=? MOV CL,7
19、MOV BX,8016H SHR BX,CL 答案:0100H 15. 假設(shè)(SP)=0100H,(SS)=6000H,執(zhí)行POP AX指令后,棧頂?shù)奈锢淼刂肥嵌嗌伲?答案:60102H,16. 近過程NEAR的RET指令把當前棧頂?shù)囊粋€字彈出到(IP),遠過程FAR的RET指令彈出一個字到(IP)后又彈出一個字到(CS),IRET指令是(中斷返回),從堆棧順序彈出三個字分別送到(IP)、(CS)和(FLAGS)中。,17. 程序段如下: MOV AX,0405H MOV BL,06H AAD DIV BL 執(zhí)行后,(AX)=? 答案:0307H,18. AX和CX中內(nèi)容為無符號數(shù),BX和DX中內(nèi)容為帶符號數(shù),試用CMP指令和條件轉(zhuǎn)移指令,實現(xiàn)以下判斷。 (1)若AX超過CX,則轉(zhuǎn)至BIGER CMP AX,CX JA BIGER (2)若BX超過DX,則轉(zhuǎn)至BIGER CMP BX,DX JG BIGER (3)若AX小于CX,則轉(zhuǎn)至LESS CMP AX,CX JB LESS,(4)若BX小于DX,則轉(zhuǎn)至LESS CMP BX,DX JL LESS (5)若AX=CX,則轉(zhuǎn)至EQUAL CMP AX,CX JE/JZ EQUAL,