NASM 2.05 based x86 Instruction Reference[ch288]
A.5.264 PUSHAx: Push All General-Purpose Registers PUSHA ; 60 [186] PUSHAD ; o32 60 [386] PUSHAW ; o16 60 [186] PUSHAW pushes, in succession, AX, CX, DX, BX, SP, BP, SI and DI on the stack, decrementing the stack pointer by a total of 16. PUSHAD pushes, in succession, EAX, ECX, EDX, EBX, ESP, EBP, ESI and EDI on the stack, decrementing the stack pointer by a total of 32. In both cases, the value of SP or ESP pushed is its _original_ value, as it had before the instruction was executed. PUSHA is an alias mnemonic for either PUSHAW or PUSHAD, depending on the current BITS setting. Note that the registers are pushed in order of their numeric values in opcodes (see section A.2.1). See also POPA (section A.5.245).