POP - Pop Word off Stack
Usage: POP dest
Modifies Flags: None
Transfers word at the current stack top (SS:SP) to the destination then increments SP by two to point to the new stack top. CS is not a valid destination.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg16 | 5 | 4 | 4 | 1 |
reg32 | 4 | 1 | ||
segreg | 5 | 7 | 3 | 1 |
mem16 | 5 | 5 | 6 | 2-4 |
mem32 | 6 | 2-4 |
POPA/POPAD - Pop All Registers onto Stack (80188+)
Usage: POPA
POPAD (386+)
Modifies Flags: None
Pops the top 8 words off the stack into the 8 general purpose 16/32 bit registers. Registers are popped in the following order: (E)DI, (E)SI, (E)BP, (E)SP, (E)DX, (E)CX and (E)AX. The (E)SP value popped from the stack is actually discarded.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
none | 19 | 24 | 9 | 1 |
POPF/POPFD - Pop Flags off Stack
Usage: POPF
POPFD (386+)
Modifies Flags: All
Pops word/doubleword from stack into the Flags Register and then increments SP by 2 (for POPF) or 4 (for POPFD).
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
none | 5 | 5 | 9 | 1 |
none (PM) | 5 | 6 | 1 |
PUSH - Push Word onto Stack
Usage: PUSH src
PUSH immed (80188+ only)
Modifies Flags: None
Decrements SP by the size of the operand (two or four, byte values are sign extended) and transfers one word from source to the stack top (SS:SP).
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg16 | 3 | 2 | 1 | 1 |
reg32 | 2 | 1 | 1 | |
mem16 | 5 | 5 | 4 | 2-4 |
mem32 | 5 | 4 | 2-4 | |
segreg | 3 | 2 | 3 | 1 |
immed | 3 | 2 | 1 | 2-3 |
PUSHA/PUSHAD - Push All Registers onto Stack (80188+)
Usage: PUSHA
PUSHAD (386+)
Modifies Flags: None
Pushes all general purpose registers onto the stack in the following order: (E)AX, (E)CX, (E)DX, (E)BX, (E)SP, (E)BP, (E)SI, (E)DI. The value of SP is the value before the actual push of SP.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
none | 19 | 24 | 11 | 1 |
PUSHF/PUSHFD - Push Flags onto Stack
Usage: PUSHF
PUSHFD (386+)
Modifies Flags: None
Transfers the Flags Register onto the stack. PUSHF saves a 16 bit value while PUSHFD saves a 32 bit value.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
none | 3 | 4 | 4 | 1 |
none (PM) | 4 | 3 | 1 |
[ TOC | Previous | NeXt | Winston's page ]