第3章16位/32位微处理器指令系统3.1例题1.指出下列指令中源操作数的寻址方式。(1) MOVAX,002FH(2) MOVBX, [SI](3) MOVCX,[BX+SI+2](4) MOVDX,DS:[1000H](5)MOVSI,BX解:(1)立即寻址(2)寄存器间接寻址(3)基址变址寻址(4)直接寻址(5)寄存器寻址2.若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSHAX,PUSHBX,POPCX,POPDX后,寄存器CX的内容为多少?解:执行PUSH【AX指令后,将18压入堆栈,(SP)一2→SP:执行PUSHBX指令后,将19压入堆栈,(SP)一2→SP:执行POPCX指令后,将19从堆栈中弹出,放入CX,(SP)十2→SP;执行POPDX指令后,将18从堆栈中弹出,放入DX,(SP)十2→SP:故上述四条指令执行后,(CX)=19。3.指出下列指令的错误所在:MOV(1)AL, SI(2)MOVBL,[SI][D](3)XCHGCL,100(4)PUSHAL(5)INAL,256(6)MOVBUF,[SI]SHL(7)AL,2(8)MOVDS,2000H(9) MUL100(10) MOVAL,BYTEPTRSI解:(1)AL、SI的数据类型不匹配(2)不允许同时使用变址寄存器SI、DL,正确的基址变址寻址方式中应运用一基址、一变址寄存器;(3)只能在寄存器与存储器单元或寄存器之间交换数据:(4)只能向堆栈中压入字类型数据;(5)I/O端口地址若超过8位,应该由DX寄存器提供;11
11 第 3 章 16 位/32 位微处理器指令系统 3.1 例 题 1.指出下列指令中源操作数的寻址方式。 (1)MOV AX,002FH (2)MOV BX,[SI] (3)MOV CX,[BX+SI+2] (4)MOV DX,DS:[1000H] (5)MOV SI,BX 解:(1)立即寻址 (2)寄存器间接寻址 (3)基址变址寻址 (4)直接寻址 (5)寄存器寻址 2.若寄存器 AX、BX、CX、DX 的内容分别为 18,19,20,21 时,依次执行 PUSH AX, PUSH BX,POP CX,POP DX 后,寄存器 CX 的内容为多少? 解:执行 PUSH AX 指令后,将 18 压入堆栈,(SP)-2→ SP ; 执行PUSH BX指令后,将19压入堆栈,(SP)-2→ SP ; 执行POP CX指令后,将19从堆栈中弹出,放入CX ,(SP)+2→ SP ; 执行POP DX指令后,将18从堆栈中弹出,放入DX ,(SP)+2→ SP ; 故上述四条指令执行后,(CX)=19。 3.指出下列指令的错误所在: (1) MOV AL,SI (2) MOV BL,[SI][DI] (3) XCHG CL,100 (4) PUSH AL (5) IN AL,256 (6) MOV BUF,[SI] (7) SHL AL,2 (8) MOV DS,2000H (9) MUL 100 (10)MOV AL,BYTE PTR SI 解:(1)AL、SI 的数据类型不匹配 (2)不允许同时使用变址寄存器 SI、DI,正确的基址变址寻址方式中应运用一基址、一变 址寄存器; (3)只能在寄存器与存储器单元或寄存器之间交换数据; (4)只能向堆栈中压入字类型数据; (5)I/O 端口地址若超过 8 位,应该由 DX 寄存器提供;
(6)两操作数不能同时为存储器操作数:(7)移位次数大于1,应该由CL寄存器提供:(8)立即数不能直接送给段寄存器;(9)乘法指令的操作数不能是立即数:(10)PTR算符不能运用于寄存器寻址方式。4.执行下列指令序列后,AX和CF中的值是多少?STCMOVCX,0403HMOVAX,0A433HSARP73AX, CLP62XCHGCH, CLSHLAX, CL解:STC:CF=1。MOVcX, 0403H:(CX)=0403HMOVAX,0A433H:(AX)=0A433HSARAX,CL:算术右移3位,(AX)=0F486HXCHGCH,CL:互换CH、CL中内容,(CX)=0304HSHLAX,CL:逻辑左移4位,(AX)=4860H,CF=1所以,(AX)=4860H,CF=1。5.设计指令序列,完成下列功能:(1)写出将AL的最高位置1,最低位取反,其它位保持不变的指令段。(2)写出将AL中的高四位和低四位数据互换的指令段。(3)检测AL中的最高位是否为1,若为1,则转移到标号NEXT处,否则顺序执行,请用两条指令完成之。(4)写出将立即数06H送到口地址为3F00H的端口的指令序列。解:(1) ORAL,80HXORAL,01H(2) MOVCL, 4P75RORAL, CL(3) TESTAL,80HJNZNEXT(4)MOVAL,06HMOVDX,3F00HOUTDX, ALP653.2习题1.选择题12
12 (6)两操作数不能同时为存储器操作数; (7)移位次数大于1,应该由 CL 寄存器提供; (8)立即数不能直接送给段寄存器; (9)乘法指令的操作数不能是立即数; (10)PTR 算符不能运用于寄存器寻址方式。 4.执行下列指令序列后,AX 和 CF 中的值是多少? STC MOV CX,0403H MOV AX,0A433H SAR AX,CL P73 XCHG CH,CL P62 SHL AX,CL 解: STC;CF=1。 MOV CX,0403H;(CX)=0403H MOV AX,0A433H;(AX)=0A433H SAR AX,CL;算术右移 3 位,(AX)=0F486H XCHG CH,CL;互换 CH、CL 中内容,(CX)=0304H SHL AX,CL;逻辑左移 4 位,(AX)=4860H,CF=1 所以,(AX)=4860H,CF=1。 5.设计指令序列,完成下列功能: (1)写出将 AL 的最高位置 1,最低位取反,其它位保持不变的指令段。 (2)写出将 AL 中的高四位和低四位数据互换的指令段。 (3)检测 AL 中的最高位是否为 1,若为 1,则转移到标号 NEXT 处,否则顺序执行,请用 两条指令完成之。 (4)写出将立即数 06H 送到口地址为 3F00H 的端口的指令序列。 解: (1)OR AL,80H XOR AL,01H (2)MOV CL,4 ROR AL,CL P75 (3)TEST AL,80H JNZ NEXT (4)MOV AL,06H MOV DX,3F00H OUT DX,AL P65 3.2 习 题 1.选择题
(1)标志寄存器中属于控制标志位的是()。P64A.DF、OF、SFB.DF、IF、TFC.OF、CF、PFD.AF、OF、SF(2)已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是(P64)。A.2108H:00EAHB.2100H:117AHC.2025H:0F2AHD.2000H:017AH(3)8086在基址变址的寻址方式中,基址、变址寄存器分别是()。P60A.AX或CX、BX或CXB.BX或BP、SI或DID.CX 或 DI、CX 或 SIC.SI或BX、DX或DI(4)下列指令中,正确的一条是()。A. MOVCS,BXB.MOVAX,TAB2-TAB1+100CX, ALC.OUTD. INC[SI](5)下列指令执行后有可能影响CS值的指令数目是()。P61JMP、MOV、RET、INTADD、JC、POPLODS.CALL、MULA. 3B. 4C. 5D. 6(6)设(SS)=338AH,(SP)=0450H,执行PUSHBX和PUSHF两条指令后,堆栈顶部的物理地址是()。P59A.33CECHB.33CF2HC.33CF4HD.33CE8H(7)若(AX)=一15,要得到(AX)=15应执行的指令是()。P59A.NEG AXB.NOTAXC. INC AXD.DECAX(8)若(SP)=0124H,(SS)=3300H,在执行RET4这条指令后,栈顶的物理地址为(P63)。A.33120HB.3311EHC.33128HD. 3312AH(9)已知程序序列为:P65ADDAL,BLJNOL1JNCL2若AL和BL的内容有以下四组给定值,使该指令序列转向L2执行的给定值是(P65)。A. (AL)=0B6H、(BL)=87HB. (AL)=05H、(BL)=0F8HC. (AL)=68H、(BL)=74HD. (AL)=81H、(BL)=0A2H)。P65(10)以下三指令执行后,(DX)=(MOVDX,0MOVAX,OFFABHCWDB. 0A.OFFABHC.OFFFFHD.无法确定)。(11)设AX)=0C544H,在执行指令ADDAH,AL后,相应的状态为(13
13 (1)标志寄存器中属于控制标志位的是( )。P64 A.DF、OF、SF B.DF、IF、TF C.OF、CF、PF D.AF、OF、SF (2)已知某操作数的物理地址是 2117AH,则它的段地址和偏移地址可能是(P64)。 A.2108H:00EAH B.2100H:117AH C.2025H:0F2AH D.2000H:017AH (3)8086 在基址变址的寻址方式中,基址、变址寄存器分别是( )。P60 A.AX 或 CX、BX 或 CX B.BX 或 BP、SI 或 DI C.SI 或 BX、DX 或 DI D.CX 或 DI、CX 或 SI (4)下列指令中,正确的一条是( )。 A.MOV CS,BX B.MOV AX,TAB2-TAB1+100 C.OUT CX,AL D.INC [SI] (5)下列指令执行后有可能影响 CS 值的指令数目是( )。P61 JMP、 MOV、 RET、 ADD、 INT JC、 LODS、 CALL、 MUL、 POP A.3 B.4 C.5 D.6 (6)设(SS)=338AH,(SP)=0450H,执行 PUSH BX 和 PUSHF 两条指令后,堆栈顶部的物理 地址是( )。P59 A.33CECH B.33CF2H C.33CF4H D.33CE8H (7)若(AX )=-15,要得到(AX) =15 应执行的指令是( )。P59 A.NEG AX B.NOT AX C.INC AX D.DEC AX (8)若(SP)=0124H,(SS)=3300H,在执行 RET 4 这条指令后,栈顶的物理地址为(P63)。 A.33120H B.3311EH C.33128H D.3312AH (9)已知程序序列为:P65 ADD AL,BL JNO L1 JNC L2 若 AL 和 BL 的内容有以下四组给定值,使该指令序列转向 L2 执行的给定值是(P65)。 A.(AL) =0B6H、(BL )= 87H B.(AL )= 05H、 (BL) = 0F8H C.(AL) = 68H、 (BL )= 74H D.(AL) = 81H、 (BL) = 0A2H (10)以下三指令执行后,(DX)=( )。P65 MOV DX,0 MOV AX,0FFABH CWD A.0FFABH B.0 C.0FFFFH D.无法确定 (11)设(AX)=0C544H,在执行指令 ADD AH,AL 后,相应的状态为( )
A. CF=0、OF=0B. CF=0、OF=1C. CF=1、OF=0D. CF=1、OF=1(12)将累加器AX内容清零的错误指令是()。A.ANDAX,OB.XORAX,AXC. SUB AX, AXD. CMPAX,AX(13)将变量BUF的偏移地址送入SI的正确指令是()B.MOVSI,BUFA. MOV[SI],BUFSI,BUFD. MOVC. LEAOFFSETBUF,SI(14)INC指令不影响()标志。OFA.B. CFC. ZFD. SF(15)下列判断累加器AX内容是否为全0的4种方法中,正确的有()种。①SUB② XORAX,0AX,0JZL1JZL1?ORTESTAX, AXAX,OFFFFHJZL1JZL1C. 3D. 4A.1B. 2(16)设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是()。A.DEC ALB.SBBAL,0AASDASC.SUBAL,1D.SUBAL,1AASDAS(17)已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是():B.A.DIVBXCWDIDIVBXC.D. CBWXORDX,DXDIVBXIDIVBX)(18)条件转移指令JNBE产生转移的条件是(ANDZF=0B.CF=0 AND ZF=1A. CF=0C. CF=1ZF=0D.ANDCF=1 AND ZF=1(19)设BX=0002H,DI=10A5H,DS=1100H,BP=0100H,CS=2100H)下列指令中包含的物理转移地址是(LABDW0600H,0640H,06A0H,06C0HJMPLAB[BX]A. 116A0HB.11640HC. 21640HD.216A0H(20)在下列指令中,隐含使用AL寄存器的指令有()条。AAAMOVSBMULBHCBWSCASBXLATA.2C. 4D. 5B. 3(21)已知(SS)=1000H,(SP)=2000H,(BX)=283FH,指令CALLWORDPTRBX的机14
14 A.CF=0、OF=0 B.CF=0、OF=1 C.CF=1、OF=0 D.CF=1、OF=1 (12)将累加器 AX 内容清零的错误指令是( )。 A.AND AX,0 B.XOR AX,AX C.SUB AX,AX D.CMP AX,AX (13)将变量 BUF 的偏移地址送入 SI 的正确指令是( )。 A.MOV [SI],BUF B.MOV SI,BUF C.LEA SI,BUF D.MOV OFFSET BUF,SI (14)INC 指令不影响( )标志。 A. OF B.CF C.ZF D.SF (15)下列判断累加器 AX 内容是否为全 0 的 4 种方法中,正确的有( )种。 ① SUB AX,0 ② XOR AX,0 JZ L1 JZ L1 ③ OR AX,AX ④ TEST AX,0FFFFH JZ L1 JZ L1 A. 1 B.2 C.3 D.4 (16)设AL 中已有压缩型BCD码,为实现对AL 的减1操作,可选用的指令序列是( )。 A. DEC AL B.SBB AL,0 AAS DAS C. SUB AL,1 D.SUB AL,1 AAS DAS (17)已知 AX,BX 中均为带符号数,当进行字相除时,下面指令或指令序列正确的是 ( )。 A. DIV BX B. CWD IDIV BX C. XOR DX,DX D. CBW DIV BX IDIV BX (18)条件转移指令 JNBE 产生转移的条件是( ) A.CF=0 AND ZF=0 B. CF=0 AND ZF=1 C.CF=1 AND ZF=0 D. CF=1 AND ZF=1 (19)设 BX=0002H,DI=10A5H,DS=1100H,BP=0100H,CS=2100H 下列指令中包含的物理转移地址是( ) LAB DW 0600H,0640H,06A0H,06C0H JMP LAB[BX] A.116A0H B.11640H C.21640H D.216A0H (20)在下列指令中,隐含使用 AL 寄存器的指令有( )条。 AAA MOVSB MUL BH CBW SCASB XLAT A. 2 B.3 C.4 D.5 (21)已知(SS)=1000H,(SP) = 2000H,(BX) = 283FH,指令 CALL WORD PTR[BX]的机
器代码是0FF17H,该指令的起始地址为1000H,试问执行该指令后,内存单元11FFEH中的内容是()。A.28HB. 3FHC. 00HD. 02H(22)设AL中的值为84H,CF=1,执行RCRAL,1指令后,AL中的值和CF分别为)。(C.A. 0C2H、1B.42H、1OC2H、0D.42H、0)。(23)能够将CF置1的指令是(A. CLCB. CMCC. NOPD. STC)。(24)执行一列三条指令后,AX寄存器中的内容是(MOVAX,“8'ADDAL,“9”AAAA.0071HB.0107HC.0017HD.0077H)。(25)下列指令执行后,能影响标志位的指令是(A.LOOPNZNEXTB.JNZ NEXTD. INT 21HC. MOV AX, 2400H(26)若(DX)=1234H,(IP)=5678H,执行JMPDX指令后,寄存器变化正确的是()。A.(DX)=1234H、(IP)=5678HB. (DX)=1234H、(IP)=1234HC.(DX)=5678H、(IP)=5678HD. (DX)=5678H、(IP)=1234H(27)对于下列程序段:AGAIN: MOVES:[DI],ALINCDILOOP AGAIN在下列指令中,可完成与上述程序段相同功能的指令是()。A.REP MOVSBB.REP STOSBC.REPLODSBD.REPSCASB2.填空题(1)与指令“MOVBX,OFFSETDATA”等效的指令是(2)写出将寄存器BX的内容求补的正确指令是(3)使AL中的操作数0、1位变反,其它位不变的指令是(4)假定(SP)=0100H,(AX)=2107H,执行指令PUSHAX后,存放数据21H的偏移地址是(5)设(CS)=3100H,(DS)=40FFH,并且两段空间均为64K个单元,那么这两段的重叠区域为个单元。(6)若物理地址为2D8COH,偏移量为B6A0H,则段地址为(7)执行下列指令后,MOVAL,BLNOTAL15
15 器代码是 0FF17H,该指令的起始地址为 1000H,试问执行该指令后,内存单元 11FFEH 中 的内容是( )。 A. 28H B.3FH C.00H D.02H (22)设 AL 中的值为 84H,CF=1,执行 RCR AL,1 指令后,AL 中的值和 CF 分别为 ( )。 A.0C2H、1 B.42H、1 C.0C2H、0 D.42H、0 (23)能够将 CF 置 1 的指令是( )。 A.CLC B.CMC C.NOP D.STC (24)执行一列三条指令后,AX 寄存器中的内容是( )。 MOV AX,‘8’ ADD AL,‘9’ AAA A.0071H B.0107H C.0017H D.0077H (25)下列指令执行后,能影响标志位的指令是( )。 A.LOOPNZ NEXT B.JNZ NEXT C.MOV AX,2400H D.INT 21H (26)若(DX)=1234H,(IP) =5678H,执行 JMP DX 指令后,寄存器变化正确的是( )。 A.(DX)=1234H、(IP )=5678H B.(DX)=1234H、(IP) =1234H C.(DX)=5678H、(IP )=5678H D.(DX)=5678H、(IP )=1234H (27)对于下列程序段: AGAIN:MOV ES:[DI],AL INC DI LOOP AGAIN 在下列指令中,可完成与上述程序段相同功能的指令是( )。 A.REP MOVSB B.REP STOSB C.REP LODSB D.REP SCASB 2.填空题 (1)与指令“MOV BX,OFFSET DATA”等效的指令是_ _。 (2)写出将寄存器 BX 的内容求补的正确指令是_。 (3)使 AL 中的操作数 0、1 位变反,其它位不变的指令是_。 (4)假定(SP)=0100H,(AX)=2107H,执行指令 PUSH AX 后,存放数据 21H 的偏移地址是 _。 (5)设(CS)=3100H,(DS)=40FFH,并且两段空间均为 64K 个单元,那么这两段的重叠区域 为 个单元。 (6)若物理地址为 2D8C0H,偏移量为 B6A0H,则段地址为 _。 (7)执行下列指令后, MOV AL,BL NOT AL