| |
Push Word onto Stack
86/88 |
Y |
186 |
Y |
286 |
Y |
386 |
Y |
486 |
Y |
PUSH source |
Ovfl |
N |
Dir |
N |
Int |
N |
Trap |
N |
Sign |
N |
Zero |
N |
Aux |
N |
Prty |
N |
Carry |
N |
PUSH decrements SP by 2, then copies the operand to the new top of
stack. The source of a PUSH instruction cannot be an 8-bit register.
Notes: Even if the source refers to a byte in memory, a
full word is always pushed.
The 80286 and 80386 microprocessors will push a
different value on the stack for the instruction
PUSH SP than will the 8086/8088. The 80286 and
80386 push the value of SP before SP is incremented,
while the 8086/8088 increments SP first, then pushes
SP on the stack. Use the following code instead of
a PUSH SP in order to obtain the same results on all
microprocessors.
PUSH BP
MOV BP, SP
XCHG BP, [BP]
This code functions in the same manner as a PUSH SP
on the 8088/8086.
------------------------------------ Timing ----------------------------------
OpCode Instruction 386 286 86
FF/6 PUSH m16 5 5 16+EA
FF/6 PUSH m32 5
50+/r PUSH r16 2 3 11
50+/r PUSH r32 2
6A PUSH imm8 2 3
68 PUSH imm16 2 3
68 PUSH imm32 2
0E PUSH CS 2 3 10
16 PUSH SS 2 3 10
1E PUSH DS 2 3 10
06 PUSH ES 2 3 10
0F A0 PUSH FS 2
0F A8 PUSH GS 2
------------------------------------ Logic -----------------------------------
SP = SP - 2
(SP) = source
See Also POP PUSHA POPA PUSHF POPF MOV XCHG |