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).
-♦-