第四章习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4-1下边的程序是实现AX←AL*12的操作,请判断其中语句的正误并改正。

XOR AX, AX

SAL AX, 2

MOV BX, AX

SAL AX, 1

ADC AX, BX

解:

XOR AH,AH ;对AX的高八位清零。

SAL AL,1

SAL AL,1

MOV CL,2

SAL AL,CL

4-2对于给定的符号定义,指出下列指令的错误,并说明原因。

A EQU 505

B DB ?

C DB 64H

(1)MOV A, AX (2)MOV B, AX

(3)MOV AX, B (4)CMP C, AX

(5)CMP A, C (6)CMP AX, C

解:

(1)A是符号常量,不能做目标操作数地址;

(2)类型不匹配;

(3)类型不匹配;

(4)类型不匹配;

(5)目标数不能用立即数;

(6)格式不匹配,C是字节类型,而AX是字类型。类型不匹配

4-3试问下列伪指令在存储区中分别为各变量分配多少字节?

VR1 DW 10

VR2 DW 6 DUP(?),66,88

VR3 DD 10 DUP(?)

VR4 DB 2 DUP(?,8 DUP(0))

解:

为VR1分配两个字节;为VR2分配十六个字节;为VR3分配四十个字节;为VR4分配十八个字节。

4-4对于给定的数据定义,变量R1和R2的值是多少?

(1)A1 DB 1,2,3,’ABC’

A2 DB 0

R1 EQU A2-A1

(2)K1 DW ?

K2 DB 6 DUP(?)

K3 DD ?

R2 EQU $-K1

解:

R1=6;

R2=12.

4-5试用示意图来说明下列变量在存储器中的分配情况.

V AR1 DW 9

V AR2 DW 4 DUP(?),2

CONT EQU 2

V AR3 DD CONT DUP(?)

V AR4 DB 2 DUP(?,CONT DUP(0),’AB’)

解:

设段地址是3000,V AR1的首地址是1000,则各变量在存储器中的分配情况如下:

4-7写出以下指令在汇编后目标程序中对应的指令.

(1)MOV AX, 1234H GT 1024H

(2)ADD CX, 1024 SHR 4

(3)OR AL, 3 AND 47H

(4)AND BL, NOT(7 OR 54H)

(5)MOV AX, HIGH(1234H+5)

(6)MOV AX, HIGH 1234H+5

解:

(1)MOV AX,0FFFFH

(2)ADD CX,40H

(3)OR AL,3H

(4)AND BL,0A8H

(5)MOV AX, 12H

(6)MOV AX,17H

4-8数据段有如下语句:

ORG 10H

CON EQU 15H

V AR1 DW $,20H

V AR2 DW V AR1+CON+5H

上述语句经过汇编后,V AR1字单元和V AR2字单元的值分别是多少?

解:

V AR1的值是0010H,V AR2的值是002AH。

4-10某存储区中存有20个字节的带符号数,试编写一个程序分别求出其绝对值并将结果放回原处。

解:

V AR DB ?,?,…

COUNT EQU $-V AR

MOV BX, 0000H

MOV CX,COUNT

LEA DI,V AR

A: MOV AL,[DI+BX]

MOV AH, AL

AND AH, 80H

JNZ B ;Z=0,即是正数,检查下一位

NEG AL

MOV [DI+BX], AL

B: INC BX

LOOP A

MOV AX, 4C00H

INT 21H

4-11试编写一个程序,将AX中各位取反,然后统计出AX中“0”的个数,将结果保存到CL中。

解:

MOV CX, 0000H

NOT AX ;对AX各位取反

MOV BX, AX

A: SAL BX

JC B ;C=1,即对应位为1

INC CL

B: INC CH

CMP CH, 10H

JE C ;CH=16,即检验到了最后一位。

JMP A

C: MOV AH, 4CH

INT 21H

4-12编写程序求级数1+2+3+4+------的前N项和刚大于1000的项数N。

解:(说明各个用到的寄存器的作用,写出完整程序)

MOV AX, 0000H

MOV BX, 0000H

A: INC BX

ADD AX, BX

CMP AX,3E8H

JC A ;小于3E8H(1000),继续累加

MOV AX,BX ;将项数N存入AX

4-13试编程统计DAT数据区中正数、0、负数的个数,分别放在CONT1、CONT2和CONT3字节单元中。

解:

设这些数据都是字节型的,且个数为COUNT

CONT1 DB 0

CONT2 DB 0

CONT3 DB 0

LEA DI, DAT

MOV CX, COUNT

A: MOV AX, [DI]

CMP AX, 0000H

JZ B ;ZF=1,则这个数是0

JL C ;ZF=0,则这个数是负数

INC CONT1

JMP D

B: INC CONT2

JMP D

相关文档
最新文档