80x86 Integer Instruction Set (8088 - Pentium)

Click FPU opcodes for floating point instructions

Jump to end of legend

Legend:

  General 
 acc    = AL, AX or EAX unless specified otherwise
 reg    = any general register
 r8     = any 8-bit register
 r16    = any general purpose 16-bit register
 r32    = any general purpose 32-bit register
 imm    = immediate data
 imm8   = 8-bit immediate data
 imm16  = 16-bit immediate data
 mem    = memory address
 mem8   = address of 8-bit data item
 mem16  = address of 16-bit data item
 mem32  = address of 32-bit data item
 mem48  = address of 48-bit data item
 dest   = 16/32-bit destination
 short  = 8-bit destination
 
Integer instruction timings:
  n  -  generally refers to a number of repeated counts
  m  -  in a jump or call;
         286: bytes in next instruction
         386/486: number of components
          (each byte of opcode) + 1 (if immed data) + 1 (if displacement)
  EA = cycles to calculate the Effective Address
       8088/8086:
        base   = 5   BP+DI or BX+SI = 7   BP+DI+disp or BX+SI+disp = 11
        index  = 5   BX+DI or BP+SI = 8   BX+DI+disp or BP+SI+disp = 12
        disp   = 6   segment override = +2
       286 - 486:
        base+index+disp = +1    all others, no penalty
 
 instruction length:
 
The byte count includes the opcode length and length of any required
displacement or immediate data. If the displacement is optional, it
is shown as d() with the possible lengths in parentheses. If the
immediate data is optional, it is shown as i() with the possible
lengths in parentheses.
 
pairing categories for Pentium:

   NP = not pairable
   UV = pairable in the U pipe or V pipe
   PU = pairable in the U pipe only
   PV = pairable in the V pipe only

(end of legend)

Instruction formats, clock cycles and Pentium(R) Pairing info

AAA     ASCII adjust after addition
 
                bytes   8088    186     286     386     486     Pentium
                 1       8       8       3       4       3       3   NP
 
        Example:        aaa
 
 
AAD     ASCII adjust AX before division (second byte is divisor)
 
                bytes   8088    186     286     386     486     Pentium
                 2      60      15      14      19      14      10   NP
 
        Example:        aad
  
 
AAM     ASCII adjust AX after multiply (second byte is divisor)
 
                bytes   8088    186     286     386     486     Pentium
                 2      83      19      16      17      15      18   NP
 
        Example:        aam
 
 
AAS     ASCII adjust AL after subtraction
 
                bytes   8088    186     286     386     486     Pentium
                 1       8       7       3       4       3       3   NP
 
        Example:        aas
 
 
ADC     Integer add with carry
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   PU
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   PU
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   PU
    reg, imm  2+i(1,2)   4       4       3       2       1       1   PU
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   PU*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   PU
 
        * = not pairable if there is a displacement and immediate

        Example:        adc     eax, ebx
 
 
ADD     Integer addition

    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   UV
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   UV
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   UV
    reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   UV*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        add     eax, ebx
 
 
AND     Logical AND
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   UV
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   UV
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   UV
    reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   UV*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        and     eax, ebx 
 
 
ARPL    Adjust RPL field of selector (286+)
 
     operands   bytes                   286     386     486     Pentium
     reg, reg    2                      10      20       9       7   NP
     mem, reg  2+d(0-2)                 11      21       9       7   NP
 
        Example:        arpl    ax, bx
 
 
BOUND   Check array index against bounds (186+)
 
      operands  bytes           186     286     386     486     Pentium
      reg, mem    4             35      13      10       7       8   NP
 
        Example:        bound   bx, array
 
 
BSF     Bit scan forward (386+)
 
    operands    bytes                           386     486     Pentium
    r16, r16     3                             10+3n    6-42   6-34  NP
    r32, r32     3                             10+3n    6-42   6-42  NP
    r16, m16  3+d(0,1,2)                       10+3n    7-43   6-35  NP
    r32, m32  3+d(0,1,2,4)                     10+3n    7-43   6-43  NP
 
        Example:        bsf     eax, [esi]
 
 
BSR     Bit scan reverse (386+)
 
    operands    bytes                           386     486     Pentium
    r16, r16     3                             10+3n    6-103  7-39  NP
    r32, r32     3                             10+3n    7-104  7-71  NP
    r16, m16  3+d(0,1,2)                       10+3n    6-103  7-40  NP
    r32, m32  3+d(0,1,2,4)                     10+3n    7-104  7-72  NP
 
        Example:        bsr     eax, [esi]
 
 
BSWAP  Byte swap (486+)
 
      operand   bytes                                   486     Pentium
      r32        2                                       1       1   NP
 
        Example:        bswap   eax
 
 
BT      Bit test (386+)
 
   operands     bytes                           386     486     Pentium
   reg, reg      3                               3       3       4   NP
   mem, reg    3+d(0,1,2,4)                     12       8       9   NP
   reg, imm8     3+i(1)                          3       3       4   NP
   mem, imm8   3+d(0,1,2,4)+i(1)                 6       3       4   NP
 
        Example:        bt      eax, 4
 
 
BTC     Bit test and complement (386+)
 
    operands    bytes                           386     486     Pentium
    reg, reg     3                               6       6       7   NP
    mem, reg   3+d(0,1,2,4)                     13      13      13   NP
    reg, imm8    3+i(1)                          6       6       7   NP
    mem, imm8  3+d(0,1,2,4)+i(1)                 8       8       8   NP
 
        Example:        btc     eax, 4
 
 
BTR     Bit test and reset (386+)
 
    operands    bytes                           386     486     Pentium
    reg, reg     3                               6       6       7   NP
    mem, reg   3+d(0,1,2,4)                     13      13      13   NP
    reg, imm8    3+i(1)                          6       6       7   NP
    mem, imm8  3+d(0,1,2,4)+i(1)                 8       8       8   NP
 
        Example:        btr     eax, 4
 
 
