CH02 8086/8088指令系统
习题与思考题
1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式源操作数在哪里如在存储器中请写出其物理地址是多少 (1)MOV AX,0ABH (2)MOV AX,[100H] (3)MOV AX,VAL (4)MOV BX,[SI] (5)MOV AL,VAL[BX] (6)MOV CL,[BX][SI] (7)MOV VAL[SI],BX (8)MOV [BP][SI],100 解答:
(1)MOV AX,0ABH
寻址方式:立即寻址;源操作数在数据线上;物理地址:无
(2)MOV AX,[100H]
寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+100H=
2000H*16+100H=20100H
(3)MOV AX,VAL
寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+VAL=
2000H*16+0050H=20050H
(4)MOV BX,[SI]
寻址方式:寄存器间接寻址;源操作数在存储器中;物理地址:DS*16+SI=
2000H*16+00A0H=200A0H
(5)MOV AL,VAL[BX]
寻址方式:变址寻址;源操作数在存储器中;物理地址:DS*16+VAL+BX=
2000H*16+0050H+0100
=20150H
(6)MOV CL,[BX][SI]
寻址方式:基址加变址寻址;源操作数在存储器中;物理地址:DS*16+BX+SI=
2000H*16+0100H+00A0H
=201A0H
(7)MOV VAL[SI],BX
寻址方式:寄存器寻址;源操作数在寄存器中;物理地址:无
(8)MOV [BP][SI],100
寻址方式:立即寻址;源操作数在;物理地址:无
2.设有关寄存器及存储单元的内容如下:
DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20100H]=12H,[20101H]=34H,[20102H]=56H,[20103]=78H,[21200]=2AH,[21201H]=4CH,[21202H]=0B7H,[21203H]=65H。 试说明下列各条指令单独执行后相关寄存器或存储单元的内容。 (1)MOV AX,1800H (2)MOV AX,BX
(3)MOV BX,[1200H] (4)MOV DX,1100[BX]
(5)MOV [BX][SI],AL (6)MOV AX,1100[BX][SI] 解答: 题号 (1) MOV (2) MOV (3) MOV (4) MOV (5) MOV (6) MOV 指 令 AX,1800H AX,BX BX,[1200H] DX,1100[BX] [BX][SI],AL AX,1100[BX][SI] 执 行 结 果 AX=1800H AX=0100H BX=4C2AH DX=4C2AH [20102H]=00H AX=65B7H
3.假定BX=0E3H,变量VALUE=79H,确定下列指令执行后的结果(操作数均为无符号数。对3、6,写出相应标志位的状态)。
(1)ADD VALUE,BX (2)AND BX,VALUE (3)CMP BX,VALUE (4)XOR BX,0FFH (5)DEC BX (6)TEST BX,01H 解答: 题号 (1) ADD (2) AND (3) CMP (4) XOR (5) DEC (6) TEST 指 令 VALUE,BX BX,VALUE BX,VALUE BX,0FFH BX BX,01H 执 行 结 果 BX=015CH BX=0061H BX=00E3H(CF=ZF=OF=SF=0,AF=PF=1) BX=001CH BX=00E2H BX=00E3H(CF=ZF=OF=SF=AF=PF=0)
4.已知SS=0FFA0H,SP=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。(标出存储单元的地址) 解答:
堆栈段SS=0FFA0H堆栈段SS=0FFA0H00ACH00ADH00AEH00AFH0FFA0:00B0H···X···FFAABHFFAACHFFAADHFFAAEHFFAAFHFFAB0H00ACH00ADH00AEH00AFH0FFA0:00B0H···57H80HX···FFAABHFFAACHFFAADHFFAAEHFFAAFHFFAB0H①初始状态;SP=00B0H②PUSH AX;(AX=8057H)SP=00AEH堆栈段SS=0FFA0H堆栈段SS=0FFA0H00ACH00ADH00AEH00AFH0FFA0:00B0H···79H0FH57H80HX···FFAABHFFAACHFFAADHFFAAEHFFAAFHFFAB0H00ACH00ADH00AEH00AFH0FFA0:00B0H···57H80HX···FFAABHFFAACHFFAADHFFAAEHFFAAFHFFAB0H③PUSH BX;(BX=0F79H)SP=00ACH④POP BX;SP=00AEH
5.已知程序段如下: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX 试问:(1)每条指令执行后,AX寄存器的内容是什么(2)每条指令执行后,CF,SF及ZF的值分别是什么(3)程序运行结束时,AX及DX寄存器的值为多少 指 令 MOV MOV
执 行 结 果 AX AX=1234H AX=1234H CF × × SF × × ZF × × AX,1234H CL,4
ROL DEC MOV MUL AX,CL AX CX,4 CX AX=2341H AX=2340H AX=2340H AX=8D00H,DX=0000H 1 1 1 0 0 0 0 0 0 0 0 0
6.写出实现下列计算的指令序列。(假定X、Y、Z、W、R都为字变量) (1)Z=W+(Z+X) (2)Z=W-(X+6)-(R+9) (3)Z=(W*X)/(R+6) (4)Z=((W-X)/5*Y)*2 解答:(1)Z=W+(Z+X) 题号 MOV MOV MOV ADD ADC MOV MOV MOV MOV MUL PUSH MOV ADD MOV POP DIV MOV MOV 指 令 AX,Z BX,X CX,W BX CX Z,AX DX,0 AX,W BX,X BX AX AX,R AX,6 CX,AX AX CX Z,AX Z+1,DX (4) 题号 (2) MOV ADD MOV ADD MOV SUB SUB MOV MOV MOV SUB MOV MOV DIV MOV MUL MOV MUL MOV MOV 指 令 Z=W-(X+6)-(R+9) DX,R DX,9 BX,X BX,6 AX,W AX,BX AX,DX Z,AX AX,W BX,X AX,BX DX,0 CL,5 CL BX,Y BX CL,2 CL Z,AX Z+1,DX (1) Z=W+(Z+X) (3) Z=(W*X)/(R+6) Z=((W-X)/5*Y)*2
7.假定DX=001B,CL=3,CF=1,试确定下列各条指令单独执行后DX的值。 (1)SHR DX,1 (2)SHL DL,1 (3)SAL DH,1 (4)SAR DX,CL (5)ROR DX,CL (6)ROL DL,CL (7)RCR DL,1 (8)RCL DX,CL 解答: 题号 (1) SHR (2) SHL
指 令 DX,1 DL,1 执 行 结 果 DX=0110 0100 1101 1100(64DCH) DX=1100 1001 0111 0010(C972H)
(3) SAL (4) SAR (5) ROR (6) ROL (7) RCR (8) RCL DH,1 DX,CL DX,CL DL,CL DL,1 DX,CL DX=1001 0010 1011 1001(92B9H) DX=1111 1001 0011 0111(F937H) DX=0011 1001 0011 0111(3937H) DX=1100 1001 1100 1101(C9CDH) DX=1100 1001 1101 1100(C9DCH) DX=0100 1101 1100 1011(4DCFH)
8.已知DX=1234H,AX=5678H,试分析下列程序执行后DX、AX的值各是什么该程序完成了什么功能
MOV CL,4 SHL DX,CL MOV BL,AH SHL BL,CL SHR BL,CL OR DL,BL
解答:DX=2345H,AX=6780H。该程序完成的功能如图所示,将DX,AX拼装成双字后,左移四位。
DX12342DX34020DX3456AX780AX56786AX78
9.试分析下列程序段: ADD AX,BX JNC L2 SUB AX,BX JNC L3
JMP SHORTL5
如果AX、BX的内容给定如下:
AX BX (1)14C6H 80DCH (2)B568H 54B7H 问该程序在上述情况下执行后,程序转向何处 解答:(1)AX=AX+BX=14C6H+80DCH=95A2H;CF=0;无进位,转移至L2;
(2)AX=AX+BX=B568H+54B7H=0A1FH;CF=1;有进位,继续执行;
AX=AX-BX=0A1FH+54B7H=B568H;CF=1;有借位,继续执行;
无条件转移至SHORTL5
10.编写一段程序,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS
字符串,则执行NEW_LESS,否则顺序执行。 解答:编程如下,(说明:左测程序为常规编法,两个字符串在一个数据段中;右测的程序
相关推荐: