Open source
  • Bandwidth benchmark
  • TouchWidgets UI lib
  • Diviner big number math
  • Documentation
  • x86 instructions ref
  • GIT quick ref
  • GPG quick ref
  • Avoid Ubuntu
  • Android malware risks
  • iOS malware risks
  • OS/X security tips
  • Who blocks Tor
  • Software engineering
  • BASH aliases
  • I.B. pro/con
  • Nutrition
  • Other apps
  • Blog
  • Contact
    1 at zsmith dot co

    The Intel 8086 / 8088 / 80186 / 80286 / 80386 / 80486 Instruction Set

    This HTML version of the file intel.doc from the PC Game Programmer's guide was produced by , veritasNOSPAM@comcast.net. Fancy HTML modifications are copyright © 2005 by , all rights reserved. This information is provided in the hope that it will be useful, but without any warranty; it is provided AS-IS, without even the implied warranty of fitness for a particular purpose.

    B Instructions

    BOUND - Array Index Bound Check (80188+)
     
        Usage:  BOUND   src,limit
        Modifies flags: None
    
        Array index in source register is checked against upper and lower
        bounds in memory source.  The first word located at "limit" is
        the lower boundary and the word at "limit+2" is the upper array bound.
        Interrupt 5 occurs if the source value is less than or higher than
        the source.
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg16,mem32       -   nj=13 nj=10   7             2
        reg32,mem64       -   nj=13 nj=10   7             2
    
        - nj = no jump taken
    

    BSF - Bit Scan Forward (386+)
     
        Usage:  BSF     dest,src
        Modifies flags: ZF
    
        Scans source operand for first bit set.  Sets ZF if a bit is found
        set and loads the destination with an index to first set bit.  Clears
        ZF is no bits are found set.  BSF scans forward across bit pattern
        (0-n) while BSR scans in reverse (n-0).
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg,reg           -     -   10+3n  6-42           3
        reg,mem           -     -   10+3n  7-43          3-7
        reg32,reg32       -     -   10+3n  6-42          3-7
        reg32,mem32       -     -   10+3n  7-43          3-7
    

    BSR - Bit Scan Reverse (386+)
     
        Usage:  BSR     dest,src
        Modifies flags: ZF
    
        Scans source operand for first bit set.  Sets ZF if a bit is found
        set and loads the destination with an index to first set bit.  Clears
        ZF is no bits are found set.  BSF scans forward across bit pattern
        (0-n) while BSR scans in reverse (n-0).
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg,reg           -     -   10+3n  6-103          3
        reg,mem           -     -   10+3n  7-104         3-7
        reg32,reg32       -     -   10+3n  6-103         3-7
        reg32,mem32       -     -   10+3n  7-104         3-7
    

    BSWAP - Byte Swap (486+)
     
        Usage:  BSWAP   reg32
        Modifies flags: none
    
        Changes the byte order of a 32 bit register from big endian to
        little endian or vice versa.   Result left in destination register
        is undefined if the operand is a 16 bit register.
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg32             -     -     -     1             2
    

    BT - Bit Test (386+)
     
        Usage:  BT      dest,src
        Modifies flags: CF
    
        The destination bit indexed by the source value is copied into the
        Carry Flag.
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg16,immed8      -     -     3     3            4-8
        mem16,immed8      -     -     6     6            4-8
        reg16,reg16       -     -     3     3            3-7
        mem16,reg16       -     -     12    12           3-7
    

    BTC - Bit Test with Compliment (386+)
     
        Usage:  BTC     dest,src
        Modifies flags: CF
    
        The destination bit indexed by the source value is copied into the
        Carry Flag after being complimented (inverted).
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg16,immed8      -     -     6     6            4-8
        mem16,immed8      -     -     8     8            4-8
        reg16,reg16       -     -     6     6            3-7
        mem16,reg16       -     -     13    13           3-7
    

    BTR - Bit Test with Reset (386+)
     
        Usage:  BTR     dest,src
        Modifies flags: CF
    
        The destination bit indexed by the source value is copied into the
        Carry Flag and then cleared in the destination.
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg16,immed8      -     -     6     6            4-8
        mem16,immed8      -     -     8     8            4-8
        reg16,reg16       -     -     6     6            3-7
        mem16,reg16       -     -     13    13           3-7
    

    BTS - Bit Test and Set (386+)
     
        Usage:  BTS     dest,src
        Modifies flags: CF
    
        The destination bit indexed by the source value is copied into the
        Carry Flag and then set in the destination.
    
                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes
    
        reg16,immed8      -     -     6     6            4-8
        mem16,immed8      -     -     8     8            4-8
        reg16,reg16       -     -     6     6            3-7
        mem16,reg16       -     -     13    13           3-7
    



    © Zack Smith