BTS     Bit test and set (386+)
 
    operands    bytes                           386     486     Pentium
    reg, reg     3                               6       6       7   NP
    mem, reg   3+d(0,1,2,4)                     13      13      13   NP
    reg, imm8    3+i(1)                          6       6       7   NP
    mem, imm8  3+d(0,1,2,4)+i(1)                 8       8       8   NP
 
        Example:        bts     eax, 4
 
 
CALL    Call subroutine
 
     operand    bytes   8088    186     286     386     486     Pentium
     near        3      23      14      7+m     7+m      3       1   PV
     reg         2      20      13      7+m     7+m      5       2   NP
     mem16    2+d(0-2)  29+EA   19      11+m    10+m     5       2   NP
     far         5      36      23      13+m    17+m    18       4   NP
     mem32    2+d(0-2)  53+EA   38      16+m    22+m    17       4   NP
 
 
                             Protected Mode
 
     operand    bytes                   286     386     486     Pentium
     far         5                      26+m    34+m    20     4-13  NP
     mem32    2+d(0-2)                  29+m    38+m    20     5-14  NP
 
            cycles not shown for calls through call and task gates
 
        Example:        call    my_function
 
 
CBW     Convert byte to word   (AL --> AX)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       3       3       3   NP
 
        Example:        cbw
 
 
CWDE    Convert word to dword (386+)  (AX --> EAX)
 
                bytes                           386     486     Pentium
                 1                               3       3       3   NP
 
        Example:        cwde
 
 
CWD     Convert word to double  (AX --> DX:AX)
 
                bytes   8088    186     286     386     486     Pentium
                 1       5       4       2       2       3       2   NP
 
        Example:        cwd
 
 
CDQ     Convert double to quad   (EAX --> EDX:EAX)
 
                bytes                           386     486     Pentium
                 1                               2       3       2   NP
 
        Example:        cdq
 
 
CLC     Clear the carry flag
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       2       2       2   NP
 
        Example:        clc
 
 
CLD     Clear the direction flag (set to forward direction)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       2       2       2   NP
 
        Example:        cld
 
 
CLI     Clear the interrupt flag (disable interrupts)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       3       3       5       7   NP
 
        Example:        cli
  
 
CLTS    Clear task switched flag in CR0 (286+)
 
                bytes                   286     386     486     Pentium
                 2                       2       5       7      10   NP
 
        Example:        clts
 
 
CMC     Complement carry flag
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       2       2       2   NP
 
        Example:        cmc
 
 
CMP     Compare two operands
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   UV
    mem, reg  2+d(0,2)  13+EA   10       7       5       2       2   UV
    reg, mem  2+d(0,2)  13+EA   10       6       6       2       2   UV
    reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
    mem, imm  2+d(0,2)  14+EA   10       6       5       2       2   UV*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        cmp     eax, 3
 
 
CMPS/CMPSB/CMPSW/CMPSD    Compare string operands
 
  variations    bytes   8088    186     286     386     486     Pentium
  cmpsb          1      30      22       8      10       8       5   NP
  cmpsw          1      -       -        -      10       8       5   NP
  cmpsd          1      -       -        -      10       8       5   NP
  repX cmpsb     2      9+30n   5+22n   5+9n    5+9n    7+7n*   9+4n NP
  repX cmpsw     2      9+30n   5+22n   5+9n    5+9n    7+7n*   9+4n NP
  repX cmpsd     2       -       -       -      5+9n    7+7n*   9+4n NP
  
    repX = repe, repz, repne or repnz
        * : 5 if n = 0
 
        Example:        repne cmpsb
 
  
CMPXCHG    Compare and Exchange (486+)
 
        operands        bytes                           486     Pentium
        reg, reg         3                               6       5   NP
        mem, reg       3+d(0-2)                         7-10     6   NP
 
        Example:        cmpxchg ebx, edx
 
 
CMPXCHG8B  Compare and Exchange 8 bytes (Pentium+)
 
          operands      bytes                                   Pentium
          mem, reg     3+d(0-2)                                 10   NP
 
        Example:        cmpxchg8b [ebx], edx
 
 
CPUID   CPU identification (Pentium+)
 
                bytes                                           Pentium
                 2                                              14   NP
 
        Example:        cpuid
 
 
DAA     Decimal adjust AL after addition
 
                bytes   8088    186     286     386     486     Pentium
                 1       4       4       3       4       2       3   NP
 
        Example:        daa
 
 
DAS     Decimal adjust AL after subtraction
 
                bytes   8088    186     286     386     486     Pentium
                 1       4       4       3       4       2       3   NP
 
        Example:        das
 
 
DEC     Decrement
 
    operand     bytes   8088    186     286     386     486     Pentium
    r8           2       3       3       2       2       1       1   UV
    r16          1       3       3       2       2       1       1   UV
    r32          1       3       3       2       2       1       1   UV
    mem       2+d(0,2)  23+EA   15       7       6       3       3   UV
 
        Example:        dec     eax
 
 
DIV     Unsigned divide
 
    operand     bytes   8088    186     286     386     486     Pentium
    r8           2     80-90     29     14      14      16      17   NP
    r16          2    144-162    38     22      22      24      25   NP
    r32          2       -       -       -      38      40      41   NP
    mem8    2+d(0-2)   86-96+EA  35     17      17      16      17   NP
    mem16   2+d(0-2)  150-168+EA 44     25      25      24      25   NP
    mem32   2+d(0-2)     -       -       -      41      40      41   NP
 
   implied    operand       quotient   remainder
   dividend
   AX      /  byte       =      AL     AH
   DX:AX   /  word       =      AX     DX
   EDX:EAX /  dword      =     EAX     EDX
 
        Example:        div     ebx
 
 
ENTER   Make stack frame for procedure parameters (186+)
 
      operands  bytes   8088    186     286     386     486     Pentium
      imm16, 0     3     -      15      11      10      14      11   NP
      imm16, 1     4     -      25      15      12      17      15   NP
      imm16, imm8  4     -   22+16n    12+4n   15+4n   17+3i  15+2i  NP
                        n = imm8-1;  i = imm8
 
        Example:        enter   1, 0 
 
 
