汇编语言程序设计习题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言程序设计习题解答
汇编语言程序设计习题解答
1.指出下列指令的错误:
(1)MOV AH,BX
(2)MOV [BX],[SI]
(3)MOV AX,[SI][DI]
(4)MOV MYDAT[BX][SI],ES:AX
(5)MOV BYTE PTR[BX],1000
(6)MOV BX,OFFSET MYDAT[SI]
(7)MOV CS,AX
答:(1)MOV AH,BX AH 为八位,BX为16位
(2)MOV [BX],[SI] 两个操作数不能都是存储单元
(3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器
(4)MOV MYDAT [BX][SI],E8:AX ES
ES 后应为一个变址寄存器,表示偏移量
(5)MOV BYTE PTR[BX],1000
BYTE 说明时BX进行字节操作。

而1000为字
(6)MOV BX,OFFSET MYDAT [SI]
OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。

(7)MOV 是数据寻址,不应用程序段寄存器CS.
2.下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量)
(1)CMP l5,BX
(2)CMP OPl,25
(3)CMP OPl,OP2
(4)CMP AX,OPl
答:(1) CMP 15,BX
非法,两个操作数不能一个为字,一个为字节
(2)CMP OP1,25 正确
(3)CMP OP1,OP2 正确
(4)CMP AX,OP1
非法,两操作数不能一个为字,一个为字节
3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?
(1)MOV BP,AL
(2)MOV WORD_OP[BX+4*3][DI],SP
(3)MOV WORD_OPl,WORD_OP2
(4)MOV AX,WORD_OPl[DX]
(5)MOV SAVE_WORD,DS
(6)MOV SP,SS:DATA_WORD[BX][SI]
(7)MOV [BX][SI],2
(8)MOV AX,WORD_ OPl+WORD_OP2
(9)MOV AX,WORD_ OPl-WORD_OP2+100
(10)MOV WORD_ OPl,WORD_ OPl-WORD_OP2
答:(1)MOV BP,AL
非法,BP为16位 AL为八位
(2)MOV WORD_OP[BX+4*3][DI] ,SP
正确
(3)MOV WORD_OP1 ,WORD_OP2
非法,两个操作数不能都是变量
(4)MOV AX , WORD_OP1[DX]
非法,[DX]应改为[BX],[BP],[SI]或[DI],则为寄存器相对寻址。

(5)MOV SAVE_WORD ,DS
非法,未指明数据段地址DS的偏移量
(6)MOV SP,SS:DATA_WORD[BX][SI]
非法,SS与[BX],[SI]不匹配,SS的偏移量用SP
(7)MOV [BX][SI] ,2
正确
(8) MOV AX,WORD_OP1+WORD_OP2 正确
(9) MOV AX, WORD_OP1—WORD_OP2+100 正确
(10)MOV WORD_OP1,WORD_OP1—WORD_OP2
非法
4.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1)ADD VAR1,VAR2
(2)SUB AL,VAR1
(3)JMP LAB[SI]
(4)JNZ VARl
(5)JMP NEAR LAB
答:(1) ADD VAR1,VAR2
ADD指令中,目的操作数必须是寄存器或存储单元。

(2)SUB AL,VAR1
AL为8位的,而VAR为字变量16位
(3)JMP LAB [SI]
格式不对,LAB处应为一偏移量,而不是标号。

(4)JNZ VAR1
JNZ 为非零转移,应转移到某个程序段,故后面应为一个标号。

(5)JMP NEAR LAB
段内直接转移,格式应为 JMP NEAR PTR LAB。

相关文档
最新文档