Intel x86 Instruction Reference
This is a reference of Intel x86 Instructions from the ECE 291 Class manual at UIUC.
AAA, AAS, AAM, AAD: ASCII Adjustments
ADC: Add with Carry
ADD: Add Integers
AND: Bitwise AND
ARPL: Adjust RPL Field of Selector
BOUND: Check Array Index against Bounds
BSF, BSR: Bit Scan
BSWAP: Byte Swap
BT, BTC, BTR, BTS: Bit Test
CALL: Call Subroutine
CBW, CWD, CDQ, CWDE: Sign Extensions
CLC, CLD, CLI, CLTS: Clear Flags
CMC: Complement Carry Flag
CMOVcc: Conditional Move
CMP: Compare Integers
CMPSB, CMPSW, CMPSD: Compare Strings
CMPXCHG: Compare and Exchange
CMPXCHG8B: Compare and Exchange Eight Bytes
CPUID: Get CPU Identification Code
DAA, DAS: Decimal Adjustments
DEC: Decrement Integer
DIV: Unsigned Integer Divide
EMMS: Empty MMX State
ENTER: Create Stack Frame
F2XM1: Calculate 2**X-1
FABS: Floating-Point Absolute Value
FADD, FADDP: Floating-Point Addition
FBLD, FBSTP: BCD Floating-Point Load and Store
FCHS: Floating-Point Change Sign
FCLEX, FNCLEX: Clear Floating-Point Exceptions
FCMOVcc: Floating-Point Conditional Move
FCOM, FCOMP, FCOMPP, FCOMI, FCOMIP: Floating-Point Compare
FCOS: Cosine
FDECSTP: Decrement Floating-Point Stack Pointer
FxDISI, FxENI: Disable and Enable Floating-Point Interrupts
FDIV, FDIVP, FDIVR, FDIVRP: Floating-Point Division
FFREE: Flag Floating-Point Register as Unused
FIADD: Floating-Point/Integer Addition
FICOM, FICOMP: Floating-Point/Integer Compare
FIDIV, FIDIVR: Floating-Point/Integer Division
FILD, FIST, FISTP: Floating-Point/Integer Conversion
FIMUL: Floating-Point/Integer Multiplication
FINCSTP: Increment Floating-Point Stack Pointer
FINIT, FNINIT: Initialise Floating-Point Unit
FISUB: Floating-Point/Integer Subtraction
FLD: Floating-Point Load
FLDCW: Load Floating-Point Control Word
FLDENV: Load Floating-Point Environment
FLDxx: Floating-Point Load Constants
FMUL, FMULP: Floating-Point Multiply
FNOP: Floating-Point No Operation
FPATAN, FPTAN: Arctangent and Tangent
FPREM, FPREM1: Floating-Point Partial Remainder
FRNDINT: Floating-Point Round to Integer
FSAVE, FRSTOR: Save/Restore Floating-Point State
FSCALE: Scale Floating-Point Value by Power of Two
FSETPM: Set Protected Mode
FSIN, FSINCOS: Sine and Cosine
FSQRT: Floating-Point Square Root
FST, FSTP: Floating-Point Store
FSTCW: Store Floating-Point Control Word
FSTENV: Store Floating-Point Environment
FSTSW: Store Floating-Point Status Word
FSUB, FSUBP, FSUBR, FSUBRP: Floating-Point Subtract
FTST: Test ST0 Against Zero
FUCOMxx: Floating-Point Unordered Compare
FXAM: Examine Class of Value in ST0
FXCH: Floating-Point Exchange
FXRSTOR: Restore FP and MMXTM State and Streaming SIMD Extension State
FXSAVE: Store FP and MMXTM State and Streaming SIMD
FXTRACT: Extract Exponent and Significand
FYL2X, FYL2XP1: Compute Y times Log2(X) or Log2(X+1)
HLT: Halt Processor
IDIV: Signed Integer Divide
IMUL: Signed Integer Multiply
IN: Input from I/O Port
INC: Increment Integer
INSB, INSW, INSD: Input String from I/O Port
INT: Software Interrupt
INT3, INT1, ICEBP, INT01: Breakpoints
INTO: Interrupt if Overflow
INVD: Invalidate Internal Caches
INVLPG: Invalidate TLB Entry
IRET, IRETW, IRETD: Return from Interrupt
Jcc: Conditional Branch
JCXZ, JECXZ: Jump if CX/ECX Zero
JMP: Jump
LAHF: Load AH from Flags
LAR: Load Access Rights
LDS, LES, LFS, LGS, LSS: Load Far Pointer
LEA: Load Effective Address
LEAVE: Destroy Stack Frame
LGDT, LIDT, LLDT: Load Descriptor Tables
LMSW: Load/Store Machine Status Word
LODSB, LODSW, LODSD: Load from String
LOOP, LOOPE, LOOPZ, LOOPNE, LOOPNZ: Loop with Counter
LSL: Load Segment Limit
LTR: Load Task Register
MOV: Move Data
MOVD: Move Doubleword to/from MMX Register
MOVQ: Move Quadword to/from MMX Register
MOVSB, MOVSW, MOVSD: Move String
MOVSX, MOVZX: Move Data with Sign or Zero Extend
MUL: Unsigned Integer Multiply
NEG, NOT: Two's and One's Complement
NOP: No Operation
OR: Bitwise OR
OUT: Output Data to I/O Port
OUTSB, OUTSW, OUTSD: Output String to I/O Port
PACKSSDW, PACKSSWB, PACKUSWB: Pack Data
PADDxx: MMX Packed Addition
PAND, PANDN: MMX Bitwise AND and AND-NOT
PCMPxx: MMX Packed Comparison
PMADDWD: MMX Packed Multiply and Add
PMULHW, PMULLW: MMX Packed Multiply
POP: Pop Data from Stack
POPAx: Pop All General-Purpose Registers
POPFx: Pop Flags Register
POR: MMX Bitwise OR
PSLLx, PSRLx, PSRAx: MMX Bit Shifts
PSUBxx: MMX Packed Subtraction
PUNPCKxxx: Unpack Data
PUSH: Push Data on Stack
PUSHAx: Push All General-Purpose Registers
PUSHFx: Push Flags Register
PXOR: MMX Bitwise XOR
RCL, RCR: Bitwise Rotate through Carry Bit
RDMSR: Read Model-Specific Registers
RDPMC: Read Performance-Monitoring Counters
RDTSC: Read Time-Stamp Counter
RET, RETF, RETN: Return from Procedure Call
ROL, ROR: Bitwise Rotate
RSM: Resume from System-Management Mode
SAHF: Store AH to Flags
SAL, SAR: Bitwise Arithmetic Shifts
SALC: Set AL from Carry Flag
SBB: Subtract with Borrow
SCASB, SCASW, SCASD: Scan String
SETcc: Set Register from Condition
SGDT, SIDT, SLDT: Store Descriptor Table Pointers
SHL, SHR: Bitwise Logical Shifts
SHLD, SHRD: Bitwise Double-Precision Shifts
SMSW: Store Machine Status Word
STC, STD, STI: Set Flags
STOSB, STOSW, STOSD: Store Byte to String
STR: Store Task Register
SUB: Subtract Integers
TEST: Test Bits (notional bitwise AND)
VERR, VERW: Verify Segment Readability/Writability
WAIT: Wait for Floating-Point Processor
WBINVD: Write Back and Invalidate Cache
WRMSR: Write Model-Specific Registers
XADD: Exchange and Add
XCHG: Exchange
XLATB: Translate Byte in Lookup Table
XOR: Bitwise Exclusive OR
|