ESC     Escape
 
escape opcodes D8 - DF are used by floating point instructions
 

  
HLT     Halt
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       5       4       4   NP
 
        Example:        hlt 
 
 
IDIV    Signed divide
 
     operand    bytes    8088      186    286    386    486     Pentium
     r8          2     101-112    44-52   17     19     19      22   NP
     r16         2     165-184    53-61   25     27     27      30   NP
     r32         2       -          -      -     43     43      46   NP
     mem8   2+d(0-2)  107-118+EA  50-58   20     22     20      22   NP
     mem16  2+d(0-2)  171-190+EA  59-67   28     30     28      30   NP
     mem32  2+d(0-2)     -          -      -     46     44      46   NP
 
   implied    operand       quotient   remainder
   dividend
   AX      /  byte       =      AL     AH
   DX:AX   /  word       =      AX     DX
   EDX:EAX /  dword      =     EAX     EDX
 
 
        Example:        idiv    ebx
 
 
IMUL    Signed multiply
 
                         Accumulator Multiplies
 
     operand    bytes   8088     186    286     386     486     Pentium
     r8          2      80-98    25-28  13      9-14    13-18   11   NP
     r16         2     128-154   34-37  21      9-22    13-26   11   NP
     r32         2       -        -      -      9-38    13-42   10   NP
     mem8    2+d(0-2)  86-104+EA 32-34  16     12-17    13-18   11   NP
     mem16   2+d(0-2) 134-160+EA 40-43  24     12-25    13-26   11   NP
     mem32   2+d(0-2)    -        -      -     12-41    13-42   10   NP
 
     implied      operand      result
   multiplicand (multiplier)

        AL    *  byte       =  AX
        AX    *  word       =  DX:AX
        EAX   *  dword      =  EDX:EAX
 
        Example:        imul    ebx
  
 
                        2 and 3 operand Multiplies
 
     operands       bytes     186   286    386         486      Pentium
     r16, imm      2+i(1,2)    -    21  9-14/9-22  13-18/13-26  10   NP
     r32, imm      2+i(1,2)    -     -     9-38       13-42     10   NP
     r16,r16,imm   2+i(1,2)  22/29  21  9-14/9-22  13-18/13-26  10   NP
     r32,r32,imm   2+i(1,2)    -     -     9-38       13-42     10   NP
     r16,m16,imm   2+d(0-2)  25/32  24 12-17/12-25 13-18/13-26  10   NP
                    +i(1,2)
     r32,m32,imm   2+d(0-2)+i(1,2)   -    12-41       13-42     10   NP
     r16, r16      2+i(1,2)    -     -     9-22    13-18/13-26  10   NP
     r32, r32      2+i(1,2)    -     -     9-38       13-42     10   NP
     r16, m16      2+d(0-2)+i(1,2)   -    12-25    13-18/13-26  10   NP
     r32, m32      2+d(0-2)+i(1,2)   -    12-41       13-42     10   NP
 
all forms: dest, src                          cycles for:   byte/word
               or                                             dword
           dest, src1, src2
 
 
        Example:        imul    eax, ebx, 10

  
IN      Input from port

    operands    bytes   8088    186     286     386     486     Pentium
    al, imm8     2      14      10       5      12      14       7   NP
    ax, imm8     2      14      10       5      12      14       7   NP
    eax, imm8    2       -       -       -      12      14       7   NP
    al, dx       1      12       8       5      13      14       7   NP
    ax, dx       1      12       8       5      13      14       7   NP
    eax, dx      1       -       -       -      13      14       7   NP
 
                             Protected mode
 
   operands     bytes                           386     486     Pentium
   acc, imm      2                           6/26/26  9/29/27  4/21/19 NP
   acc, dx       1                           7/27/27  8/28/27  4/21/19 NP
 
                   cycles for: CPL <= IOPL / CPL > IOPL / V86
  
 
        Example:        in      al, dx
 
 
INC     Increment
 
    operand     bytes   8088    186     286     386     486     Pentium
    r8           2       3       3       2       2       1       1   UV
    r16          1       3       3       2       2       1       1   UV
    r32          1       3       3       2       2       1       1   UV
    mem       2+d(0,2)  23+EA   15       7       6       3       3   UV
 
        Example:        inc     ebx
  
 
INS/INSB/INSW/INSD     Input from port to string
 
    variations  bytes   8088    186     286     386     486     Pentium
    insb         1       -      14       5      15      17      9    NP
    insw         1       -      14       5      15      17      9    NP
    insd         1       -       -       -      15      17      9    NP
 
                             Protected Mode
 
                bytes                           386     486     Pentium
                 1                           9/29/29 10/32/30 6/24/22 NP
 
                   cycles for: CPL <= IOPL / CPL > IOPL / V86
 
        Example:        rep insb
  
 
INT     Call interrupt procedure
 
      operands  bytes   8088    186     286     386     486     Pentium
        3        1      72      45      23+m    33      26      13   NP
        imm8     2      71      47      23+m    37      30      16   NP
 
                             Protected mode
 
                bytes   8088    186     286     386     486     Pentium
                 1      -       -     (40-78)+m 59-99   44-71  27-82 NP
 
        Example:        int     21h
 
 
INTO    Call interrupt procedure if overflow
 
                bytes   8088    186     286     386     486     Pentium
                 1      4/73    4/48    3/24+m  3/35    3/28    4/13 NP
 
                             Protected mode
 
                bytes                   286     386     486     Pentium
                 1                    (40-78)+m 59-99   44-71  27-56 NP
 
                          Task switch clocks not shown
 
 
        Example:        into
  
 
INVD    Invalidate data cache (486+)
 
                bytes   8088    186     286     386     486     Pentium
                 2       -       -       -       -       4      15   NP
 
        Example:        invd
 
 
INVLPG  Invalidate TLB entry (486+)
 
      operands  bytes                                   486     Pentium
        mem32   5                                       12      25   NP
 
        Example:        invlpg  [eax]
 
 
