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

微信扫一扫手机做题