Back Next

808x CPU

8088 CPU diagram 


Source : https://en.wikipedia.org/wiki/Intel_8086

16-bit little-endian (later 32 bit, 64 bit)

808X (Intel) Registers
  4 16-bit (semi-)General purpose registers.
    Also assigned specific functions or paired with certain actions.
    A - accumulator, 
    B - base, used as a memory pointer
    C - counter, 
    D - used if certain math instructions result are larger than 16 bits. 

    Also addressable at the byte level AH, AL, BH etc. 
     AX, BX ...  used when all 16 bits inferred.
    
    When uses as address pointers, combined with (DS) by default.
      May be over-ridden in some cases.        

  5 16-bit dedicated purpose address (pointer) registers.
    SP - stack pointer - user programmable .(SS)
    BP - base pointer - used for random access of the stack for data.(SS)
    SI - source index 
      (used by specific commands with DI to move blocks of data) (DS)
    DI - destination index (DS)
       - when uses for string moves (ES)
    IP - instruction pointer. (CS)

   BP or BX can be combined with SI or DI to form a base,indexed pair to
    specify an address (pointer).
    
  20-bit memory address register.
    MAR filled by adding 
      16-bit instruction pointer to code segment (CS) register * 16.
                                                   (shifted 4 bits left)
    Later variations of the 808x CPU treat these as a joint 32 bit value.
    Latest versions are 32-bits wide allowing 64 bit addressing.

  8/16 bit Memory data register. (8088/8086)

  4 16 bit segment registers.

    CS - code segment - paired with IP. Offset by 4 bits to generate a
       20 bit address. 1MiB
    DS - data segment - pair with SI. 
    SS - stack segment - SP and BP
      SP was auto incremented/decremented by certain instructions.
      BP was user manipulated.
    ES - extra segment - paired with DI in string commands.

    Some instructions allow programmer to specify alternative segment register.


Useful reference : https://www.cpu-world.com/Arch/8086.html