IRET    Return from interrupt
 
                bytes   8088    186     286     386     486     Pentium
                1       44      28      17+m    22      15     8-27  NP
 
                      Task switch clocks not shown
 
        Example:        iret
 
 
IRETD   32-bit return from interrupt (386+)
 
                bytes                           386     486     Pentium
                1                               22      15    10-27  NP
 
                      Task switch clocks not shown
 
        Example:        iretd
  
 
Jcc     Jump on condition code
 
    operand     bytes   8088    186     286     386     486     Pentium
    near8        2      4/16    4/13    3/7+m   3/7+m   1/3     1    PV
    near16       3       -       -       -      3/7+m   1/3     1    PV
 
                       cycles for:  no jump/jump
 
                     conditional jump instructions:
 
  ja    jump if above                jnbe  jump if not below or equal
  jae   jump if above or equal       jnb   jump if not below
  jb    jump if below                jnae  jump if not above or equal
  jbe   jump if below or equal       jna   jump if not above
  jg    jump if greater              jnle  jump if not less or equal
  jge   jump if greater or equal     jnl   jump if not less
  jl    jump if less                 jnge  jump if not greater or equal
  jle   jump if less or equal        jng   jump if not greater
 
  je    jump if equal                jz    jump if zero
  jne   jump if not equal            jnz   jump if not zero
 
  jc    jump if carry                jnc   jump if not carry
  js    jump if sign                 jns   jump if not sign
  jnp   jump if no parity (odd)      jpo   jump if parity odd
  jo    jump if overflow             jno   jump if not overflow
  jp    jump if parity (even)        jpe   jump if parity even
 
        Example:        jne     not_equal
 
 
JCXZ/JECXZ    Jump if CX/ECX = 0
 
     operand    bytes   8088    186     286     386     486     Pentium
     dest        2      6/18    5/16    4/8+m   5/9+m   5/8     5/6  NP
     dest        2       -       -       -      5/9+m   5/8     5/6  NP
 
                       cycles for:  no jump/jump
 
        Example:        jcxz    cx_is_zero
  
 
JMP     Unconditional jump
 
    operand     bytes   8088    186     286     386     486     Pentium
    short        2      15      13      7+m     7+m      3       1   PV
    near         3      15      13      7+m     7+m      3       1   PV
    far          5      15      13     11+m    12+m     17       3   NP
    r16          2      11      11      7+m     7+m      5       2   NP
    mem16      2+d(0,2) 18+EA   17     11+m    10+m      5       2   NP
    mem32      2+d(4)   24+EA   26     15+m    12+m     13       4   NP
 
    r32          2       -       -       -      7+m      5       2   NP
    mem32      2+d(0,2)  -       -       -     10+m      5       2   NP
    mem48      2+d(6)    -       -       -     12+m     13       4   NP
 
             cycles for jumps through call gates not shown
 
        Example:        jmp     target_address
  
 
LAHF    Load flags into AH
 
                bytes   8088    186     286     386     486     Pentium
                 1       4       2       2       2       3       2   NP
 
        Example:        lahf
  
 
LAR     Load access rights byte (286+)
 
    operands    bytes                   286     386     486     Pentium
    r16, r16     3                      14      15      11       8   NP
    r32, r32     3                       -      15      11       8   NP
    r16, m16     3                      16      16      11       8   NP
    r32, m32     3                       -      16      11       8   NP
 
        Example:        lar     eax, ebx
  
 
LDS     Load far pointer
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, mem   2+d(2)   24+EA   18       7       7       6       4   NP
 
        Example:        lds     si, ptr_1
  
 
LES     Load far pointer
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, mem   2+d(2)   24+EA   18       7       7       6       4   NP
 
        Example:        les     di, ptr_2
 
 
LFS     Load far pointer (386+)
 
    operands    bytes                           386     486     Pentium
    reg, mem   3+d(2,4)                          7       6       4   NP
 
        Example:        lfs     si, ptr_3
 
 
LGS     Load far pointer (386+)
 
    operands    bytes                           386     486     Pentium
    reg, mem   3+d(2,4)                          7       6       4   NP
 
        Example:        lgs     si, ptr_4
 
 
LSS     Load stack segment and offset
 
    operands    bytes                           386     486     Pentium
    reg, mem   3+d(2,4)                          7       6       4   NP
 
        Example:        lss     bp, ptr_5
  
 
LEA     Load effective address
 
    operands    bytes   8088    186     286     386     486     Pentium
    r16, mem    2+d(2)  2+EA     6       3       2      1-2      1   UV
    r32, mem    2+d(2)   -       -       -       2      1-2      1   UV
  
        Example:        lea     eax, [eax+ebx*2+3]
 
 
LEAVE   High level procedure exit (186+)
 
                bytes           186     286     386     486     Pentium
                 1               8       5       4       5       3   NP
 
        Example:        leave
  
 
LGDT    Load global descriptor table register (286+)
 
    operand     bytes                   286     386     486     Pentium
     mem48       5                      11      11      11       6   NP
 
        Example:        lgdt    descriptor[ebx]
 
 
LIDT    Load interrupt descriptor table register (286+)
 
    operand     bytes                   286     386     486     Pentium
     mem48       5                      12      11      11       6   NP
 
        Example:        lidt    descriptor[ebx]
 
 
LLDT    Load local descriptor table register (286+)
 
    operand     bytes                   286     386     486     Pentium
     r16         3                      17      20      11       9   NP
     mem16     3+d(0-2)                 19      24      11       9   NP
 
        Example:        lldt    ax
 
 
LMSW    Load machine status word (286+)
 
    operand     bytes                   286     386     486     Pentium
     r16         3                       3      10      13       8   NP
     mem16     3+d(0-2)                  6      13      13       8   NP
 
        Example:        lmsw    ax
 
 
LOCK    Lock bus on next instruction (prefix)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       0       0       1       1   NP
 
  (Note: xchg always is locked whether it is specified or not)
 
  
        Example:        lock    mov     mem, 1
 
  
