====== Intel 8080 ======
A massively popular and influential 8-bit microprocessor originally released in 1974. Among other uses, it powered the [[Altair 8800]] and served as the basis for the [[Z80]] and the [[LR35902]].
===== Architecture =====
The 8080 has the following registers:
^ 15...8 ^ 7...0 ^ ^
| A | F | PSW |
| B | C | B |
| D | E | D |
| H | L | H |
| SP ||
| PC ||
Flags register:
^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^
| S | Z | 0 | A | 0 | P | 1 | C |
Like its descendants, the 8080 stores addresses in little-endian format and has a stack that grows downward.
===== Instruction set =====
Opcode table [(pastraiser8080)]
^ ^ x0 ^ x1 ^ x2 ^ x3 ^ x4 ^ x5 ^ x6 ^ x7 ^ x8 ^ x9 ^ xA ^ xB ^ xC ^ xD ^ xE ^ xF ^
^ 0x | NOP | LXI B,d16 | STAX B | INX B | INR B | DCR B | MVI B,d8 | MVI B,d8 | *NOP | DAD B | LDAX B | DCX B | INR C | DCR C | MVI C,d8 | RRC |
^ 1x | *NOP | LXI D,d16 | STAX D | INX D | INR D | DCR D | MVI D,d8 | RAL | *NOP | DAD D | LDAX D | DCX D | INR E | DCR E | MVI E,d8 | RAR |
^ 2x | *NOP | LXI H,d16 | SHLD a16 | INX H | INR H | DCR H | MVI H,d8 | DAA | *NOP | DAD H | LHLD a16 | DCX H | INR L | DCR L | MVI L,d8 | CMA |
^ 3x | *NOP | LXI SP,d16 | STA a16 | INX SP | INR M | DCR M | MVI M,d8 | STC | *NOP | DAD SP | LDA a16 | DCX SP | INR A | DCR A | MVI A,d8 | CMC |
^ 4x | MOV B,B | MOV B,C | MOV B,D | MOV B,E | MOV B,H | MOV B,L | MOV B,M | MOV B,A | MOV C,B | MOV C,C | MOV C,D | MOV C,E | MOV C,H | MOV C,L | MOV C,M | MOV C,A |
^ 5x | MOV D,B | MOV D,C | MOV D,D | MOV D,E | MOV D,H | MOV D,L | MOV D,M | MOV D,A | MOV E,B | MOV E,C | MOV E,D | MOV E,E | MOV E,H | MOV E,L | MOV E,M | MOV E,A |
^ 6x | MOV H,B | MOV H,C | MOV H,D | MOV H,E | MOV H,H | MOV H,L | MOV H,M | MOV H,A | MOV L,B | MOV L,C | MOV L,D | MOV L,E | MOV L,H | MOV L,L | MOV L,M | MOV L,A |
^ 7x | MOV M,B | MOV M,C | MOV M,D | MOV M,E | MOV M,H | MOV M,L | HLT | MOV M,A | MOV A,B | MOV A,C | MOV A,D | MOV A,E | MOV A,H | MOV A,L | MOV A,M | MOV A,A |
^ 8x | ADD B | ADD C | ADD D | ADD E | ADD H | ADD L | ADD M | ADD A | ADC B | ADC C | ADC D | ADC E | ADC H | ADC L | ADC M | ADC A |
^ 9x | SUB B | SUB C | SUB D | SUB E | SUB H | SUB L | SUB M | SUB A | SBB B | SBB C | SBB D | SBB E | SBB H | SBB L | SBB M | SBB A |
^ Ax | ANA B | ANA C | ANA D | ANA E | ANA H | ANA L | ANA M | ANA A | XRA B | XRA C | XRA D | XRA E | XRA H | XRA L | XRA M | XRA A |
^ Bx | ORA B | ORA C | ORA D | ORA E | ORA H | ORA L | ORA M | ORA A | CMP B | CMP C | CMP D | CMP E | CMP H | CMP L | CMP M | CMP A |
^ Cx | RNZ | POP B | JNZ a16 | JMP a16 | CNZ a16 | PUSH B | ADI d8 | RST 0 | RZ | RET | JZ a16 | *JMP a16 | CZ a16 | CALL a16 | ACI d8 | RST 1 |
^ Dx | RNC | POP D | JNC a16 | OUT d8 | CNC a16 | PUSH D | SUI d8 | RST 2 | RC | *RET | JC a16 | IN d8 | CC a16 | *CALL a16 | SBI d8 | RST 3 |
^ Ex | RPO | POP H | JPO a16 | XTHL | CPO a16 | PUSH H | ANI d8 | RST 4 | RPE | PCHL | JPE a16 | XCHG | CPE a16 | *CALL a16 | XRI d8 | RST 5 |
^ Fx | RP | POP PSW | JP a16 | DI | CP a16 | PUSH PSW | ORI d8 | RST 6 | RM | SPHL | JM a16 | EI | CM a16 | *CALL a16 | CPI d8 | RST 7 |
===== Resources =====
* [[https://altairclone.com/downloads/manuals/8080%20Programmers%20Manual.pdf|8080 programmer's manual]]
* [[https://pastraiser.com/cpu/i8080/i8080_opcodes.html|8080 opcode table]]
===== References =====
[(pastraiser8080>https://pastraiser.com/cpu/i8080/i8080_opcodes.html)]
~~REFNOTES~~