x86 Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| C4 | les | LES r, m | Legacy | Load Far Pointer using ES |
| NP 0F AE E8 | lfence | LFENCE | SSE2 | Load Fence |
| 0F B4 | lfs | LFS r, m | Legacy | Load Far Pointer using FS |
| 0F 01 /2 | lgdt | LGDT m16&32 | System | Load Global Descriptor Table Register |
| 0F B5 | lgs | LGS r, m | Legacy | Load Far Pointer using GS |
| 0F 01 /3 | lidt | LIDT m16&32 | System | Load Interrupt Descriptor Table Register |
| F2 0F 00 /6 | lkgs | LKGS r16 | Legacy | Load Kernel GS Base |
| 0F 00 /2 | lldt | LLDT r/m16 | System | Load Local Descriptor Table Register |
| 0F 01 /6 | lmsw | LMSW r/m16 | System | Load Machine Status Word |
| F3 0F 38 DC | loadiwkey | LOADIWKEY xmm1, xmm2 | Legacy | Load Internal Wrapping Key |
| AC | lods | LODSB | Legacy | Load String |
| AD | lodsd | LODSD | Legacy | Load String Doubleword |
| REX.W + AD | lodsq | LODSQ | Legacy | Load String Quadword |
| AD | lodsw | LODSW | Legacy | Load String Word |
| E2 | loop | LOOP rel | Legacy | Loop |
| E1 | loope | LOOPE rel | Legacy | Loop if Equal |
| E0 | loopne | LOOPNE rel | Legacy | Loop if Not Equal |
| 0F 03 | lsl | LSL r, r/m16 | System | Load Segment Limit |
| 0F B2 | lss | LSS r, m | Legacy | Load Far Pointer using SS |
| 0F 00 /3 | ltr | LTR r/m16 | System | Load Task Register |
| F3 0F BD | lzcnt | LZCNT r, r/m | VEX | Count Leading Zeros |
| 66 0F F7 | maskmovdqu | MASKMOVDQU xmm, xmm | SSE2 | Store Selected Bytes of Double Quadword |
| NP 0F F7 /r | maskmovq | MASKMOVQ mm1, mm2 | MMX | Store Selected Bytes of Quadword |
| NP 0F 5F /r | maxps | MAXPS xmm, xmm/m128 | SSE | Maximum Packed Single-Precision |
| F2 0F 5F | maxsd | MAXSD xmm1, xmm2/m64 | SSE2 | Maximum Scalar Double-Precision |
| F3 0F 5F | maxss | MAXSS xmm1, xmm2/m32 | SSE | Maximum Scalar Single-Precision |
| NP 0F AE F0 | mfence | MFENCE | SSE2 | Memory Fence |
| NP 0F 5D /r | minps | MINPS xmm, xmm/m128 | SSE | Minimum Packed Single-Precision |
| F2 0F 5D | minsd | MINSD xmm1, xmm2/m64 | SSE2 | Minimum Scalar Double-Precision |
| F3 0F 5D | minss | MINSS xmm1, xmm2/m32 | SSE | Minimum Scalar Single-Precision |
| 0F 01 C8 | monitor | MONITOR | Legacy | Monitor |
| 0F 01 FA | monitorx | MONITORX | AMD | Monitor Extended |
| 89 | mov | MOV r/m, r | Legacy | Move |
| 0F 22 /r | mov cr | MOV CRn, r | System | Move Control Register |
| 0F 23 /r | mov dr | MOV DRn, r | System | Move Debug Register |
| 66 0F 28 | movapd | MOVAPD xmm, xmm/m128 | SSE2 | Move Aligned Packed Double-Precision |
| NP 0F 28 /r | movaps | MOVAPS xmm, xmm/m128 | SSE | Move Aligned Packed Single-Precision |
| 0F 38 F0 | movbe | MOVBE r, m | Legacy | Move Big-Endian |
| 66 0F 6E /r | movd | MOVD mm/xmm, r32/m32 | SSE | Move Doubleword |
| F2 0F 12 | movddup | MOVDDUP xmm1, xmm2/m64 | SSE3 | Move One Double-FP and Duplicate |
| 66 0F 38 F8 | movdir64b | MOVDIR64B m512, m512 | Legacy | Move Direct Store 64-Bytes |
| NP 0F 38 F9 /r | movdiri | MOVDIRI m, r | Legacy | Move Direct Store Integer |
| 66 0F 6F | movdqa | MOVDQA xmm, xmm/m128 | SSE2 | Move Aligned Packed Integer |
| F3 0F 6F | movdqu | MOVDQU xmm, xmm/m128 | SSE2 | Move Unaligned Packed Integer |
| 66 0F 50 | movmskpd | MOVMSKPD r32, xmm | SSE2 | Extract Packed Double-Precision Mask |
| NP 0F 50 /r | movmskps | MOVMSKPS r32, xmm | SSE | Extract Packed Single-Precision Mask |
| 66 0F 38 2A | movntdqa | MOVNTDQA xmm1, m128 | SSE4.1 | Load Double Quadword Non-Temporal Aligned |
| NP 0F C3 /r | movnti | MOVNTI m32, r32 | SSE2 | Move Non-Temporal Integer |
| 66 0F 2B | movntpd | MOVNTPD m128, xmm | SSE2 | Move Non-Temporal Packed Double |
| NP 0F 2B /r | movntps | MOVNTPS m128, xmm | SSE | Move Non-Temporal Packed Single |
| NP 0F E7 /r | movntq | MOVNTQ m64, mm | SSE | Move Non-Temporal Quadword |
| F2 0F 2B /r | movntsd | MOVNTSD m64, xmm1 | SSE4a | Move Non-Temporal Scalar Double |
| F3 0F 2B /r | movntss | MOVNTSS m32, xmm1 | SSE4a | Move Non-Temporal Scalar Single |
| NP 0F 6F /r | movq | MOVQ mm, mm/m64 | MMX | Move Quadword (MMX) |
| F3 0F 7E | movq | MOVQ xmm, xmm/m64 | SSE2 | Move Quadword |
| F2 0F 10 | movsd | MOVSD xmm1, xmm2/m64 | SSE2 | Move Scalar Double-Precision |
| A5 | movsd | MOVSD | Legacy | Move String Doubleword |
| F3 0F 16 | movshdup | MOVSHDUP xmm1, xmm2/m128 | SSE3 | Move Packed Single-FP High and Duplicate |
| F3 0F 12 | movsldup | MOVSLDUP xmm1, xmm2/m128 | SSE3 | Move Packed Single-FP Low and Duplicate |
| REX.W + A5 | movsq | MOVSQ | Legacy | Move String Quadword |
| F3 0F 10 | movss | MOVSS xmm1, xmm2/m32 | SSE | Move Scalar Single-Precision |
| A5 | movsw | MOVSW | Legacy | Move String Word |
| 0F BE | movsx | MOVSX r, r/m | Legacy | Move with Sign-Extension |
| 63 | movsxd | MOVSXD r64, r/m32 | Base (64-bit) | Move with Sign-Extension Doubleword |
| 66 0F 10 | movupd | MOVUPD xmm, xmm/m128 | SSE2 | Move Unaligned Packed Double-Precision |
| NP 0F 10 /r | movups | MOVUPS xmm, xmm/m128 | SSE | Move Unaligned Packed Single-Precision |
| 0F B6 | movzx | MOVZX r, r/m | Legacy | Move with Zero-Extension |
| 66 0F 3A 42 | mpsadbw | MPSADBW xmm1, xmm2/m128, imm8 | SSE4.1 | Compute Multiple Sums of Absolute Differences |
| F7 /4 | mul | MUL r/m | Legacy | Unsigned Multiply |
| 66 0F 59 | mulpd | MULPD xmm, xmm/m128 | SSE2 | Multiply Packed Double-Precision |
| NP 0F 59 /r | mulps | MULPS xmm, xmm/m128 | SSE | Multiply Packed Single-Precision |
| F2 0F 59 | mulsd | MULSD xmm1, xmm2/m64 | SSE2 | Multiply Scalar Double-Precision |
| F3 0F 59 | mulss | MULSS xmm1, xmm2/m32 | SSE | Multiply Scalar Single-Precision |
| VEX.LZ.F2.0F38.W0 F6 /r | mulx | MULX r32, r32, r/m32 | VEX | Unsigned Multiply Without Affecting Flags |
| 0F 01 C9 | mwait | MWAIT | Legacy | Monitor Wait |
| 0F 01 FB | mwaitx | MWAITX | AMD | Monitor Wait Extended |
| F7 /3 | neg | NEG r/m | Legacy | Two's Complement Negation |
| NP 90 | nop | NOP | Legacy | No Operation |
| F7 /2 | not | NOT r/m | Legacy | One's Complement Negation |
| 09 | or | OR r/m, r | Legacy | Logical OR |
| NP 0F 56 /r | orps | ORPS xmm, xmm/m128 | SSE | Bitwise Logical OR Packed Single-Precision |
| E6 | out | OUT imm8, AL | Legacy | Output to Port |
| EF | out | OUT DX, AL/AX/EAX | Legacy | Output to Port (Variable) |
| 6E | outs | OUTSB | Legacy | Output String to Port |
| 6F | outsd | OUTSD | Legacy | Output String Doubleword to Port |
| 6F | outsw | OUTSW | Legacy | Output String Word to Port |
| 66 0F 38 1C | pabsb | PABSB xmm1, xmm2/m128 | SSSE3 | Packed Absolute Value Byte |
| 66 0F 6B | packssdw | PACKSSDW xmm, xmm/m128 | SSE2 | Pack with Signed Saturation Doubleword to Word |
| 66 0F 63 | packsswb | PACKSSWB xmm, xmm/m128 | SSE2 | Pack with Signed Saturation Word to Byte |
| 66 0F 38 2B | packusdw | PACKUSDW xmm1, xmm2/m128 | SSE4.1 | Pack with Unsigned Saturation Doubleword to Word |
| 66 0F 67 | packuswb | PACKUSWB xmm1, xmm2/m128 | SSE2 | Pack with Unsigned Saturation Word to Byte |
| 66 0F FC | paddb | PADDB xmm, xmm/m128 | SSE2 | Packed Add Bytes |
| 66 0F FE | paddd | PADDD xmm, xmm/m128 | SSE2 | Packed Add Doublewords |
| 66 0F D4 | paddq | PADDQ xmm, xmm/m128 | SSE2 | Packed Add Quadwords |
| NP 0F EC /r1 | paddsb | PADDSB mm, mm/m64 | MMX | Packed Add Signed Saturate Byte (MMX) |
| 66 0F EC | paddsb | PADDSB xmm, xmm/m128 | SSE2 | Packed Add Bytes Signed Saturate |
| NP 0F ED /r1 | paddsw | PADDSW mm, mm/m64 | MMX | Packed Add Signed Saturate Word (MMX) |
| 66 0F ED | paddsw | PADDSW xmm1, xmm2/m128 | SSE2 | Packed Add Signed Saturation Word |
| NP 0F DC /r1 | paddusb | PADDUSB mm, mm/m64 | MMX | Packed Add Unsigned Saturate Byte (MMX) |
| 66 0F DC | paddusb | PADDUSB xmm, xmm/m128 | SSE2 | Packed Add Bytes Unsigned Saturate |