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
寄存器表单从寄存器的大小推断大小。内存形式需要具有指定的大小(例如例如,这里以Intel语法示出)。对于立即值,操作数大小为16位或32位;当前模式是默认的,并且可以明确地选择其它尺寸(例如,例如32位模式下的push WORD 10)。
2条答案
按热度按时间7qhs6swi1#
push
指令与许多其他x86指令非常相似,可以接受各种操作数:立即值、寄存器和存储器地址:寄存器表单从寄存器的大小推断大小。内存形式需要具有指定的大小(例如例如,这里以Intel语法示出)。对于立即值,操作数大小为16位或32位;当前模式是默认的,并且可以明确地选择其它尺寸(例如,例如32位模式下的
push WORD 10
)。1tuwyuhd2#
push dword ptr [eax+22]
将esp
递减4,然后从存储器位置eax + 22
保存4字节的数据。pop eax
以相反的方式执行,它首先将存储在esp
中的位移动到esp + 3
,从而移动到eax
,并将esp
递增4。