LODS/LODSB/LODSW/LODSD    Load string operand
 
    variations  bytes   8088    186     286     386     486     Pentium
    lodsb        1      16      10       5       5       5       2   NP
    lodsw        1      16      10       5       5       5       2   NP
    lodsd        1       -       -       -       5       5       2   NP
 
        Example:        lodsb
 
 
LOOP    Loop control with CX counter
 
      operand   bytes   8088    186     286     386     486     Pentium
      short      2      5/17    5/15    4/8+m   11+m    6/7     5/6  NP
 
loopw short   (uses CX in 32-bit mode)
loopd short   (uses ECX in 16-bit mode)
 
 
        Example:        loop    loop_start
 
 
LOOPE/LOOPZ   Loop while equal (or zero)
 
      operand   bytes   8088    186     286     386     486     Pentium
      short      2      6/18    5/16    4/8     11+m    6/9     7/8  NP
 
loopew short  (uses CX in 32-bit mode)
loopzw short  (uses CX in 32-bit mode)
looped short  (uses ECX in 16-bit mode)
loopzd short  (uses ECX in 16-bit mode)
 
 
        Example:        loope   loop_start
 
 
LOOPNE/LOOPNZ  Loop while not equal (or not zero)
 
        operand bytes   8088    186     286     386     486     Pentium
        short    2      5/19    5/16    4/8     11+m    6/9     7/8  NP
 
loopnew short  (uses CX in 32-bit mode)
loopnzw short  (uses CX in 32-bit mode)
loopned short  (uses ECX in 16-bit mode)
loopnzd short  (uses ECX in 16-bit mode)
 
        Example:        loopne  loop_start
 
 
LSL     Load segment limit (286+)
 
    operands    bytes                   286     386     486     Pentium
    r16, r16     3                      14      20/25   10       8   NP
    r32, r32     3                       -      20/25   10       8
    r16, m16   3+d(0,2)                 16      21/26   10       8
    r32, m32   3+d(0,2)                  -      21/26   10       8
 
        Example:        lsl     eax, ebx
 
 
LTR     Load task register (286+)
 
    operand     bytes                   286     386     486     Pentium
    r16          3                      17      23      20      10   NP
    mem16      3+d(0,2)                 19      27      20      10
 
        Example:        ltr     ax
 
 
MOV     Move data
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       2       2       2       2       1       1   UV
    mem, reg  2+d(0-2)  13+EA    9       3       2       1       1   UV
    reg, mem  2+d(0-2)  12+EA   12       5       4       1       1   UV
    mem, imm  2+d(0-2)  14+EA   12-13    3       2       1       1   UV*
               +i(1,2)
    reg, imm  2+i(1,2)   4       3-4     2       2       1       1   UV
 
    acc, mem     3      14       8       5       4       1       1   UV
    mem, acc     3      14       9       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        mov     eax, ebx
 
 
 
                         Segment Register Moves
 
                               Real Mode
    operands    bytes   8088    186     286     386     486     Pentium
    seg, r16     2       2       2       2       2       3     2-11   NP
    seg, m16   2+d(0,2) 12+EA    9       5       5       3     3-12   NP
    r16, seg     2       2       2       2       2       3       1    NP
    m16, seg   2+d(0,2) 13+EA   11       3       2       3       1    NP
 
 
        Example:        mov     ds, ax
 
 
                       Protected Mode Differences
    operands    bytes                   286     386     486     Pentium
    seg, r16     2                      17      18       9     2-11*  NP
    seg, m16   2+d(0,2)                 19      19       9     3-12*  NP
                        * = add 8 if new descriptor; add 6 if SS
 
                    MOVE to/from special registers (386+)
 
    operands    bytes                           386     486     Pentium
    r32, cr32    3                               6       4       4    NP
    cr32, r32    3                              4/10*   4/16*  12/22* NP
 
    r32, dr32    3                              14/22*  10      2/12* NP
    dr32, r32    3                              16/22*  11     11/12* NP
 
    r32, tr32    3                              12      3/4*     -    NP
    tr32, r32    3                              12      4/6*     -    NP
 
              * = cycles depend on which special register
 
        Example:        mov     cr0, eax
 
 
MOVS/MOVSB/MOVSW/MOVSD    Move data from string to string
 
    variations  bytes   8088    186     286     386     486     Pentium
    movsb        1      18       9       5       7       7       4   NP
    movsw        1      26       9       5       7       7       4   NP
    movsd        1       -       -       -       7       7       4   NP
    rep movsb    2      9+17n   8+8n    5+4n    7+4n   12+3n*   3+n  NP
    rep movsw    2      9+25n   8+8n    5+4n    7+4n   12+3n*   3+n  NP
    rep movsd    2       -       -       -      7+4n   12+3n*   3+n  NP
 
                        * = 5 if n=0, 13 if n=1
                 (n = count of bytes, words or dwords)
 
        Example:        rep movsb
  
 
MOVSX   Move with sign-extend (386+)
 
      operands  bytes                           386     486     Pentium
      reg, reg   3                               3       3       3   NP
      reg, mem   3+d(0,1,2,4)                    6       3       3   NP
 
        (Note: destination reg is 16 or 32-bits; source is 8 or 16 bits)
 
        Example:        movsx   ebx, ax
  
 
MOVZX   Move with zero-extend (386+)
 
      operands  bytes                           386     486     Pentium
      reg, reg   3                               3       3       3   NP
      reg, mem   3+d(0,1,2,4)                    6       3       3   NP
 
        (Note: destination reg is 16 or 32-bits; source is 8 or 16 bits)
 
        Example:        movzx   ebx, ax
 
 
MUL     Unsigned multiply
 
    operand     bytes   8088     186    286     386     486     Pentium
    r8           2     70-77    26-28   13      9-14   13-18    11   NP
    r16          2    118-133   35-37   21      9-22   13-26    11   NP
    r32          2       -        -      -      9-38   13-42    10   NP
    mem8    2+d(0-2)  76-83+EA  32-34   16     12-17   13-18    11   NP
    mem16   2+d(0-2) 124-139+EA 41-43   24     12-25   13-26    11   NP
    mem32   2+d(0-2)     -        -      -     12-41   13-42    10   NP
 
     implied      operand      result
   multiplicand (multiplier)
        AL    *  byte       =  AX
        AX    *  word       =  DX:AX
        EAX   *  dword      =  EDX:EAX
 
        Example:        mul     ebx
 
 
