AngoLinux |
80386 Programmer's Reference Manual -- Opcode POPA |
POPA/POPAD -- Pop all General Registers
OperationIF OperandSize = 16 (* instruction = POPA *) THEN DI := Pop(); SI := Pop(); BP := Pop(); throwaway := Pop (); (* Skip SP *) BX := Pop(); DX := Pop(); CX := Pop(); AX := Pop(); ELSE (* OperandSize = 32, instruction = POPAD *) EDI := Pop(); ESI := Pop(); EBP := Pop(); throwaway := Pop (); (* Skip ESP *) EBX := Pop(); EDX := Pop(); ECX := Pop(); EAX := Pop(); FI; DescriptionPOPA pops the eight 16-bit general registers. However, the SP value is discarded instead of loaded into SP. POPA reverses a previous PUSHA, restoring the general registers to their values before PUSHA was executed. The first register popped is DI.POPAD pops the eight 32-bit general registers. The ESP value is discarded instead of loaded into ESP. POPAD reverses the previous PUSHAD, restoring the general registers to their values before PUSHAD was executed. The first register popped is EDI. Flags AffectedNoneProtected Mode Exceptions#SS(0) if the starting or ending stack address is not within the stack segment; #PF(fault-code) for a page faultReal Address Mode ExceptionsInterrupt 13 if any part of the operand would lie outside of the effective address space from 0 to 0FFFFHVirtual 8086 Mode ExceptionsSame exceptions as in real-address mode; #PF(fault-code) for a page fault
[Home Page dell'ITIS "Fermi"] [80386 Programmer's Reference Manual Index] [Previous] [Next] |