| Code | 
Mnemonic | 
Description | 
| FF /6  | 
 	PUSH r/m16  | 
 	Push r/m16 | 
| FF /6  | 
 	PUSH r/m32  | 
 	Push r/m32 | 
| 50 + rw  | 
 	PUSH r16  | 
 	Push r16 | 
| 50 + rd  | 
 	PUSH r32 | 
 	Push r32 | 
| 6A  | 
 	PUSH imm8  | 
 	Push imm8 | 
| 68  | 
 	PUSH imm16  | 
 	Push imm16 | 
| 68  | 
 	PUSH imm32  | 
 	Push imm32 | 
| 0E  | 
 	PUSH CS  | 
 		Push CS | 
| 16  | 
 	PUSH SS  | 
 		Push SS | 
| 1E  | 
 	PUSH DS  | 
 		Push DS | 
| 06  | 
 	PUSH ES  | 
 		Push ES | 
| 0F A0  | 
 	PUSH FS  | 
 		Push FS | 
| 0F A8 | 
 	PUSH GS  | 
 	Push GS | 
Description
Decrements the stack pointer and then stores the source operand on the top of the stack. The address-size attribute of the stack segment determines the stack pointer size (16 bits or 32 bits), and the operand-size attribute of the current code segment determines the amount the stack pointer is decremented (2 bytes or 4 bytes). For example, if these address- and operand-size attributes are 32, the 32-bit ESP register (stack pointer) is decremented by 4 and, if they are 16, the 16-bit SP register is decremented by 2.(The B flag in the stack segment's segment descriptor determines the stack's address-size attribute, and the D flag in the current code segment's segment descriptor, along with prefixes, determines the operand-size attribute and also the address-size attribute of the source operand.) Pushing a 16-bit operand when the stack address-size attribute is 32 can result in a misaligned the stack pointer (that is, the stack pointer is not aligned on a doubleword boundary).
The PUSH ESP instruction pushes the value of the ESP register as it existed before the instruction was executed. Thus, if a PUSH instruction uses a memory operand in which the ESP register is used as a base register for computing the operand address, the effective address of the operand is computed before the ESP register is decremented.
In the real-address mode, if the ESP or SP register is 1 when the PUSH instruction is executed, the processor shuts down due to a lack of stack space. No exception is generated to indicate this condition.
| Operands | 
Bytes | 
Clocks | 
| reg  | 
1 | 
1 | 
 UV | 
| mem  | 
2 + d(0 - 2) 	2  | 
2 | 
 NP | 
| seg  | 
1 | 
1 | 
 NP | 
| imm  | 
1 + i(1, 2) 	1  | 
1 | 
 NP | 
| FS/GS | 
2 | 
1 | 
 NP | 
Flags
| ID | 
unaffected | 
DF | 
unaffected | 
| VIP | 
unaffected | 
IF | 
unaffected | 
| VIF | 
unaffected | 
TF | 
unaffected | 
| AC | 
unaffected | 
SF | 
unaffected | 
| VM | 
unaffected | 
ZF | 
unaffected | 
| RF | 
unaffected | 
AF | 
unaffected | 
| NT | 
unaffected | 
PF | 
unaffected | 
| IOPL | 
unaffected | 
CF | 
unaffected | 
| OF | 
unaffected |