NEG     Two's complement negation
 
    operand     bytes   8088    186     286     386     486     Pentium
    reg          2       3       3       2       2       1       1   NP
    mem       2+d(0-2)  24+EA   13       7       6       3       3   NP
 
        Example:        neg     eax
 
 
NOP     No operation
 
                bytes   8088    186     286     386     486     Pentium
                 1       3       3       3       3       1       1   UV
 
        Example:        nop
 
 
NOT     One's complement negation
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg          2       3       3       2       2       1       1   NP
    mem       2+d(0-2)  24+EA   13       7       6       3       3   NP
 
        Example:        not     eax
 
 
OR      Logical inclusive or
 
   operands     bytes   8088    186     286     386     486     Pentium
   reg, reg      2       3       3       2       2       1       1   UV
   mem, reg   2+d(0,2)  24+EA   10       7       7       3       3   UV
   reg, mem   2+d(0,2)  13+EA   10       7       6       2       2   UV
   reg, imm   2+i(1,2)   4       4       3       2       1       1   UV
   mem, imm   2+d(0,2)  23+EA   16       7       7       3       3   UV*
               +i(1,2)
   acc, imm   1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        or      eax, ebx
 
 
OUT     Output to port
 
    operands    bytes   8088    186     286     386     486     Pentium
    imm8, al     2      14       9       3      10      16      12   NP
    imm8, ax     2      14       9       3      10      16      12   NP
    imm8, eax    2       -       -       -      10      16      12   NP
    dx, al       1      12       7       3      11      16      12   NP
    dx, ax       1      12       7       3      11      16      12   NP
    dx, eax      1       -       -       -      11      16      12   NP
 
                             Protected Mode
 
    operands    bytes                           386     486     Pentium
    imm8, acc    2                            4/24/24 11/31/29 9/26/24 NP
    dx, acc      1                            5/25/25 10/30/29 9/26/24 NP
 
               cycles for: CPL <= IOPL / CPL > IOPL / V86
 
        Example:        out     dx, al
 
 
OUTS/OUTSB/OUTSW/OUTSD    Output string to port
 
    variations  bytes           186     286     386     486     Pentium
    outsb        1              14       5      14      17      13   NP
    outsw        1              14       5      14      17      13   NP
    outsd        1               -       -      14      17      13   NP
 
                             Protected Mode
 
                bytes                           386     486     Pentium
                 1                           8/28/28 10/32/30 10/27/25 NP
 
               cycles for: CPL <= IOPL / CPL > IOPL / V86
 
        Example:        rep outsw
 
 
POP     Pop a word/dword from the stack
 
    operand     bytes   8088    186     286     386     486     Pentium
    reg          1      12      10       5       4       1       1   UV
    mem       2+d(0-2)  25+EA   20       5       5       6       3   NP
    seg          1      12       8       5       7       3       3   NP
    FS/GS        2       -       -       -       7       3       3   NP
 
                             Protected Mode
 
    operand     bytes                   286     386     486     Pentium
    CS/DS/ES     1                      20      21       9     3-12  NP
    SS           1                      20      21       9     8-17  NP
    FS/GS        2                       -      21       9     3-12  NP
 
        Example:        pop     eax
 
 
POPA/POPAD    Pop all (186+)/Pop all double (386+)
 
    variations  bytes           186     286     386     486     Pentium
    popa         1              51      19      24       9       5   NP
    popad        1               -       -      24       9       5   NP
 
  popa  = pop di, si, bp, sp, bx, dx, cx, ax
  popad = pop edi, esi, ebp, esp, ebx, edx, ecx, eax
          (sp and esp are discarded)
 
        Example:        popa
 
 
POPF/POPFD   Pop flags/Pop flags double (386+)
 
    variations  bytes   8088    186     286     386     486     Pentium
    popf         1      12       8       5       5       9       6   NP
    popfd        1       -       -       -       5       9       6   NP
 
                             Protected Mode
 
                bytes                   286     386     486     Pentium
    popf         1                       5       5       6       4   NP
    popfd        1                       -       5       6       4   NP
 
        Example:        popf
 
 
PUSH   push a word/dword to the stack
 
     operand    bytes   8088    186     286     386     486     Pentium
     reg         1      15      10       3       2       1       1   UV
     mem      2+d(0-2)  24+EA   16       5       5       4       2   NP
     seg         1      14       9       3       2       3       1   NP
     imm     1+i(1,2)    -       -       3       2       1       1   NP
     FS/GS       2       -       -       -       2       3       1   NP
 
        Example:        push    eax
 
 
PUSHA/PUSHAD   Push all (186+)/Push all double (386+)
 
    variations  bytes           186     286     386     486     Pentium
    pusha        1              36      17      18      11       5   NP
    pushad       1               -       -      18      11       5   NP
 
  pusha  = push ax, cx, dx, bx, sp, bp, si, di,
  pushad = push eax, ecx, edx, ebx, esp, ebp, esi, edi
 
        Example:        pusha
 
 
PUSHF/PUSHFD   Push flags/Push flags double (386+)
 
    variations  bytes   8088    186     286     386     486     Pentium
    pushf        1      14       9       3       4       4       9   NP
    pushfd       1       -       -       -       4       4       9   NP
 
                             Protected Mode
 
                bytes                   286     386     486     Pentium
    pushf        1                       3       4       3       3   NP
    pushfd       1                       -       4       3       3   NP
 
        Example:        pushf
 
 
RCL     Rotate bits left with CF
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       9       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7      10       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      9      8-30    7-24 NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n     10      9-31    9-26 NP
    reg, imm     3       -       5+n    5+n      9      8-30    8-25 NP
    mem, imm  3+d(0,2)   -      17+n    8+n     10      9-31   10-27 NP
 
        Example:        rcl     eax, 16
 
 
