(1) GET.DATA (2) 1_NUM (3) TEST-DATA (4) RET (5) NEW ITEM
答案:
非法标号: (1)因为'.'只允许是标号的第一个字符
(2)第一个字符不能为数字
(3)不允许出现'-'
(4)不能是保留字,如助记符
(5)不能有空格
5. 下面的数据项定义了多少个字节?
DATA_1 DB 6 DUP(4 DUP(0FFH))
答案:
24字节
6. 对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?
DTSEG SEGMENT | DTSEG SEGMENT
ORG 10H | ORG 10H
DATA1 DB 72H | DATA1 DW 7204H
DB 04H | DTSEG ENDS
DTSEG ENDS |
答案:不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.
7. 下面的数据项设置了多少个字节?
(1) ASC_DATA DB '1234' (2) HEX_DATA DB 1234H
答案: (1) 设置了4个字节 (2) 设置了2个字节
8. 执行下列指令后, AX寄存器中的内容是什么?
TABLE DW 10,20,30,40,50
ENTRY DW 3
.
.
.
MOV BX,OFFSET TABLE
ADD BX,ENTRY
MOV AX,[BX]
答案: (AX)=40
9. 指出下列指令的错误:
(1) MOV AH,BX (2) MOV [SI],[BX] (3) MOV AX,[SI][DI]
(4) MOV AX,[BX][BP] (5) MOV [BX],ES:AX (6) MOV BYTE PTR[BX],1000
(7) MOV AX,OFFSET [SI] (8) MOV CS,AX (9) MOV DS,BP
答案: (1) 源、目的字长不一致
(2) 源、目的不能同时为存贮器寻址方式
(3) 基址变址方式不能有 SI和DI的组合
(4) 基址变址方式不能有 BX和BP的组合
(5) 在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式
(6) 1000超出一个字节的表数范围
(7) OFFSET只用于简单变量,应去掉
(8) CS不能作为目的寄存器
(9) 段地址不能直接送入数据段寄存器
10. DATA SEGMENT
TABLE_ADDR DW 1234H
DATA ENDS
MOV BX, TABLE_ADDR
LEA BX, TABLE_ADDR
请写出上述两条指令执行后, BX寄存器中的内容。
答案:
MOV BX,TABLE_ADDR ; 执行后(BX)=1234H
LEA BX,TABLE_ADDR ; 执行后(BX)=OFFSET TABLE_ADDR
11. 设(DS)=1B00H, (ES)=2B00H, 有关存储器地址及其内容如下图所示,请用两条指令把X装入AX寄存器。
1B00:2000H 8000H
1B00:2002H 2B00H
.
.
2B00:8000H X
答案:
LES BX, [2000H]
MOV AX, ES: [BX]
12. 变量DATAX和DATAY定义如下:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
按下述要求写出指令序列:
(1) DATAX和DATAY中的两个字数据相加, 和存放在DATAY和DATAY+2中。
(2) DATAX和DATAY中的两个双字数据相加, 和存放在DATAY开始的字单元中。
(3) DATAX和DATAY两个字数据相乘(用MUL)。
(4) DATAX和DATAY两个双字数据相乘(用MUL)。
(5) DATAX除以23(用DIV)。
(6) DATAX双字除以字DATAY(用DIV)。
答案:
(1) MOV AX, DATAX
ADD AX, DATAY
MOV BX, DATAX+2
ADD BX, DATAY+2
MOV DATAY, AX
MOV DATAY+2, BX
(2) MOV AX, DATAX
ADD DATAY, AX
MOV AX, DATAX+2
ADC DATAY+2, AX
(3) MOV AX, DATAX
MUL DATAY