资源描述:
《指令与寻址方式习题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指令与寻址方式习题解答1.试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:(1)ANDAX,0FFH(2)ANDBL,[OFFH](3)MOVDS,AX(4)CMP[SI],CX(5)MOVDS:[0FFH],CL(6)SUB[BP][SI],AH(7)ADCAX,0ABH[BX](8)ORDX,-35[BX][DI](9)PUSHDS(10)CMC答:目的操作数源操作数(1)寄存器直接寻址立即数寻址(2)寄存器直接寻址直接寻址(3)寄存器直接寻址寄存器直接寻址(4)寄存器间接寻址寄存器直接寻址(5)直接寻址寄存器直接寻址(6
2、)基址变址寻址寄存器直接寻址(7)寄存器直接寻址寄存器相对寻址(8)寄存器直接寻址基址变址相对寻址(9)无寄存器直接寻址(10)隐含寻址2.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。(1)MOV[BX][BP],AX(2)TEST[BP],BL(3)ADDSI,ABH(4)ANDDH,DL(5)CMPCL,1234H(6)SHR[BX][DI],3(7)NOTCX,AX(8)LEADS,35[SI](9)INCCX,1(10)PUSH45[DI]答:(1)应将BP,BX其中之一该为SI或DI(2)正确(3)ABH改
3、为0ABH(4)(5)是字操作,CL改为CX(6)移位数大于1时,应用CL(7)NOT指令只有一个操作数(8)LEA指令的源操作数应为一内存单元地址(9)此指令不用指出1(10)45改为45H3.下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态?MOVDL,86ADDDL,0AAH答:0101,0110+1010,1010=1,0000,0000CF=1AF=1ZF=1SF=1OF=14.在8086/8088CPU中可用于作地址指针的寄存器有哪些?答:有BX,CX,DX,BP,SI,DI(IP,SP,)5.已知
4、(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何?(1)MOVCL,20H[BX][SI](2)MOV[BP][DI],CX(3)LEABX,20H[BX][SI]MOVAX,2[BX](4)LDSSI,[BX][DI]MOV[SI],BX(5)XCHGCX,32H[BX]XCHG20
5、H[BX][SI],AX答(1)(CX)=56F6H;(2)(09226H)=5678H;(3)(AX)=1E40H;(4)(1E4F6H)=0024H;(5)(09226H)=1234H,(AX)=5678H.6.已知(SS)=09l5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOVAX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。答:(1)MOVAX,[BP](2)MOVAX,[BP+D
6、I+80H](3)MOVAX,[DI+0100H]MOVAX,[SI+0220H](4)MOVAX,[02C0H]7.试按下列要求分别编制程序段:(1)把标志寄存器中符号位SF置‘1’。(2)寄存器AL中高低四位互换。(3)由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个数的负数。(4)现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,实现(A)+(B)=>C。(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1形成奇数)。答:(1)MOVAH
7、,80HSAHF(2)MOVBL,0FHANDBL,ALSAL4SHR4XORAL,BL(3)MOVDX,7FHSUBAX,DXMOVDX,0FFHSUBDX,BXMOVBX,DX(4)MOVAH,FFHMOVBL,[B]SUBAH,BLMOVBH,[A]SUBBH,AHMOV[C],BH(5)MOVAX,CXNOTAXTEST01HJNZNEXTHLTNEXT:INCCXHLT8.试给出下列各指令的机器目标代码:(1)MOVBL,12H[SI](2)MOV12H[SI],BL(3)SALDX,1(4)ADD0ABH[BP][DI],1
8、234H答:(1)10001010,11011111=8ADF;(2)10001000,01011100=885C;(3)11010001,11100010=D1E2;(4)10000001,1000000