The 8080 processor is the second processor manufactured by Intel. It is an 8-bit processor that was first manufactured in April 1974. The 8080 architecture evolved from the 8008 architecture (by providing 16 bit operations for example) and is an ancestor of the x86 architecture.
The 8080 processor uses an 16-bit address bus and an 8-bit data bus, allowing to address up to 64KiB of memory. The stack pointer and the program counter are thus 16-bit registers.
The processor has 7 8-bit registers: A, B, C, D, E, H and L. A is the primary accumulator. The other registers can be used either individually or grouped into 16-bit register pairs (BC, DE, HL), thus allowing 16-bit operations that were not available on 8008.
The processor maintains internal status register where some bits are updated as it runs instructions. The status bits are:
- Sign (S), set if the result is negative
- Zero (Z), set if the result is zero
- Parity (P), set if the result has an even number of 1s
- Carry (C), set if the last addition operation required a carry or the last substraction required a borrow
- Auxiliary-Carry, used for Binary Coded Decimal arithmetic The flags can be copied as a group into the accumulator (register A). The accumulator and the flag togheter form the Program Status Word (PSW).
The 8080 processor mainly deals with 8-bit operations, but has limited abilities for 16-bit operations. Operations are encoded using one byte, and some of them are followed by one or two byte(s) which can be an immediate operand value, a memory address or a port number. This constitutes the basic scheme for parameter passing.
8 RST instructions are used for calling subroutines: interrupt service routines or system calls. Their codes are multiples of 08h starting from 00h.
The complete list of instructions supported by the 8080 processor is available in the documentation (8080asm.pdf) and on the Emulator101 website.
https://en.wikipedia.org/wiki/Intel_8080 https://pastraiser.com/cpu/i8080/i8080_opcodes.html