判断下列指令是否正确。若不正确,指出错误原因 (1)MOVAX,[EBX] (2)MOVSI,DL (3)MOVEBP,[ESP][EAX*3] (4)LEAAX,3006H (5)MOV[BP][DI],0 (6)MOV[SI],[DI] (7)MOVES,1000H (8)MOVAX,X+2 (9)MOVAX,CX+2 (10)MOV[EAX][EAX*2],AL
正确答案:
(1)指令MOVAX,[EBX]是正确的。
(2)指令MOVSI,DL是错误的,两个操作数类型不匹配。
(3)指令MOVEBP,[ESP][EAX*3]是错误的,比例因子不能为3。
(4)指令LEAAX,3006H是错误的,LEA指令的源操作数必须为内存操作数。
(5)指令MOV[BP][DI],0是错误的,操作数类型无法确定。
(6)指令MOV[SI],[DI]是错误的,不能同时出现两个内存操作数。
(7)指令MOVES,1000H是错误的,装载段寄存器时,源操作数不能为立即数。
(8)如果“X”是用常数表达式定义的符号(例如:XEQU5+6),或者是用“DW”定义的内存变量,指令MOVAX,X+2是正确的。否则这条指令是错误的。
(9)指令MOVAX,CX+2是错误的,源操作数表达式CX+2不是一个可以直接计算的“常数表达式”。
(10)指令MOV[EAX][EAX*2],AL是正确的。
(2)指令MOVSI,DL是错误的,两个操作数类型不匹配。
(3)指令MOVEBP,[ESP][EAX*3]是错误的,比例因子不能为3。
(4)指令LEAAX,3006H是错误的,LEA指令的源操作数必须为内存操作数。
(5)指令MOV[BP][DI],0是错误的,操作数类型无法确定。
(6)指令MOV[SI],[DI]是错误的,不能同时出现两个内存操作数。
(7)指令MOVES,1000H是错误的,装载段寄存器时,源操作数不能为立即数。
(8)如果“X”是用常数表达式定义的符号(例如:XEQU5+6),或者是用“DW”定义的内存变量,指令MOVAX,X+2是正确的。否则这条指令是错误的。
(9)指令MOVAX,CX+2是错误的,源操作数表达式CX+2不是一个可以直接计算的“常数表达式”。
(10)指令MOV[EAX][EAX*2],AL是正确的。
答案解析:有
微信扫一扫手机做题