寻址方式及指令系统习题与解答计算机科学与工程学院黄洪波2012年3月一、单项选择题1.设BX=2000H,SI=3000H,指令MOVAX,[BX+SI+8]的源操作有效地址为()。A.5000HB.5008HC.23008HD.32008H2.设DS=1000H,ES=2000H,BX=3000H,指令ADDAL,[BX]的源操作数的物理址为()。A.13000HB.23000HC.33000HD.3000H3.设DS=2000H,ES=3000H,SI=200H,指令MOVES:[SI],AL的目的操作数的物理地址为()。A.20200HB.30200HC.50200HD.200H4.指令MOVMEM[BX],AX中的MEM是()。A.原码B.反码C.补码D.移码5.用来作为寄存器间接寻址的寄存器有()个。A.8B.6C.5D.46.指令MOV[BX+SI],AL中的目的操作数使用()段寄存器。A.CSB.DSC.SSD.ES7.指令MOVBX,[BP+5]中的源操作数使用()段寄存器。A.CSB.DSC.SSD.ES8.段内间接寻址只改变()中的内容。A.CSB.IPC.CS和IPD.PSW9.段间间接寻址只改变()中的内容。A.CSB.IPC.CS和IPD.PSW10.下述指令中不改变PSW的指令是()。A.MOVAX,BXB.ANDAL,0FHC.SHRBX,CLD.ADDAL,BL11.下述指令中不影响CF的指令是()。A.SHLAL,1B.INCCXC.ADD[BX],ALD.SUBAX,BX12.两个整数补码9CH和7AH相加运算后,会产生()。A.无溢出且无进位B.无溢出但有进位C.有溢出且有进位D.有溢出但无进位13.指令JMPWORDPTR[BX]属于()寻址。A.段内直接B.段内间接C.段间直接D.段间间接14.指令MOVAX,[BX+SI+8]的源操作数属于()寻址。A.直接B.寄存器相对C.基址变址D.相对基址变址15.指令()不改变CF的内容。A.DECALB.ADDAX,CXC.SUB[BX],CLD.SBBAL,DL16.十进制数字74所对应的压缩型BCD码的形式是()。A.74B.74HC.4AHD.4A17.十进制数字85所对应的非压缩型BCD码的形式是()。A.0085B.0085HC.0805D.0805H18.设AL=67H,执行“CMPAL,76H”后,AL=()。A.76HB.0DFHC.67HD.0019.设AL=65H,BL=29H,执行下列指令后,AL=()。ADDAL,BLDAAA.8EHB.94C.94HD.8E20.压栈操作是()位数的操作。A.8B.16C.32D.任意21.执行IMUL指令时,如果乘积的高位部分不是低位部分的符号扩展,则()。A.OF=0、CF=0B.OF=0、CF=1C.OF=1、CF=0D.OF=1、CF=122.设AX=3762H,CL=5,执行“SHRAX,CL”后,AX=()。A.0376HB.01BBHC.01BBD.037623.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用()SCASB串操作指令。A.REPNEB.REPC.REPED.REPNZ24.如果“JNCL”指令的操作码放在0040H,转移后在0020H处取下一条指令的操作码,那么该条指令的位移量是()。A.20HB.1EHC.0DEHD.0E0H25.如果“JAP”指令的操作码放在0050H,该指令的位移量为34H,执行完此条指令转移到取下一条指令的偏移地址为()A.0082HB.0084HC.0086HD.0088H26.若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行“ADDAX,[BX]”指令后,AX=()。A.8856HB.6678HC.8800HD.6600H27.设AX、BX寄存器中存放的是有符号的二进制数据,若执行“CMPAX,BX”指令后,()L表示大于则转L。A.JZB.JAC.JGED.JG28.执行“DIVBX”指令后,()寄存器中存放商。A.ALB.AHC.AXD.DX29.执行“()AX,BX”指令不改变AX寄存器中的内容。A.CMPB.ADDC.XORD.OR30.若AX=1000H,执行“NEGAX”指令后,AX=()。A.1000HB.0E000HC.0F000HD.1001H二、多项选择题1.在下列寻址方式中,用来访问内存的寻址方式有()。A.寄存器寻址B.寄存器间接寻址C.寄存器相对寻址D.直接寻址2.用来作为寄存器间接寻址的寄存器有()。A.AXB.BXC.BPD.CX3.在下列指令中,源操作数使用DS段寄存器进行寄存器相对寻址的有()。A.MOVAX,[DI+4]B.MOVAX,ES:[SI+8]C.MOVAX,[BP+4]D.MOVAX,[BX+4]4.在下列指令中,源操作数的寻址方式是错误的有()。A.MOVAX,[DI+BX]B.MOVAX,[SI+DI]C.MOVAX,[BP+BX]D.MOVAX,[DX]5.在下列指令中,属于段内转移指令的有()。A.JMPSHORTAB.JMP[BX]C.JMPDWORDPTR[BX]D.JMPNEARPTR[BX+SI]6.在下列指令中,错误的指令有()。A.SUB5,ALB.ADDAL,BXC.INC[BX]D.SHRAX,67.执行“CMPAX,8003H”指令后,当AX中的无符号数高于8003H时,下列指令中有效的转移指令有()。A.JNBLB.JALC.JGLD.JNLL8.可与串操作指令“CMPSW”指令配合使用的重复前缀有()。A.REPB.REPZC.REPNZD.REPE9.在下列的输入/输出指令中,正确的指令有()。A.INAX,80HB.OUTDX,AXC.INAL,340D.OUTDX,AL10.在下列的指令中,错误的指令有()。A.PUSHALB.MOVAL,BXC.PUSH1000HD.CALLAX11.可以用下列指令代替“LOOPL”指令的有()。A.DECCXB.DECCXJNZLJNCLC.DECCXD.DECCXCMPCX,0JELJEL三.填空题1.在一条指令中,立即数只能作源操作数。2.8086/8088CPU形成的内存物理地址有20位。3.指令“MOVAX,[BX+SI]”的源操作数在内存的DS段。4.指令“MOVBX,[BP+DI]”的源操作数在内存的SS段。5.指令“MOVAX,ES:[SI]”的源操作数在内存的ES段。6.入栈指令使用的是SS段。7.指令“ADD[BX+SI],AL”的目的操作数是基址+变址寻址方式。8.指令“SUBBX,A[SI]”的源操作数是寄存器相对寻址方式。9.指令“JMPDWORDPTR[BX]”属于段间间接寻址方式。10.可作为寄存器间接寻址的寄存器有4个。11.堆栈是从高地址向低地址方向生长的。其操作遵循LIFO的操作原则。12.在进行弹栈操作时应该先将弹出的数据送目标地址,然后SP+2。13.在进行多精度加法运算时,一般使用ADC指令。14.通用的数据传送指令不影响PSW。15.“INCAL”指令不影响标志位的CF位。16.若AL=11H,执行“NEGAL”后,AL=。17.JMP指令的执行PSW寄存器中的各位。18.两个无符号数进行比较时,可以根据标志位来判断大小。在编写程序时可使用指令来实现。19.若执行“DIVBX”,其被除数的高16位必须放在,低16位必须放在。20.DAA指令只对寄存器中的内容进行调整。21.若AL=84H,在执行CBW后,AL=。22.十进制数1234的压缩型BCD码为。23.执行ANDAL,0FHJNZL指令,是检测AL中的位,当它为非零则转移。24.若移位指令的移位位数大于1时,其移位位数必须放在中。25.如果AL=85H,CL=4,执行“SARAL,CL”时,AL=,CF=。26.在串操作指令中,SI指向串,DI指向串。27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用重复前缀。28.转移指令“JNZL”的转移范围(十进制)是。该指令的第二个字节为位移量,用形式表示。29.段内调用指令改变中的内容。30.段间调用指令改变中的内容。四.判断题(判断下列指令是否正确,如果是错误的,请指出错误的原因)1.ADDAL,BX2.MOV[BX],SI3.SUB[BX],[SI]4.CMP5,AL5.MOVCX,AX6.LEABL,A7.SHRAL,68.MOVAL,[DI+SI]9.MOVBL,200H10.MOVAX,DATA11.INC[BX]12.CMP[BX],A;A为变量13.MOVAX,‘+’14.MOVAX,[BP+BX]15.ADDAX,[CX]16.OUT400,AL17.JNCP18.MOVBX,,OFFSETA19.LEADI,A[SI]20.CMPAX,5五.改错题(按下列指令中的原意改正下列指令)1.DEC[SI]2.CMPAL,BX;无符号数比较3.MOV[DX],AL4.MOVAL,300H5.MOV[BX],[DI];字节操作6.ADDAL,[CX+SI]7.ADDAL,BX;有符号数相加8.PUSHAL9.CMP[BX],5;字节比较10.MOVDS,1234H六.简答题1.设BX=1000H,SI=2000H,位移量D=3000H,请指出下列各种寻址方式的有效地址是什么?(1)使用D的直接寻址(2)使用BX寄存器的间接寻址(3)使用BX寄存器的相对寻址(4)基址变址寻址(5)相对基址变址寻址2.请指出下列各条指令的源操作数的寻址方式是什么?(1)MOVAX,BUF(2)CMPAL,5(3)ADD[BX+5],AX(4)SUBAX,[BX+SI](5)ADCAH,A[SI](6)MOVBX,[SI](7)ANDCX,B[BP+SI](8)JMPWORDPTR[BX](9)JMPP(10)JMPFARPTRP3.设DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器中的内容是多少?(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[1200H](4)MOVAX,[BX](5)MOVAX,[BX+1100H](6)MOVAX,[BX+SI](7)MOVAX,[BX+SI+1100H]4.按下列各小题的要求写出相应的一条汇编语言指令。(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中(2)以BX和SI寄存器作基址变址寻址方式,把该单元中的一个字传送到AX。(3)以SI和位移量20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的内容相加,结果存入CX寄存器中。(4)清除AX寄存器的内容,同时清除CF标志位(5)将字单元NUM与0B6H进行比较5.按下列各小题的要求使用相应的几条指令完成其操作。(1)将偏移量为200H的存储单元中的数与300H相加,结果存入AX寄存器中(2)比较AX寄存器中与BX寄存器中的16位有符号数,当AX中的内容大于BX中的内容时转移到L。(3)将BUF1和BUF2中的16位数据交换(4)测试BUF字缓冲区中第15位,如果为1则转移到P(5)将BUFI和BUF2的字相加,结果送S缓冲区6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么?SHRBX,1SARBX,17.分别说明下列每组指令中的两条指令的区别。(1)MOVBX,BUFLEABX,BUF(2)ORBL,0FHANDBL,0FH(3)JMPSHORTLJMPL(4)MOVAX,BXMOVAX,[BX](5)MOVAX,[BX+DI]MOVAX,[BP