Logic destination ← [SS:eSP] eSP ← eSP + n ; n = 2 if operand-size attribute is 16 bits, else 4
POP replaces the contents of the destination operand with the word or doubleword at the current top of stack, addressed by SS:SP (stack address-size attribute 16) or SS:ESP (stack address-size attribute 32). The stack pointer is then incremented by 2 for an operand-size of 16 bits, or by 4 for an operand-size of 32 bits, to point to the new top of stack.
The CS register cannot be used as the destination of a POP instruction.
A POP SS instruction inhibits all interrupts, including NMI, until after execution of the next instruction. This allows sequential execution of POP SS, POP SP without danger of having an invalid stack during an interrupt. However, using the LSS instruction is preferred.
Protected mode If the destination operand is a segment register (DS,ES,FS,GS, or SS), the value popped must be a selector. Loading the selector initiates automatic loading of the descriptor information associated with that selector into the programmer-invisible part of the segment register; loading also initates validation of both the selector and the descriptor information.
Opcode Format 07 POP ES 0F A1 POP FS 0F A9 POP GS 17 POP SS 1F POP DS 58 + rw POP r16 58 + rd POP r32 8F /0 POP m16 8F /0 POP m32