MASM中的Push/Pop vs Mov

use*_*345 2 x86 assembly mov

一个简单的问题,但我不知道答案.

原因是什么:

push wParam
pop char
Run Code Online (Sandbox Code Playgroud)

其中wParam,定义为WPARAM类型,char定义为WPARAM类型.

为什么我不能简单

mov char, wParam
Run Code Online (Sandbox Code Playgroud)

我有一种感觉它与地址有关,但我无法证明这一点.当我尝试使用该mov语句时,MASM吐出一个非描述性错误.

nrz*_*nrz 5

因为两者都是内存地址,所以在x86汇编中没有mov mem,mem(mov char,wParam在这种情况下)这样的指令.

因此,为此,您需要使用push&pop,或者首先将值移入某个寄存器mov reg,mem以及从该寄存器到存储器mov mem,reg.