push dword ptr [eax + 22]是什么意思?

我知道,例如,push eax会将eax保存到堆栈,并将esp递减4. push dword ptr意味着它需要推送4个字节,但后来我感到困惑。 另外,如果它是[esi + 22]这是否是同样的事情?


push指令与许多其他x86指令非常相似,可以采用各种操作数:即时值,寄存器和内存地址:

push 10                 ; pushes the value 10 (32 bits in 32-bit mode)
push eax                ; pushes the contents of the 32-bit register eax
push DWORD [ebx + 42]   ; pushes 32 bits from the memory location ebx + 42

登记表从寄存器的大小推断出大小。 内存表单需要具有指定的大小(例如,这里以英特尔语法显示)。 对于即时值,操作数大小为16或32位; 当前模式是默认设置,另一个大小可以明确选择(例如,在32位模式下push WORD 10 )。


push dword ptr [eax+22]会将esp递减4,然后从内存位置ebx + 22保存4bytes数据。 和pop eax做以相反的方式,首先移动在storeed比特espesp + 3eax ,并递增esp由4。

链接地址: http://www.djcxy.com/p/86845.html

上一篇: What does push dword ptr [eax+22] mean?

下一篇: Can anyone explain this assembly code