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