Opcode Instruction Clocks Description 61 POPA 24 Pop DI, SI, BP, SP, BX, DX, CX, and AX 61 POPAD 24 Pop EDI, ESI, EBP, ESP, EDX, ECX, and EAX
IF OperandSize = 16 (* instruction = POPA *) THEN DI := Pop(); SI := Pop(); BP := Pop(); throwaway := Pop (); (* Skip SP *) BX := Pop(); DX := Pop(); CX := Pop(); AX := Pop(); ELSE (* OperandSize = 32, instruction = POPAD *) EDI := Pop(); ESI := Pop(); EBP := Pop(); throwaway := Pop (); (* Skip ESP *) EBX := Pop(); EDX := Pop(); ECX := Pop(); EAX := Pop(); FI;
POPAD pops the eight 32-bit general registers. The ESP value is discarded instead of loaded into ESP. POPAD reverses the previous PUSHAD, restoring the general registers to their values before PUSHAD was executed. The first register popped is EDI.
up:
Chapter 17 -- 80386 Instruction Set
prev: POP Pop a Word from the Stack
next:
POPF/POPFD Pop Stack into FLAGS or EFLAGS Register