第三章习题答案
2.分别指出下列指令中源操作数和目的操作数的寻址方式。
⑴MOV BX,12 ⑵MOV AL,128 ⑶MOV [BX],DX
⑷MOV DS,AX ⑸MOV V AR,8 ⑹MOV [1000H],DX
⑺MOV 6[BX],CX ⑻MOV AX,[BX][SI] ⑼MOV TAB[BP][DI],AL 答案:
3.在8086=0200H,(BP)=0100H,V AR的偏移量为0060H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,请计算它们的物理地址是多少?
⑴MOV BX,12 ⑵MOV AL,128 ⑶MOV [BX],DX
⑷MOV ES:[SI],AX ⑸MOV V AR,8 ⑹MOV [1000H],DX
⑺MOV 6[BX],CX ⑻MOV [BX][SI],AX ⑼MOV 6[BP][SI],AL
答案:
4.设(DS)LAB 的偏移量为0060H,(20300H)=50H,(20301H)=01H,(20306H)=0BH,(20306H)=05H,试确定以下JMP指令转向的物理地址是多少?
⑴JMP BX ⑵JMP 6[BX]
答案:
⑴∵ (IP)=(BX)=0300H
∴转向的物理地址为12300H
⑵∵ (IP)=(DS:[BX+6])=(20306H)=050BH
∴转向的物理地址为1250BH
5.设(CS)=2000H,CS:0100H单元有一条JMP SHORT LAB指令,若其中的位移量为:
⑴60H ⑵80H ⑶0E0H
试写出转向目标的物理地址是多少?
答案:
因为CS:0100H处存放两字节指令,所以当执行该指令时(IP)=0102H
⑴转向的物理地址为:(CS)*10H+(IP)+0060H=20162H
⑵转向的物理地址为:(CS)*10H+(IP)+0FF80H=20082H
⑶转向的物理地址为:(CS)*10H+(IP)+0FFE0H=200E2H
6.试述以下指令的区别:
⑴MOV AX,3000H 与MOV AX,[3000H]
⑵MOV AX,MEM 与MOV AX,OFFSET MEM
⑶MOV AX,MEM 与LEA AX,MEM
答案:
⑴ MOV AX,3000H指令源操作数的寻址方式为立即寻址方式,指令执行结果为:
(AX)=3000H。
而MOV AX,[3000H]指令源操作数的寻址方式为直接寻址方式,指令执行结果为:
(DS:3000H)→AX。
⑵ MOV AX,MEM指令源操作数的寻址方式为直接寻址方式,指令执行结果为:
(DS:MEM)→AX。
而MOV AX,OFFSET MEM指令的执行结果是把MEM的偏移量送AX。
⑶ MOV AX,MEM指令的执行结果是(DS:MEM)→AX。而LEA AX,MEM的执行结果是把MEM 的偏移量送AX。
9.指出下列指令的错误:
题目答案
⑵MOV [AX],BX 寄存器间接寻址方式不能用AX寄存器
⑵MOV AL,1280 源操作数超出目标范围
⑶MOV [BX],9 目标操作数类型未知
⑷MOV DS,1000H 立即数不能直接送段寄存器
⑸MOV V AR,[BX] 两个操作数不能同时为存储器操作数
⑹MOV M1,M2 两个操作数不能同时为存储器操作数
⑺MOV 6,CX 操作数不能是立即数
⑻MOV AX,[SI][DI] 源操作数寻址方式错
⑼MOV CS,AX 操作数不能是代码段寄存器
⑽MOV BX,OFFSET V AR[SI] OFFSET后只能跟变量或标号名
11.写出把首址为BUF的字型数组的第4个字送到AX寄存器的指令,要求使用以下几种寻址方式:
⑴直接寻址方式
⑵使用BX的寄存器间接寻址方式
⑶使用BX的寄存器相对寻址方式
答案:
⑴MOV AX,BUF+3*2
⑵LEA BX,BUF+3*2
MOV AX,[BX]
⑶MOV BX,3*2
MOV AX,BUF[BX]
13.设(AX)=0C5FFH,(BX)=9E00H,试实现以下要求:
⑴ADD AX,BX 指令执行后,根据结果设置标志位ZF、SF、CF、OF、AF、PF,并讨论结果的正确性。
答案:
执行ADD AX,BX 指令后,(AX)=0110001111111111B,并且最高位向前有进位。因此,设置标志位如下:
ZF SF CF OF AF PF
0 0 1 1 0 1
(NZ) (PL) (CY) (OV) (NA) (PE)
讨论结果:
对于无符号数而言,因为CF=1,所以结果不正确。
对于带符号数而言,因为OF=1,所以结果不正确。
17.编程序使:
⑴使AL的各位变反。
⑵BX寄存器低四位置1。
⑶AX寄存器的低四位清0。
⑷使CX寄存器的低四位变反。
⑸用TEST指令测试AL寄存器的位0和位6是否同时为0,若是则把0送DH寄存器,否则把1送DH寄存器。
答案:
⑴NOT AL
⑵OR BX,000FH
⑶AND AX,0FFF0H
⑷XOR CX,000FH
⑸TEST AL,0100001B
JZ A
MOV DH,1
JMP SHORT B
A: MOV DH,0
B: …
18.设X=X7X6X5X4X3X2X1X0,Y=Y7Y6Y5Y4Y3Y2Y1Y0,Z=Y7Y6Y5X4X3X2X1X0,其中X、Y、Z均为二进制数,试编写已知X和Y求Z的程序。
答案:
MOV AL,X
AND AL,00011111B
MOV BL,Y
AND BL,11100000B
OR AL,BL
MOV Z,AL
19.使用指令REP MOVSB指令时,请问:
⑴指令完成什么功能?
⑵要求哪些初始条件?
答案:
⑴指令完成传送字符串功能。
⑵要求设置以下初始条件:CX、DF、SI、DI、DS、ES
20.在执行字符串指令时,何时需要DF标志置1?何时需要清0?
答案:
地址指针减量时使DF=1,增量时使DF=0。
25.假定AX和BX中是有符号数据,CX和DX中是无符号数据,请为下列各项确定CMP 和条件转移指令:
⑴CX值超过DX转移。
⑵AX值未超过BX转移。
⑶DX值为0转移。
⑷CX值等于小于DX转移。
答案:
⑴CMP CX,DX
JA L1 ;也可以用JNBE L1指令
…
L1: …
⑵CMP AX,BX
JNG L1 ;也可以用JLE L1指令
…
L1: …
⑶CMP DX,0
JZ L1
…
L1: …
⑷CMP CX,DX
JBE L1 ;也可以用JNA L1指令
…
L1: …
26.试分析下面的程序段完成什么功能?
MOV CL,4
SHL DX,CL
MOV BL,AH
SHL AL,CL
SHR BL,CL
OR DL,BL
答案:
把DX和AX一对寄存器所形成的32位内容左移四位。其中DX中为高16位,AX中为低16位。
第四章习题答案
2.一个.EXE文件至少应该包括代码段。
3.一个.EXE文件的主过程必须是FAR型。
4.可执行程序的END后必须是主过程名。
10.各语句为变量分配的字节数为:
⑴ 1 ⑵ 1 ⑶ 3 ⑷ 82 ⑸ 6
⑹ 8 ⑺ 4 ⑻ 2 ⑼ 2
11
12.⑴ N1=15
⑵ AL=123
⑶错,两个操作数不能同时为存储器操作数。
⑷ AL=33H
⑸ DX=7
⑹ N5=000EH
⑺错,类型不匹配。
⑻错,类型不匹配。
⑼错,NUM1是一个常数。
⑽错,由EQU定义的符号在同一个程序中不能再定义。
18.L1的值为6,L2的值为3。