3-582
INSTRUCTION SET REFERENCE
PUSH—Push Word or Doubleword Onto the Stack (Continued)
Operation
IF StackAddrSize = 32
THEN
IF OperandSize = 32
THEN
ESP
<
ESP
?
4;
SS:ESP
<
SRC; (* push doubleword *)
ELSE (* OperandSize = 16*)
ESP
<
ESP
?
2;
SS:ESP
<
SRC; (* push word *)
FI;
ELSE (* StackAddrSize = 16*)
IF OperandSize = 16
THEN
SP
<
SP
?
2;
SS:SP
<
SRC; (* push word *)
ELSE (* OperandSize = 32*)
SP
<
SP
?
4;
SS:SP
<
SRC; (* push doubleword *)
FI;
FI;
Flags Affected
None.
Protected Mode Exceptions
#GP(0)
If a memory operand effective address is outside the CS, DS, ES, FS, or
GS segment limit.
If the DS, ES, FS, or GS register is used to access memory and it contains
a null segment selector.
#SS(0)
If a memory operand effective address is outside the SS segment limit.
#PF(fault-code)If a page fault occurs.
#AC(0)
If alignment checking is enabled and an unaligned memory reference is
made while the current privilege level is 3.