第四章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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