RCR     Rotate bits right with CF
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       9       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7      10       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      9      8-30    7-24 NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n     10      9-31    9-26 NP
    reg, imm     3       -       5+n    5+n      9      8-30    8-25 NP
    mem, imm  3+d(0,2)   -      17+n    8+n     10      9-31   10-27 NP
 
        Example:        rcr     eax, 16
 
 
ROL     Rotate bits left
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       3       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7       7       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      3       3       4   NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n      7       4       4   NP
    reg, imm     3       -       5+n    5+n      3       2       1   PU
    mem, imm  3+d(0,2)   -      17+n    8+n      7       4       3   PU*
 
       * = not pairable if there is a displacement and immediate
 
        Example:        rol     eax, 16
 
 
ROR     Rotate bits right
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       3       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7       7       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      3       3       4   NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n      7       4       4   NP
    reg, imm     3       -       5+n    5+n      3       2       1   PU
    mem, imm  3+d(0,2)   -      17+n    8+n      7       4       3   PU*
 
       * = not pairable if there is a displacement and immediate

        Example:        ror     eax, 16
 
 
RDMSR   Read from model specific register (Pentium+)
 
                bytes                                           Pentium
                2                                              20-24 NP
 
        Example:        rdmsr
  
 
REP     Repeat string operation
 
  See:  MOVS (rep movs)         move block
  See:  STOS (rep stos)         fill block
 
 
REPE    Repeat while equal (or zero) string operation
 
  See:  CMPS (repe cmps)        find non-matching memory items
  See:  CMPS (repe scas)        find non-acc matching byte in memory
 
 
REPNE   Repeat while not equal (or not zero) string operation 

  See:  CMPS (repne cmps)       find first matching memory items
  See:  SCAS (repne scas)       find first matching memory item to acc
 
 
RET/RETN/RETF     Return from procedure
 
   variations/
   operands     bytes   8088    186     286     386     486     Pentium
   retn         1       20      16      11+m    10+m     5       2   NP
   retn imm16   1+d(2)  24      18      11+m    10+m     5       3   NP
   retf         1       34      22      15+m    18+m    13       4   NP
   retf imm16   1+d(2)  33      25      15+m    18+m    14       4   NP
 
  RET is coded by the assembler as near or far based on the
      procedure declaration and program model, as:
 
      RETN (return near)
      RETF (return far)
 
        Example:        ret
 
                             Protected Mode
 
    variations/
    operands    bytes                   286     386     486     Pentium
    retf        1                     25+m/55  32+m/62 18/33  4-13/23 NP
    retf imm16  1+d(2)                25+m/55  32+m/68 17/33  4-13/23 NP
 
         cycles for: same privilege level/lower privilege level
 
 
RSM     Resume from system management mode (Pentium+)
 
                bytes                                           Pentium
                 2                                              83   NP
 
        Example:        rsm
 
 
SAL/SHL/SAR/SHR   Shift bits
 
   operands     bytes   8088    186     286     386     486     Pentium
   reg, 1        2       2       2       2       3       3       1   PU
   mem, 1     2+d(0,2)  23+EA   15       7       7       4       3   PU
   reg, cl       2       8+4n    5+n    5+n      3       3       4   NP
   mem, cl    2+d(0,2) 28+EA+4n 17+n    8+n      7       4       4   NP
   reg, imm      3       -       5+n    5+n      3       2       1   PU
   mem, imm   3+d(0,2)   -      17+n    8+n      7       4       3   PU*
 
       * = not pairable if there is a displacement and immediate
 
   sal = shift arithmetic left         sar =  shift arithmetic right
   shl = shift left (same as sal)      shr =  shift right
 
        Example:        shl     eax, 1
 
 
SAHF    Store AH into flags
 
                bytes   8088    186     286     386     486     Pentium
                 1       4       3       2       3       2       2   NP
 
        Example:        sahf
 
 
SBB     Integer subtraction with borrow
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   PU
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   PU
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   PU
    reg, imm  2+i(1,2)   4       4       3       2       1       1   PU
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   PU*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   PU
 
       * = not pairable if there is a displacement and immediate
 
        Example:        sbb     eax, ebx
 
 
SCAS/SCASB/SCASW/SCASD    Scan string data
 
    variations  bytes   8088    186     286     386     486     Pentium
    scasb        1      19      15       7       7       6       4   NP
    scasw        1      19      15       7       7       6       4   NP
    scasd        1       -       -       -       7       6       4   NP
    repX scasb   2      9+15n   5+15n   5+8n    5+8n    7+5n*   8+4n NP
    repX scasw   2      9+19n   5+15n   5+8n    5+8n    7+5n*   8+4n NP
    repX scasd   2       -       -       -      5+8n    7+5n*   8+4n NP
 
    repX = repe or repz or repne or repnz
 
                     * = 5 if n=0
                     (n = count of bytes, words or dwords)
 
 
        Example:        repne   scasb
 
 
SET     Set byte to 1 on condition else set to 0 (386+)
 
      operand   bytes                           386     486     Pentium
      r8         3                               4      4/3     1/2  NP
      mem8     3+d(0-2)                          5      3/4     1/2  NP
 
                        Cycles are for:  true/false
 
  setCC = one of:
 
     seta    setae   setb    setbe   setc    sete
     setg    setge   setl    setle   setna   setnae
     setnb   setnbe  setnc   setne   setng   setnge
     setnl   setnle  setno   setnp   setns   setnz
     seto    setp    setpe   setpo   sets    setz
 
        Example:        setne   al
 
 
SGDT    Store global descriptor table register (286+)
 
     operand    bytes                   286     386     486     Pentium
     mem48       5                      11       9      10       4   NP
 
        Example:        sgdt    descriptor[ebx]
 
 
SIDT    Store interrupt descriptor table register (286+)
 
     operand    bytes                   286     386     486     Pentium
     mem48       5                      12       9      10       4   NP
 
        Example:        sidt    descriptor[ebx]
 
 
