汇编语言传送指令之一,与它相关的指令还有PUSHA,POPA/POPAD.它们配合使用用于8个16位/32位通用寄存器与堆栈之间的数据传送.
PUSHAD指令压入32位寄存器,使他们按照EDI,ESI,EBP,ESP,EBX,EDX,ECX,最后是EAX的顺序出现在堆栈中。
要注意,PUSHA/PUSHAD,POPA/POPAD从80286处理器开始使用.执行PUSHA/PUSHAD,POPA/POPAD时,其堆栈指针SP将分别需要减16/32和加16/32.
PUSHAD POPAD不会影响ESP
' OperandSize 32 (* PUSHAD instruction *)
' THEN
' Temp (ESP);
' Push(EAX);
' Push(ECX);
' Push(EDX);
' Push(EBX);
' Push(Temp);
' Push(EBP);
' Push(ESI);
' Push(EDI);
' ELSE (* OperandSize 16, PUSHA instruction *)
' Temp (SP);
' Push(AX);
' Push(CX);
' Push(DX);
' Push(BX);
' Push(Temp);
' Push(BP);
' Push(SI);
' Push(DI);
' FI