汇编语言第四章答案.doc
文本预览下载声明
4.1 指出下列指令的错误:
(1) MOV AH, BX ;寄存器类型不匹配
(2) MOV [BX], [SI] ;不能都是存储器操作数
(3) MOV AX, [SI][DI] ;[SI]和[DI]不能一起使用
(4) MOV MYDAT [BX][SI], ES:AX ;AX寄存器不能使用段超越
(5) MOV BYTE PTR [BX], 1000 ;1000超过了一个字节的范围
(6) MOV BX, OFFSET MYDAT [SI] ;MYDAT [SI]已经是偏移地址,不能再使用OFFSET
(7) MOV CS, AX ;CS不能用作目的寄存器
(8) MOV ECX, AX ;两个操作数的数据类型不同
答:见注释。
4.2 下面哪些指令是非法的?(假设OP1,OP2是已经用DB定义的变量)
(1) CMP 15, BX ;错,立即数不能作为目的操作数
(2) CMP OP1, 25
(3) CMP OP1, OP2 ;错,不能都是存储器操作数
(4) CMP AX, OP1 ;错,类型不匹配,应为CMP ax, word ptr op1
答:见注释。
4.3 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?
(1) MOV BP, AL ;错,寄存器类型不匹配
(2) MOV WORD_OP [BX+4*3][DI], SP
(3) MOV WORD_OP1, WORD_OP2 ;错,不能都是存储器操作数
(4) MOV AX, WORD_OP1[DX] ;错,DX不能用于存储器寻址
(5) MOV SAVE_WORD, DS
(6) MOV SP, SS:DATA_WORD [BX][SI]
(7) MOV [BX][SI], 2 ;错,[BX][SI]未指出数据类型
(8) MOV AX, WORD_OP1+WORD_OP2
(9) MOV AX, WORD_OP1-WORD_OP2+100
(10) MOV WORD_OP1, WORD_OP1-WORD_OP2
答:见注释。
4.4 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1) ADD VAR1, VAR2 ;不能都是存储器操作数
(2) SUB AL, VAR1 ;数据类型不匹配
(3) JMP LAB [SI] ;LAB是标号而不是变量名,后面不能加[SI]
(4) JNZ VAR1 ;VAR1是变量而不是标号
(5) JMP NEAR LAB ;应使用NEAR PTR
答:见注释。
4.5 画图说明下列语句所分配的存储空间及初始化的数据值。
(1) BYTE_VAR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)
(2) WORD_VAR DW 5 DUP(0,1,2),?,-5,‘BY’,‘TE’,256H
答:答案如下图所示。
4.6 试列出各种方法,使汇编程序把5150H存入一个存储器字中(如:DW 5150H)。
4.5题答案42H
59H
54H
45H
0DH
EEH
00H
-
01H
02H
01H
02H
-
00H
-
01H
02H
01H
02H
-
BYTE_VAR00H
00H
01H
00H
02H
00H
┇
┇
┇
-
-
FBH
FFH
00H
59H
42H
45H
54H
56H
02HWORD_VAR将上面
内容再
重复4次答:DW 5150H
DB 50H, 51H
DB ‘PQ’
DW ‘QP’
ORG 5150H
DW $
4.7 请设置一个数据段DATASG,其中定义以下字符变量或数据变量。
(1) FLD1B为字符串变量:‘personal computer’;
(2) FLD2B为十进制数字节变量:32;
(3) FLD3B为十六进制数字节变量:20;
(4) FLD4B为二进制数字节变量
(5) FLD5B为数字的ASCII字符字节变量:32654;
(6) FLD6B为10个零的字节变量;
(7) FLD7B为零件名(ASCII码)及其数量(十进制数)的表格:
PART1 20
PART2 50
PART3 14
(8) FLD1W为十六进制数字变量:FFF0;
(9) FLD2W为二进制数的字变量
(10) FLD3W为(7)零件表的地址变量;
(11) FLD4W为包括5个十进制数的字变量:5,6,7,8,9;
(12) FLD5W为5个零的字变量;
(13) FLD6W为本段中字数据变量和字节数据变量之间的地址差。
答:DATASG SEGMENT
FLD1B DB ‘personal compu
显示全部