我试图在一些操作后返回数字,但编译器返回push esp,push num,pop esp,pop num invalid instruction operands ,尽管MASM allows push . 它's runing on x64, MASM, with Visual Studio (Debug mode x64). What'错了吗?
PUBLIC from_asm
EXTERN puts:PROC
EXTERN exit:PROC
.data
num dd ?
.code
from_asm PROC
mov EAX, not -30
or EAX,21
mov EBX, not 21
and EAX, EBX
or EAX, 23
mov num, eax
mov esp, dword ptr [num]
push esp
push num
call puts
pop num
pop esp
ret
from_asm ENDP
END
P.S. 我检查过,所有操作 EAX 和 num 包含数字31 .