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 ) .
2 回答
与许多其他x86指令非常相似,
push
指令可以采用各种操作数:立即值,寄存器和内存地址:寄存器形式从寄存器的大小推断出大小 . 存储器形式需要具有指定的大小(例如,在此处以英特尔语法显示) . 对于立即值,操作数大小为16或32位;当前模式是默认模式,可以明确选择其他大小(例如,32位模式下的
push WORD 10
) .push dword ptr [eax+22]
将esp
减少4,然后从内存位置ebx + 22
保存4bytes数据 . 并且pop eax
以相反的方式执行,首先将esp
中存储的位移动到esp + 3
为eax
,然后将esp
递增4 .