我试图找到我收到此错误的原因(A2032),而我正试图通过数组来使用它。代码的作用非常简单,但我无法找到使其工作的方法,据我所知,我使用数组的方式是正确的(根据我们的老师的说法)
.386
.model flat, C
.code
isItValid PROC
push EBP
mov [EBP], ESP
push EAX ; R1->R5
push EBX ; TMP
ADD EBP, [EBP+8]
;1
MOV EBX, EBP+8
NOT EBX ;NOT TMP
MOV EAX, EBX
;2
MOV EBX, EBP+4 ; EBX -> R2
OR EAX, EBX ; OR TMP, R1
;3
MOV EBX, EBP +4 ; EBX -> R2
XOR EAX, EBX ; XOR TMP, R2
;4
MOV EBX, EBP+4 ; EBX -> R3
NOT EBX ; NOT R3
XOR EAX, EBX ;XOR TMP, NOT(R3)
NOT EAX ; NOT(TMP XOR NOT(R3))
;5
MOV EBX, EBP+4 ; EBX -> R4
OR EAX, EBX ; TMP OR R4
;6
MOV EBX, EBP+4 ; EBX -> R5
CMP EAX, EBX
JZ CONS
MOV EBX, 0
CONS:
MOV EBX, 1
POP EAX
POP EBX
POP EBP
ret
isItValid ENDP
END
答案 0 :(得分:0)
这一行(和其他类似的)
MOV EBX, EBP+8
是对EBP
寄存器的无效使用。您不能将寄存器值加常量移动到另一个寄存器。如果您尝试访问堆栈,则该行必须与正上方正确实现的行相似
MOV EBX, [EBP+8]
或者,如果您打算将EBP+8
移至EBX
,请将此作为
MOV EBX, EBP
ADD EBX, 8