7-6 Vol. 1
PROGRAMMING WITH GENERAL-PURPOSE INSTRUCTIONS
The POP instruction copies the word or doubleword at the current top of stack (indicated by the ESP register) to the
location specified with the destination operand. It then increments the ESP register to point to the new top of stack
(see Figure 7-3). The destination operand may specify a general-purpose register, a segment register, or a memory
location.
The POPA instruction reverses the effect of the PUSHA instruction. It pops the top eight words or doublewords from
the top of the stack into the general-purpose registers, except for the ESP register (see Figure 7-4). If the operand-
size attribute is 32, the doublewords on the stack are transferred to the registers in the following order: EDI, ESI,
EBP, ignore doubleword, EBX, EDX, ECX, and EAX. The ESP register is restored by the action of popping the stack.
If the operand-size attribute is 16, the words on the stack are transferred to the registers in the following order: DI,
SI, BP, ignore word, BX, DX, CX, and AX.
Figure 7-2. Operation of the PUSHA Instruction
Figure 7-3. Operation of the POP Instruction
0
Stack
31
Before Pushing Registers
Growth
ESP
n - 4
n - 8
n
Stack
0
31
After Pushing Registers
ESP
EAX
EDI
EBX
EBP
ECX
EDX
Old ESP
ESI
n - 36
n - 20
n - 28
n - 12
n - 16
n - 24
n - 32
0
31
Stack
After Popping Doubleword
Growth
ESP
n - 4
n - 8
n
Stack
Before Popping Doubleword
ESP
Doubleword Value
0
31