
1. 根据下列要求编写一个汇编语言程序:: (1) 代码段的段名为COD_SG (2) 数据段的段名为DAT_SG (3) 堆栈段的段名为STK_SG
(4) 变量HIGH_DAT所包含的数据为95
(5) 将变量HIGH_DAT装入寄存器AH,BH和DL (6) 程序运行的入口地址为START 答案:
DAT_SG SEGEMNT HIGH_DAT DB 95 DAT_SG ENDS ;
STK_SG SEGMENT DW 64 DUP(?) STK_SG ENDS ;
COD_SG SEGMENT MAIN PROC FAR
ASSUME CS: COD_SG, DS: DAT_SG, SS: STK_SG START: MOV AX, DAT-SG MOV DS, AX
MOV AH, HIGH_DAT MOV BH, AH
MOV DL, AH MOV AH, 4CH INT 21H
MAIN ENDP COD_SG ENDS END START
2. 指出下列程序中的错误:
STAKSG SEGMENT DB 100 DUP(?) STA_SG ENDS
DTSEG SEGMENT DATA1 DB ? DTSEG END
6
CDSEG SEGMENT MAIN PROC FAR
START: MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END 答案: 改正后:
STAKSG SEGMENT DB 100 DUP(?) STAKSG ENDS
DTSEG SEGMENT DATA1 DB ?
DTSEG ENDS CDSEG SEGMENT MAIN PROC FAR
ASSUME CS: CDSEG, DS: DTSEG, SS: STAKSG START: MOV AX, DTSEG
MOV DS, AX MOV AL, 34H ADD AL, 4FH MOV DATA1, AL MOV AH, 4CH INT 21H
MAIN ENDP CDSEG ENDS
END S
3. 将下列文件类型填入空格:
(1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map
编辑程序输出的文件有______________________________________; 汇编程序输出的文件有______________________________________; 连接程序输出的文件有______________________________________。 答案:
编辑程序输出文件: (4)
7
汇编程序输出文件: (1), (3), (5) 连接程序输出文件: (2), (6)
4. 下列标号为什么是非法的?
(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 答案:
8
(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 . . .
9
请写出上述两条指令执行后, BX寄存器中的内容。 答案:
MOV BX,TABLE_ADDR ; 执行后(BX)=1234H
LEA BX,TABLE_ADDR ; 执行后(BX)=OFFSET TABLE_ADDR
11. 设(DS)=1B00H, (ES)=2B00H, 有关存储器地址及 其内容如右图
所示,请用两条指令把X装入AX寄存器。 8000H 1B00:2000H
2B00H 1B00:2002H
. . X 2B00:8000H
答案:
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开始的字单元中。
MOV LEA BX, TABLE_ADDR BX, TABLE_ADDR
10
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库微机原理及应用习题库与答案(2)在线全文阅读。
相关推荐: