Intel 8008 microprocessor architecture

Memory

Program and data memories occupy the same memory space. The total addressable memory size is 16 KB.

Program memory - program can be located anywhere in memory. Jump, branch and call instructions use 14-bit addresses (16-bit addresses with 2 the most significant bits ignored), i.e. they can be used to jump/branch anywhere within 16 KB. All jump/branch instructions use absolute addressing.

Data memory - the processor always uses 14-bit addresses so that data can be placed anywhere.

Stack memory consists of 7 14-bit registers. The size of stack memory is sufficient to nest subroutines 7-levels deep.

First 64 bytes in a zero memory page should be reserved for vectors used by RST instructions.

Interrupts

The processor support non-maskable interrupts. When an interrupt occurs the processor fetches from the bus one instruction, usually one of these instructions:

  • One of the 8 RST instructions (RST0 - RST7). The processor saves current program counter into stack and branches to memory location N * 8 (where N is a 3-bit number from 0 to 7 supplied with the RST instruction).
  • CALL instruction (3 byte instruction). The processor calls the subroutine, address of which is specified in the second and third bytes of the instruction.

I/O ports

8 Input ports?
24 Output ports?

Registers

Accumulator or A register is an 8-bit register used for arithmetic, logic, I/O and load/store operations.

Data registers - 6 8-bit registers:

  • 4 8-bit registers B, C, D and E are used for temporary storage.
  • 8-bit H and 8-bit L registers can be used as one 16-bit HL register pair. HL register usually contains a data pointer used to reference memory addresses. In this case the L register contains low-order byte, and 2 most significant bits in the register H are ignored.

Flag register contains 4 flag bits: Sign, Zero, Parity and Carry.

Program counter is a 14-bit register.

Stack registers are 7 14-bit registers.

Instruction Set

8008 instruction set consists of 48 instructions:

  • Data moving instructions.
  • Arithmetic - add, subtract, increment and decrement.
  • Logic - AND, OR, XOR, compare and rotate.
  • Control transfer - conditional, unconditional, call subroutine, return from subroutine and restarts.
  • Input/Output instructions.
  • Other - Halt instruction.

Instruction length can be from 1 to 3 bytes.

Addressing modes

Register - references the data in a register.
Register indirect - instruction specifies HL register pair containing address, where the data is located.
Immediate.

(c) Copyright 2003 Gennadiy Shvets