SHLD    Double precision shift left (386+)
 
     operands        bytes                      386     486     Pentium
     reg, reg, imm    4                          3       2       4   NP
     mem, reg, imm   4+d(0-2)                    7       3       4   NP
     reg, reg, cl     4                          3       3       4   NP
     mem, reg, cl    4+d(0-2)                    7       4       5   NP
 
        Example:        shld    eax, ebx, 16
 
 
SHRD    Double precision shift right (386+)
 
     operands        bytes                      386     486     Pentium
     reg, reg, imm    4                          3       2       4   NP
     mem, reg, imm   4+d(0-2)                    7       3       4   NP
     reg, reg, cl     4                          3       3       4   NP
     mem, reg, cl    4+d(0-2)                    7       4       5   NP
  
        Example:        shrd    eax, ebx, 16
 
 
SLDT    Store local descriptor table register (286+)
 
     operands   bytes                   286     386     486     Pentium
     r16         3                       2       2       2       2   NP
     mem16     3+d(0-2)                  3       2       3       2   NP
 
        Example:        sldt    ax
 
 
SMSW    Store machine status word (286+)
 
     operands   bytes                   286     386     486     Pentium
     r16         3                       2       2       2       4   NP
     mem16     3+d(0-2)                  3       3       3       4   NP
 
        Example:        smsw    ax
 
 
STC     Set the carry flag
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       2       2       2   NP
 
        Example:        stc
 
 
STD     Set direction flag (set to reverse string direction)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       2       2       2   NP
 
        Example:        std
 
 
STI     Set interrupt flag (enable)
 
                bytes   8088    186     286     386     486     Pentium
                 1       2       2       2       3       5       7   NP
 
        Example:        sti
 
 
STOS/STOSB/STOSW/STOSD    Store string data
 
    variations  bytes   8088    186     286     386     486     Pentium
    stosb        1      11      10       3       4       5       3   NP
    stosw        1      15      10       3       4       5       3   NP
    stosd        1       -       -       -       4       5       3   NP
    rep stosb    2      9+10n   6+9n    4+3n    5+5n    7+4n*   3+n  NP
    rep stosw    2      9+14n   6+9n    4+3n    5+5n    7+4n*   3+n  NP
    rep stosd    2       -       -       -      5+5n    7+4n*   3+n  NP
 
                        * = 5 if n=0, 13 if n=1
                 (n = count of bytes, words or dwords)
 
        Example:        rep     stosd
 
 
STR     Store task register (286+)
 
    operand     bytes                   286     386     486     Pentium
    r16          3                       2       2       2       2   NP
    mem16     3+d(0-2)                   3       2       3       2   NP
 
        Example:        str     bx
 
 
SUB     Integer subtraction
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   UV
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   UV
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   UV
    reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   UV*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
 
       * = not pairable if there is a displacement and immediate
 
        Example:        sub     eax, ebx
 
 
TEST    Logical compare 
 
     operands   bytes   8088    186     286     386     486     Pentium
     reg, reg    2       3       3       2       2       1       1   UV
     mem, reg 2+d(0,2)  13+EA   10       6       5       2       2   UV
     reg, mem 2+d(0,2)  13+EA   10       6       5       2       2   UV
     reg, imm 2+i(1,2)   5       4       3       2       1       1   UV
     mem, imm 2+d(0,2)  11+EA   10       6       5       2       2   UV*
               +i(1,2)
     acc, imm 1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        sub     eax, ebx
 
 
VERR    Verify a segment for reading (286+)
 
     operand    bytes                   286     386     486     Pentium
     r16         3                      14      10      11       7   NP
     mem16    3+d(0,2)                  16      11      11       7   NP
 
        Example:        verr    ax
 
 
VERW    Verify a segment for writing (286+)
 
     operand    bytes                   286     386     486     Pentium
     r16         3                      14      15      11       7   NP
     mem16    3+d(0,2)                  16      16      11       7   NP
 
        Example:        verr    ax
 
 
WAIT    Wait for co-processor
 
                bytes   8088    186     286     386     486     Pentium
                 1       4       6       3       6      1-3      1   NP
 
        Example:        wait
 
 
WBINVD  Write-back and invalidate data cache (486+)
 
                bytes                                   486     Pentium
                 2                                       5    2000+  NP
 
        Example:        wbinvd
 
 
WRMSR   Write to model specific register (PENTIUM+)
 
                bytes                                           Pentium
                 2                                             30-45 NP
 
        Example:        wrmsr
 
 
XADD    Exchange and add (486+)
 
     operands   bytes                                   486     Pentium
     reg, reg    3                                       3       3   NP
     mem, reg   3+d(0-2)                                 4       4   NP
 
        Example:        xadd    eax, ebx
 
 
XCHG    Exchange register/memory with register
 
     operands   bytes   8088    186     286     386     486     Pentium
     reg, reg    2       4       4       3       3       3       3   NP
     reg, mem  2+d(0-2)  25+EA  17       5       5       5       3   NP
     mem, reg  2+d(0-2)  25+EA  17       5       5       5       3   NP
 
     acc, reg    1       3       3       3       3       3       2   NP
     reg, acc    1       3       3       3       3       3       2   NP
 
     in above: acc = AX or EAX only
 
 
        Example:        xchg    ax, dx
 
 
XLAT/XLATB   Table look-up translation
 
                bytes   8088    186     286     386     486     Pentium
                 1      11      11       5       5       4       4   NP
 
        Example:        xlat
 
 
XOR     Logical exclusive or
 
    operands    bytes   8088    186     286     386     486     Pentium
    reg, reg     2       3       3       2       2       1       1   UV
    mem, reg  2+d(0,2)  24+EA   10       7       7       3       3   UV
    reg, mem  2+d(0,2)  13+EA   10       7       6       2       2   UV
    reg, imm  2+i(1,2)   4       4       3       2       1       1   UV
    mem, imm  2+d(0,2)  23+EA   16       7       7       3       3   UV*
               +i(1,2)
    acc, imm  1+i(1,2)   4       4       3       2       1       1   UV
 
        * = not pairable if there is a displacement and immediate
 
        Example:        xor     eax, ebx
  

Home Page    e-mail to Quantasm     Order form    Site Map