微机原理及应用第2章习题及答案
- 格式:doc
- 大小:160.50 KB
- 文档页数:7
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 AX,1800H AX=1800H (2) MOV AX,BX AX=0100H (3) MOV BX,[1200H] BX=4C2AH (4) MOV DX,1100[BX] DX=4C2AH (5) MOV [BX][SI],AL [20102H]=00H (6) MOV AX,1100[BX][SI] 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 VALUE,BX BX=015CH (2) AND BX,VALUE BX=0061H (3) CMP BX,VALUE BX=00E3H(CF=ZF=OF=SF=0,AF=PF=1) (4) XOR BX,0FFH BX=001CH (5) DEC BX BX=00E2H (6) TEST BX,01H BX=00E3H(CF=ZF=OF=SF=AF=PF=0)
4.已知SS=0FFA0H,SP=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。(标出存储单元的地址) 解答: 00ADH00AEH00AFH0FFA0:00B0H···FFAACHFFAADHFFAAEHFFAAFHFFAB0H···00ACHXFFAABH00ADH00AEH00AFH0FFA0:00B0H···57H80HFFAACHFFAADHFFAAEHFFAAFHFFAB0H···00ACHX
FFAABH
①初始状态;SP=00B0H②PUSH AX;(AX=8057H)SP=00AEH00ADH00AEH00AFH0FFA0:00B0H···79H0FH57H80HFFAACHFFAADHFFAAEHFFAAFHFFAB0H···00ACHXFFAABH00ADH00AEH00AFH0FFA0:00B0H···57H80HFFAACHFFAADHFFAAEHFFAAFHFFAB0H···00ACHX
FFAABH
③PUSH BX;(BX=0F79H)SP=00ACH④POP BX;SP=00AEH
堆栈段SS=0FFA0H堆栈段SS=0FFA0H堆栈段SS=0FFA0H堆栈段SS=0FFA0H
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寄存器的值为多少 指 令 执 行 结 果 AX CF SF ZF MOV AX,1234H AX=1234H × × × MOV CL,4 AX=1234H × × ×
ROL AX,CL AX=2341H 1 0 0 DEC AX AX=2340H 1 0 0 MOV CX,4 AX=2340H 1 0 0 MUL CX AX=8D00H,DX=0000H 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) 题号 指 令 题号 指 令 (1) Z=W+(Z+X) (2) Z=W-(X+6)-(R+9) MOV AX,Z MOV DX,R
MOV BX,X ADD DX,9
MOV CX,W MOV BX,X
ADD BX ADD BX,6
ADC CX MOV AX,W
MOV Z,AX SUB AX,BX
SUB AX,DX
MOV Z,AX
(3) Z=(W*X)/(R+6) (4) Z=((W-X)/5*Y)*2 MOV DX,0 MOV AX,W
MOV AX,W MOV BX,X
MOV BX,X SUB AX,BX
MUL BX MOV DX,0
PUSH AX MOV CL,5
MOV AX,R DIV CL ADD AX,6 MOV BX,Y
MOV CX,AX MUL BX POP AX MOV CL,2
DIV CX MUL CL MOV Z,AX MOV Z,AX
MOV Z+1,DX MOV Z+1,DX
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)RCLDX,CL 解答: 题号 指 令 执 行 结 果 (1) SHR DX,1 DX=0110 0100 1101 1100(64DCH) (2) SHL DL,1 DX=1100 1001 0111 0010(C972H) (3) SAL DH,1 DX=1001 0010 1011 1001(92B9H) (4) SAR DX,CL DX=1111 1001 0011 0111(F937H) (5) ROR DX,CL DX=0011 1001 0011 0111(3937H) (6) ROL DL,CL DX=1100 1001 1100 1101(C9CDH) (7) RCR DL,1 DX=1100 1001 1101 1100(C9DCH) (8) RCL DX,CL 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拼装成双字后,左移四位。
DXDXAX12345678DX
AX2340
678023456780AX
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,否则顺序执行。