文档详情

汇编语言第四章答案.doc

发布:2017-06-20约6.24千字共8页下载文档
文本预览下载声明
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_VAR 00H 00H 01H 00H 02H 00H ┇ ┇ ┇ - - FBH FFH 00H 59H 42H 45H 54H 56H 02H WORD_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
显示全部
相似文档