An 8-bit register can store 28 different values. The
range of
integer values that can be stored in 8 bits depends on the
integer representation used. With the two most common representations, the range is 0 through 255 for representation as an (
unsigned)
binary number, and −128 through 127 for representation as
two's complement. 8-bit CPUs use an
8-bit data bus and can therefore access 8 bits of data in a single
machine instruction. The address bus is typically a double octet (
16 bits) wide, due to practical and economical considerations. This implies a direct
address space of 64
KB (65,536 bytes) on most 8-bit processors. Most
home computers from the 8-bit era fully exploited the address space, such as the
BBC Micro (Model B) with 32 KB of
RAM plus 32 KB of
ROM. Others like the very popular
Commodore 64 had full 64 KB RAM, plus 20 KB ROM, meaning with 16-bit addressing not all of the RAM could be used by default (e.g. from the included
BASIC language interpreter in ROM); without exploiting
bank switching, which allows for breaking the 64 KB (RAM) limit in some systems. Other computers would have as low as 1 KB (plus 4 KB ROM), such as the Sinclair
ZX80 (while the later very popular
ZX Spectrum had more memory), or even only 128 bytes of RAM (plus
storage from a
ROM cartridge), as in an early game console
Atari 2600 and thus 8-bit addressing would have been enough for the RAM, if it would not have needed to cover ROM too). The
Commodore 128, and other 8-bit systems, meaning still with 16-bit addressing, could use more than 64 KB, i.e. 128 KB RAM, also the
BBC Master with it expandable to 512 KB of RAM. While in general 8-bit CPUs have 16-bit addressing, in some architectures both are available, such as in the
MOS Technology 6502 CPU, where the
zero page is used extensively, saving one byte in the instructions accessing that page, and also having 16-bit addressing instructions that take 2 bytes for the address plus 1 for the opcode. Some
index registers, such as the two in the 6502, are 8-bit. This limits the size of the arrays addressed using
indexed addressing instructions to objects of up to 256 bytes without requiring more complicated code. Other 8-bit CPUs, such as the
Motorola 6800 and
Intel 8080, have 16-bit index registers. == Notable 8-bit CPUs ==