Documentation Home
> IA-32 Assembly Language Reference Manual
IA-32 Assembly Language Reference Manual
Book Information
Preface
Chapter 1 Assembler Input
Introduction
Source Files in Assembly Language Format
File Organization
Statements
Values and Symbol Types
Values
Symbols
Symbol Types
Sections
Expressions
Expression Syntax
Expression Semantics (Absolute vs. Relocatable)
Machine Instruction Syntax
Operands
Instruction Description
Addressing Modes
Expressions and Immediate Values
Pseudo Operations
General Pseudo Operations
Symbol Definition Pseudo Operations
Chapter 2 Instruction-Set Mapping
Introduction
Notational Conventions
References
Segment Register Instructions
Load Full Pointer (lds,les, lfs, lgs, and lss)
Pop Stack into Word (pop)
Push Word/Long onto Stack (push)
I/O Instructions
Input from Port (in, ins)
Output from Port (out, outs)
Flag Instructions
Load Flags into AH Register (lahf)
Store AH into Flags (sahf)
Pop Stack into Flag (popf)
Push Flag Register Onto Stack (pushf)
Complement Carry Flag (cmc)
Clear Carry Flag (clc)
Set Carry Flag (stc)
Clear Interrupt Flag (cli)
Set Interrupt Flag (sti)
Clear Direction Flag (cld)
Set Direction Flag (std)
Arithmetic Logical Instructions
Integer Addition (add)
Integer Add With Carry (adc)
Integer Subtraction (sub)
Integer Subtraction With Borrow (sbb)
Compare Two Operands (cmp)
Increment by 1 (inc)
Decrease by 1 (dec)
Logical Comparison or Test (test)
Shift (sal, shl, sar, shr)
Double Precision Shift Left (shld)
Double Precision Shift Right (shrd)
One's Complement Negation (not)
Two's Complement Negation (neg)
Check Array Index Against Bounds (bound)
Logical And (and)
Logical Inclusive OR (or)
Logical Exclusive OR (xor)
Multiply and Divide Instructions
Signed Multiply (imul)
Unsigned Multiplication of AL, AX or EAX(mul)
Unsigned Divide (div)
Signed Divide (idiv)
Conversion Instructions
Convert Byte to Word (cbtw)
Convert Word to Long (cwtl)
Convert Signed Word to Signed Double Word (cwtd)
Convert Signed Long to Signed Double Long (cltd)
Decimal Arithmetic Instructions
Decimal Adjust AL after Addition (daa)
Decimal Adjust AL after Subtraction (das)
ASCII Adjust after Addition (aaa)
ASCII Adjust after Subtraction (aas)
ASCII Adjust AX after Multiply (aam)
ASCII Adjust AX before Division (aad)
Coprocessor Instructions
Wait (wait, fwait)
String Instructions
Move Data from String to String (movs)
Compare String Operands (cmps)
Store String Data (stos)
The Load String Operand (lods)
Compare String Data (scas)
Look-Up Translation Table (xlat)
Repeat String Operation (rep, repnz, repz)
Procedure Call and Return Instructions
Far Call -- Procedure Call (lcall)
Near Call -- Procedure Call (call)
Return from Procedure (ret)
Long Return (lret)
Enter/Make Stack Frame for Procedure Parameters (enter)
High Level Procedure Exit (leave)
Jump Instructions
Jump if ECX is Zero (jcxz)
Loop Control with CX Counter (loop, loopnz, loopz)
Jump (jmp, ljmp)
Interrupt Instructions
Call to Interrupt Procedure (int, into)
Interrupt Return (iret)
Protection Model Instructions
Store Local Descriptor Table Register (sldt)
Store Task Register (str)
Load Local Descriptor Table Register (lldt)
Load Task Register (ltr)
Verify a Segment for Reading or Writing (verr, verw)
Store Global/Interrupt Descriptor Table Register (sgdt, sidt)
Load Global/Interrupt Descriptor Table (lgdt, lidt)
Store Machine Status Word (smsw)
Load Machine Status Word (lmsw)
Load Access Rights (lar)
Load Segment Limit (lsl)
Clear Task-Switched (clts)
Adjust RPL Field of Selector (arpl)
Bit Instructions
Bit Scan Forward (bsf)
Bit Scan Reverse (bsr)
Bit Test (bt)
Bit Test And Complement (btc)
Bit Test And Reset (btr)
Bit Test And Set (bts)
Exchange Instructions
Compare and Exchange (cmpxchg)[486]
Floating-Point Transcendental Instructions
Floating-Point Sine (fsin)
Floating-Point Cosine (fcos)
Floating-Point Sine and Cosine (fsincos)
Floating-Point Constant Instructions
Floating-Point Load One (fld)
Processor Control Floating-Point Instructions
Floating-Point Load Control Word (fldcw)
Floating-Point Load Environment (fldenv)
Miscellaneous Floating-Point Instructions
Floating-Point Different Reminder (fprem)
Floating-Point Comparison Instructions
Floating-Point Unsigned Compare (fucom)
Floating-Point Unsigned Compare And Pop (fucomp)
Floating-Point Unsigned Compare And Pop Two (fucompp)
Load and Move Instructions
Load Effective Address (lea)
Move (mov)
Move Segment Registers (movw)
Move Control Registers (mov)
Move Debug Registers (mov)
Move Test Registers (mov)
Move With Sign Extend (movsx)
Move With Zero Extend (movzb)
Pop Instructions
Pop All General Registers (popa)
Push Instructions
Push All General Registers (pusha)
Rotate Instructions
Rotate With Carry Left (rcl)
Rotate With Carry Right (rcr)
Rotate Left (rol)
Rotate Right (ror)
Byte Instructions
Byte Set On Condition (setcc)
Byte Swap (bswap) [486]
Exchange Instructions
Exchange And Add (xadd) [486]
Exchange Register / Memory With Register (xchg)
Miscellaneous Instructions
Write Back and Invalidate Cache (wbinvd) [486 only]
Invalidate (invd) [486 only]
Invalidate Page (invlpg) [486 only]
LOCK Prefix (lock)
No Operation (nop)
Halt (hlt)
Real Transfer Instructions
Load Real (fld)
Store Real (fst)
Store Real and Pop (fstp)
Exchange Registers (fxch)
Integer Transfer Instructions
Integer Load (fild)
Integer Store (fist)
Integer Store and Pop (fistp)
Packed Decimal Transfer Instructions
Packed Decimal (BCD) Load (fbld)
Packed Decimal (BCD) Store and Pop (fbstp)
Addition Instructions
Real Add (fadd)
Real Add and Pop (faddp)
Integer Add (fiadd)
Subtraction Instructions
Subtract Real and Pop (fsub)
Subtract Real (fsubp)
Subtract Real Reversed (fsubr)
Subtract Real Reversed and Pop (fsubrp)
Integer Subtract (fisubrp)
Integer Subtract Reverse (fisubr)
Multiplication Instructions
Multiply Real (fmul)
Multiply Real and Pop (fmulp)
Integer Multiply (fimul)
Division Instructions
Divide Real (fdiv)
Divide Real and Pop (fdivp)
Divide Real Reversed (fdivr)
Divide Real Reversed and Pop (fdivrp)
Integer Divide (fidiv)
Integer Divide Reversed (fidivr)
Floating-Point Opcode Errors
Miscellaneous Arithmetic Operations
Square Root (fsqrt)
Scale (fscale)
Partial Remainder (fprem)
Round to Integer (frndint)
Extract Exponent and Significand (fxtract)
Absolute Value (fabs)
Change Sign (fchs)
Comparison Instructions
Compare Real (fcom)
Compare Real and Pop (fcomp)
Compare Real and Pop Twice (fcompp)
Integer Compare (ficom)
Integer Compare and Pop (ficomp)
Test (ftst)
Examine (fxam)
Transcendental Instructions
Partial Tangent (fptan)
Partial Arctangent (fpatan)
2x - 1 (f2xm1)
Y * log2 X (fyl2x)
Y * log 2 (X+1) (fyl2xp1)
Constant Instructions
Load log2 E (fldl2e)
Load log2 10 (fldl2t)
Load log10 2 (fldlg2)
Load loge 2 (fldln2)
Load pi (fldpi)
Load + 0 (fldz)
Processor Control Instructions
Initialize Processor (finit, fnint)
No Operation (fnop)
Save State (fsave, fnsave)
Store Control Word (fstcw, fnstcw)
Store Environment (fstenv, fnstenv)
Store Status Word (fstsw, fnstsw)
Restore State (frstor)
CPU Wait (fwait, wait)
Clear Exceptions (fclex, fnclex)
Decrement Stack Pointer (fdecstp)
Free Registers (ffree)
Increment Stack Pointer (fincstp)
Chapter 3 Assembler Output
Introduction
Object Files in Executable and Linking Format (ELF)
ELF Header
Section Header
Sections
Predefined Sections
Predefined User Sections
Predefined Non-User Sections
Relocation Tables
Symbol Tables
String Tables
Attribute Expression
Appendix A Using the Assembler Command Line
Assembler Command Line
Assembler Command Line Options
Disassembling Object Code
Index
A
C
D
E
F
G
H
I
L
M
N
O
P
Q
R
S
U
V
W
© 2010, Oracle Corporation and/or its affiliates