汇编课后答案
余年寄山水
785次浏览
2021年01月28日 19:53
最佳经验
本文由作者推荐
人工智能电影观后感-热爱劳动手抄报
习题
4
4.1
假设下列指令中的所有标识符均为类型属性为字的变量 ,
请指出下列指令中哪些是
非法的
?
它们的错误是什么
?
⑴
MOV BP
,
AL
⑵
MOV WORD_OP[BX+4*3][DI]
,
SP
⑶
MOV WORD_OP1
,
WORD_OP2
⑷
MOV AX
,
WORD_OP1[DX]
⑸
MOV SAVE WORD
,
DS
⑹
MOV SP
,
SS
:
DATA_WORD[BX][SI]
⑺
MOV [BX][SI]
,
2
⑻
MOV AX
,
WORD_OP1+WORD_OP2
⑼
MOV AX
,
WORD_OP1-WORD_OP2+100
⑽
MOV WORD_OP1
,
WORD_OP1-WORD_OP2
【解】
:⑴
MOV BP
,
AL
两个操作数不匹配
⑵
MOV WORD_OP[BX+4*3][DI]
,
SP
⑶
MOV WORD_OP1
,
WORD_OP2
两个内存单元之间不能直接传送数据
⑷
MOV AX
,
WORD_OP1[DX]
⑸
MOV SAVE WORD
,
DS
⑹
MOV SP
,
SS
:
DATA_WORD[BX][SI]
当基址为
BX
时,选取
DS
寄存器
⑺
MOV [BX][SI]
,
2
⑻
MOV AX
,
WORD_OP1+WORD_OP2
⑼
MOV AX
,
WORD_OP1-WORD_OP2+100
⑽
MOV WORD_OP1
,
WORD_OP1-WORD_OP2
4.2 假设
VAR1
和
VAR2
为字变量,
LAB
为标号,试 指出下列指令的错误之处:
⑴
ADD VAR1
,
VAR2
⑵
SUB AL,VAR1
⑶
JMP LAB[SI]
⑷
JNZ VAR1
⑸
JMP NEAR LAB
【解】
:⑴
ADD VAR1
,
VAR2
ADD
两个操作数不能同时为存储单元,
MOV AX, VAR1
ADD AX, VAR2
⑵
SUB AL,VAR1
两个操作数不匹配
SUB AX, VAR1
⑶
JMP LAB[SI]
LAB
与
[SI]
不能相加
JMP WORD PTR [SI]
⑷
JNZ VAR1
JNZ
后面应是标号,不应是变量
JNZ LAB
⑸
JMP NEAR LAB
缺少
PTR
运算符
1
JMP NEAR PTR LAB
4.3
画图说明下列语句所分配的存储空间及初始化的数据值。
⑴
BYTE_VAR DB
’B
YTE
’,
12
,
-12H
,
3 DUP(0
,
?
,
2 DUP(1
,
2)
,
?)
⑵
WORD_VAR DW 5 DUP(0
,
1
,
2)
,
?
,
-5< br>,
,
'BY'
,
'TE'
,
256H
【解】
:
(1) (2)
WORD_V
AR
BYTE_V
AR
41H
B
00H
59H
Y
54H
T
45H
E
0CH
12
F4H
-
12H
00H
0
-
01H
1
02H
2
01H
1
02H
2
00H
0
-
01H
1
02H
2
01H
1
02H
2
00H
0
-
01H
1
02H
2
01H
1
02H
2
4.4
假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?)
COUNT DD ?
PLENTH EQU $$-PARTNO
问
PLENTH
的值为多少
?
它表示什么意义
?
:
PLENTH
的值为
22
,它表示数据的个数。
4.5
有符号定义语句如下:
BUFF DB 1
,
2
,
3
,’
123
’
EBUFF DB 0
L EQU EBUFF- BUFF
问
L
的值是多少
?
2
00H
0
01H
00H
1
02H
00H
2
…
30
个字节
00H
00H
0
01H
00H
1
02H
00H
2
-
-
2
FBH
FFH
-
5
41H
00H
B
59H
00H
Y
54H
00H
T
45H
00H
E
56H
02H
256H
【解】