可能重复:
error A2070:invalid instruction operands with MASM
Need help understanding conditional directives with MASM
我正在尝试实现以下基本代码块。我试图实现一个基本的if,elseif,elseif块来学习在MASM中使用条件指令,但似乎无法使逻辑工作。
.if a > b
sub a, 1
.elseif b >= c1
sub b, 2
.elseif c1 > d
mov eax, d
add c1, eax
.else
mov eax, d
cdq
mov ebx, 2
idiv ebx
mov d, eax
.endif
在.if和.elseif行上我得到上述错误A2070。
为什么呢?我的代码的实际问题是什么?
答案 0 :(得分:1)
MASM最有可能希望比较的实体可以在单个CMP
指令中直接编码。 CMP
支持以下几对操作数:
reg
是注册,mem
是内存位置,imm
是数字常量,reg/mem
是reg
或{{1} }。因此,您不能直接比较两个内存位置或两个常量,mem
指令不支持这样的操作数组合。