Assembly Language Help (alang.hlp) (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
PUSHA/POPA Instructions
 Detail Key Example                    Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
  Title:    Push or Pop All                       Flags: O D I T S Z A P C
            80186-80486 Only                             ═════════════════
                                                              -none-
  Syntax:   PUSHA
            PUSHAW
            PUSHAD
            POPA
            POPAW
            POPAD
 
  See also: .186, PUSH, POP
 
  Description:
 
     PUSHA pushes the eight general-purpose registers onto the stack.
     The registers are pushed in the following order: AX, CX, DX, BX,
     SP, BP, SI, DI. The value pushed for SP is the value before the
     instruction.
 
     POPA pops the top 16 bytes on the stack into the eight general-
     purpose registers. The registers are popped in the following
     order: DI, SI, BP, SP, BX, DX, CX, AX. The value for the SP
     register is actually discarded rather than copied to SP.
 
     The behavior of PUSHA and POPA depend on the code segment
     they are used in. They work on 16-bit registers in 16-bit segments and
     32-bit registers in 32-bit segments. PUSHAW and POPAW always
     work on 16-bit registers. PUSHAD and POPAD always work on
     32-bit registers (80386/486 only).
                                    -♦-