第四章习题答案.doc
文本预览下载声明
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 AX,1
SAL AX,1
MOV CL,2
SAL AX,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试用示意图来说明下列变量在存储器中的分配情况.
VAR1 DW 9
VAR2 DW 4 DUP(?),2
CONT EQU 2
VAR3 DD CONT DUP(?)VAR4 DB 2 DUP(?,CONT DUP(0),’AB’)
解:
设段地址是3000YH,VAR1的首地址是1000H,则各变量在存储器中的分配情况如下:
地址3000:1018H
地址
3000:1018H
3000:1019H
3000:101AH
3000:101BH
3000:101CH
3000:101DH
3000:101EH
3000:101FH
3000:1020H
存储内容
‘B’
?
0H
0H
‘A’
‘B’
‘B’
存储内容
09H
00
?
?
?
?
?
?
?
?
2H
00
?
?
?
?
?
?
?
?
?
0
0
‘A’
地址
3000:1000H
3000:1001H
3000:1002H
3000:1003H
3000:1004H
3000:1005H
3000:1006H
3000:1007H
3000:1008H
3000:1009H
3000:100AH
3000:100BH
3000:100CH
3000:100DH
3000:100EH
3000:100FH
3000:1010H
3000:1011H
3000:1012H
3000:1013H
3000:1014H
3000:1015H
3000:1016H
3000:1017H
VAR1
VAR1
VAR2
VAR2
VAR3
VAR3
VAR4
VAR4
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
VAR1 DW $,20H
VAR2 DW VAR1+CON+5H
上述语句经过汇编后,VAR1字单元和VAR2字单元的值分别是多少?
解:
VAR1的值是0010H,VAR2的值是002AH。
4-10某存储区中存有20个字节的带符号数,试编写一个程序分别求出其绝对值并将结果放回原处。
解:
VAR DB ?,?,…
COUNT EQU $-
显示全部