文档库 最新最全的文档下载
当前位置:文档库 › 张雪兰等著汇编语言程序设计第3、4章习题答案

张雪兰等著汇编语言程序设计第3、4章习题答案

张雪兰等著汇编语言程序设计第3、4章习题答案
张雪兰等著汇编语言程序设计第3、4章习题答案

第三章习题答案

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。

相关文档