Safekipedia

Intel 8080

Adapted from Wikipedia Β· Discoverer experience

Two Intel 8080 microprocessor chips, early computer processors used in the 1970s.

The Intel 8080 was Intel's second 8-bit microprocessor, introduced in April 1974. It built upon the earlier Intel 8008 and became much more powerful and easier to use. The 8080 was first made for special jobs like calculators, cash registers, and computer terminals, but it soon became popular for many other uses, helping start the microcomputer industry.

Several smart design choices made the 8080 a big success. It had a simpler 40-pin package, worked faster with new technology, and could handle more memory than its predecessor. These changes came from ideas and feedback from people who used the earlier chip.

The 8080 was used in early personal computers like the Altair 8800 and helped create the x86 architecture that many computers still use today. It could run at 2 MHz and perform many tasks quickly, making it a key part of the first home computers.

History

The Intel 8080 was made to fix problems with an earlier chip called the 8008. People wanted a better chip, so Intel began working on the 8080 in 1971. The designers wanted to make a chip that could do more things and work faster.

The 8080 was finished in 1973 and officially released in April 1974. It became popular because it was better and faster than older chips. This chip helped start the era of small computers that many people could use.

Description

Programming model

The Intel 8080 is the successor to the Intel 8008. It uses the same basic instruction set and register model as the 8008, although it is neither source code compatible nor binary code compatible with its predecessor. Every instruction in the 8008 has an equivalent instruction in the 8080. The 8080 also adds 16-bit operations in its instruction set. The 8080 has addressing modes to directly access its full 16-bit memory space, unlike the 8008. The 8080's 40-pin DIP packaging provides a 16-bit address bus and an 8-bit data bus that access 64Β KiB (216 bytes) of memory.

Registers

The processor has seven 8-bit registers (A, B, C, D, E, H, and L), where A is the primary 8-bit accumulator. The other six registers can be used as individual 8-bit registers or in three 16-bit register pairs (BC, DE, and HL). The 8080 has a 16-bit stack pointer to memory, replacing the 8008's internal stack, and a 16-bit program counter.

Flags

The processor maintains internal flag bits (a status register), which indicate the results of arithmetic and logical instructions. The flags are:

  • Sign (S), set if the result is negative.
  • Zero (Z), set if the result is zero.
  • Parity (P), set if the number of 1 bits in the result is even.
  • Carry (C), set if the last addition operation resulted in a carry or if the last subtraction operation required a borrow.
  • Auxiliary carry (AC or H), used for binary-coded decimal arithmetic (BCD).

Commands, instructions

As with many other 8-bit processors, all instructions are encoded in one byte, with some followed by one or two bytes of data. It has automatic CALL and RET instructions for multi-level procedure calls and returns and instructions to save and restore any 16-bit register pair on the machine stack. Eight one-byte call instructions (RST) for subroutines exist at fixed addresses. The slowest instruction is XTHL, which exchanges the register pair HL with the last item pushed on the stack.

8-bit instructions

All 8-bit ALU operations with two operands can only be performed on the 8-bit accumulator (the A register). Increments and decrements can be performed on any 8 bit register or an HL-addressed memory byte. Direct copying is supported between any two 8-bit registers and between any 8-bit register and an HL-addressed memory byte.

16-bit operations

Although the 8080 is generally an 8-bit processor, it has limited abilities to perform 16-bit operations. Any of the three 16-bit register pairs (BC, DE, or HL) or SP can be loaded with an immediate 16-bit value, incremented or decremented, or added to HL. The only 16-bit instructions that affect any flag is DAD, which sets the CY (carry) flag. BC, DE, HL, or PSW can be copied to and from the stack using PUSH and POP.

Instruction set

See also: Intel 8008 Β§Β Instruction set, and Intel 8085 Β§Β Instruction set

Input/output scheme

Input output port space

The 8080 supports 256 input/output (I/O) ports, accessed via dedicated I/O instructions taking port addresses as operands. This I/O mapping scheme frees up the processor's limited address space. Many CPU architectures use memory-mapped I/O (MMIO), which uses a common address space for both RAM and peripheral chips.

Separate stack space

8080 pinout

One of the bits in the processor state word indicates that the processor is accessing data from the stack. This feature is seldom used.

Status word

For more advanced systems, during the beginning of each machine cycle, the processor places an eight bit status word on the data bus. This byte contains flags that determine whether the memory or I/O port is accessed.

Interrupts

Hardware interrupts are initiated by asserting the interrupt request (INT) pin. Interrupts may be enabled and disabled with EI and DI instructions, respectively. Interrupts are disabled after an INTA; they must be re-enabled explicitly by the interrupt service routine. The 8080 does not support non-maskable interrupts.

Example code

The following 8080/8085 assembler source code is for a subroutine named memcpy that copies a block of data bytes of a given size from one location to another.

Pin use

The address bus has its own 16 pins, and the data bus has 8 pins. The processor needs three power sources (βˆ’5, +5, and +12Β V) and two non-overlapping high-amplitude synchronizing signals.

OpcodeOperandsMnemonicClocksDescription
76543210b2b3
00000000β€”β€”NOP4No operation
00RP0001datlodathiLXI rp,data10RP ← data
00RP0010β€”β€”STAX rp7(RP) ← A [BC or DE only]
00RP0011β€”β€”INX rp5RP ← RP + 1
00DDD100β€”β€”INR ddd5/10DDD ← DDD + 1
00DDD101β€”β€”DCR ddd5/10DDD ← DDD - 1
00DDD110dataβ€”MVI ddd,data7/10DDD ← data
00RP1001β€”β€”DAD rp10HL ← HL + RP
00RP1010β€”β€”LDAX rp7A ← (RP) [BC or DE only]
00RP1011β€”β€”DCX rp5RP ← RP - 1
00000111β€”β€”RLC4A1-7 ← A0-6; A0 ← Cy ← A7
00001111β€”β€”RRC4A0-6 ← A1-7; A7 ← Cy ← A0
00010111β€”β€”RAL4A1-7 ← A0-6; Cy ← A7; A0 ← Cy
00011111β€”β€”RAR4A0-6 ← A1-7; Cy ← A0; A7 ← Cy
00100010addloaddhiSHLD add16(add) ← HL
00100111β€”β€”DAA4If A0-3 > 9 OR AC = 1 then A ← A + 6;
then if A4-7 > 9 OR Cy = 1 then A ← A + 0x60
00101010addloaddhiLHLD add16HL ← (add)
00101111β€”β€”CMA4A ← Β¬A
00110010addloaddhiSTA add13(add) ← A
00110111β€”β€”STC4Cy ← 1
00111010addloaddhiLDA add13A ← (add)
00111111β€”β€”CMC4Cy ← Β¬Cy
01DDDSSSβ€”β€”MOV ddd,sss5/7DDD ← SSS
01110110β€”β€”HLT7Halt
10ALUSSSβ€”β€”ADD ADC SUB SBB ANA XRA ORA CMP sss4/7A ← A [ALU operation] SSS
11CC000β€”β€”Rcc (RET conditional)5/11If cc true, PC ← (SP), SP ← SP + 2
11RP0001β€”β€”POP rp10RP ← (SP), SP ← SP + 2
11CC010addloaddhiJcc add (JMP conditional)10If cc true, PC ← add
11000011addloaddhiJMP add10PC ← add
11CC100addloaddhiCcc add (CALL conditional)11/17If cc true, SP ← SP - 2, (SP) ← PC, PC ← add
11RP0101β€”β€”PUSH rp11SP ← SP - 2, (SP) ← RP
11ALU110dataβ€”ADI ACI SUI SBI ANI XRI ORI CPI data7A ← A [ALU operation] data
11N111β€”β€”RST n11SP ← SP - 2, (SP) ← PC, PC ← N x 8
11001001β€”β€”RET10PC ← (SP), SP ← SP + 2
11001101addloaddhiCALL add17SP ← SP - 2, (SP) ← PC, PC ← add
11010011portβ€”OUT port10Port ← A
11011011portβ€”IN port10A ← Port
11100011β€”β€”XTHL18HL ↔ (SP)
11101001β€”β€”PCHL5PC ← HL
11101011β€”β€”XCHG4HL ↔ DE
11110011β€”β€”DI4Disable interrupts
11111001β€”β€”SPHL5SP ← HL
11111011β€”β€”EI4Enable interrupts
76543210b2b3MnemonicClocksDescription
SSS DDD210CCALURP
B000NZADD ADI (A ← A + arg)BC
C001ZADC ACI (A ← A + arg + Cy)DE
D010NCSUB SUI (A ← A - arg)HL
E011CSBB SBI (A ← A - arg - Cy)SP or PSW
H100POANA ANI (A ← A ∧ arg)
L101PEXRA XRI (A ← A ⊻ arg)
M110PORA ORI (A ← A ∨ arg)
A111NCMP CPI (A - arg)
SSS DDD210CCALU
Pin numberSignalTypeComment
1A10OutputAddress bus 10
2GNDβ€”Ground
3D4BidirectionalBidirectional data bus. The processor also momentarily transmits the "processor state" during SYNC^Ο†1, providing information about what the processor is currently doing:
D0 (INTA) reading interrupt command. In response to the interrupt signal, the processor is reading and executing a single arbitrary command with this flag raised. Normally the supporting chips provide the subroutine call command (CALL or RST), transferring control to the interrupt handling code.
D1 (WO-) low true. Write to memory or output to port
D2 (STACK) accessing stack (probably a separate stack memory space was initially planned)
D3 (HLTA) doing nothing, has been halted by the HLT instruction
D4 (OUT) writing data to an output port
D5 (M1) reading the first byte of an instruction
D6 (IN) reading data from an input port
D7 (MEMR) reading data from memory
4D5
5D6
6D7
7D3
8D2
9D1
10D0
11βˆ’5 Vβ€”The βˆ’5 V power supply. This must be the first power source connected and the last disconnected, otherwise the processor will be damaged.
12RESETInputReset. This active low signal forces execution of commands located at address 0000. The content of other processor registers is not modified.
13HOLDInputDirect memory access request. The processor is requested to switch the data and address bus to the high impedance ("disconnected") state.
14INTInputInterrupt request
15Ο†2InputThe second phase of the clock generator signal
16INTEOutputThe processor has two commands for setting 0 or 1 level on this pin. The pin normally is supposed to be used for interrupt control. In simple computers, however, it was sometimes used as a single bit output port for various purposes.
17DBINOutputRead (the processor reads from memory or input port)
18WR-OutputWrite (the processor writes to memory or output port). This is an active low output.
19SYNCOutputActive level indicates that the processor has put the "state word" on the data bus. The various bits of this state word provide added information to support the separate address and memory spaces, interrupts, and direct memory access. This signal is required to pass through additional logic before it can be used to write the processor state word from the data bus into some external register, e.g., 8238 Wayback Machine-System Controller and Bus Driver.
20+5 Vβ€”The + 5Β V power supply
21HLDAOutputDirect memory access confirmation. The processor switches data and address pins into the high impedance state, allowing another device to manipulate the bus
22Ο†1InputThe first phase of the clock generator signal
23READYInputWait. With this signal it is possible to suspend the processor's work. It is also used to support the hardware-based step-by step debugging mode.
24WAITOutputWait (indicates that the processor is in the waiting state)
25A0OutputAddress bus
26A1
27A2
2812 Vβ€”The +12 V power supply. This must be the last connected and first disconnected power source.
29A3OutputThe address bus; can switch into high impedance state on demand
30A4
31A5
32A6
33A7
34A8
35A9
36A15
37A12
38A13
39A14
40A11

Support chips

The Intel 8080 microprocessor became very successful partly because many supporting chips were available to help it work. These chips helped with tasks like sending information, keeping time, controlling devices, and managing tasks.

The supporting chips included:

Physical implementation

The Intel 8080 microprocessor used a special kind of design called NMOS. This design needed extra power levels, including +12 V and βˆ’5 V, in addition to the usual +5 V used in many electronic parts.

It was made using a process called silicon gate, with very tiny details measuring just 6 micrometers. The chip had around 4,500 tiny parts called transistors connected by metal layers. The chip itself was about 20 mmΒ² in size.

Commercial impact

Applications and successors

The 8080 was used in many early computers, such as the MITS Altair 8800, Processor Technology SOL-20, and IMSAI 8080. These machines often ran the CP/M operating system. Later, the Zilog Z80 processor built on this success, becoming very popular along with CP/M from about 1976 to 1983.

Even after newer processors like the Z80 and 8085 came out, the 8080 remained popular. In 1979, five companies were selling about 500,000 units each month for around $3 to $4 each. The 8080 was also used in early single-board computers like MYCRO-1 and in systems for managing money on buses and trains worldwide. It even powered early arcade games, including Gun Fight and Space Invaders.

The 8080 influenced many later processors. Intel followed it with the 8085, and later the 16-bit Intel 8086 and Intel 8088, which IBM used in its first PC. The ideas and instructions from the 8080 live on in today’s computers.

Industry change

The 8080 changed how computers were made. Before it, big companies like Digital Equipment Corporation, Hewlett-Packard, and IBM built entire computers themselves. The 8080 let anyone create computer systems more easily. For example, Hewlett-Packard used it in smart terminals that could run BASIC, and Microsoft’s first product, Microsoft BASIC, was made for the 8080.

The 8080 helped lead to the creation of the x86 family of processors, which are still used in many computers today. Many of the 8080’s basic ideas and instructions are still part of these modern chips.

US Patent

US patent 4010449, Federico Faggin, Masatoshi Shima, Stanley Mazor, "MOS computer employing a plurality of separate chips", issued March 1, 1977. This patent includes important ideas for early computer design.

Cultural impact

The Intel 8080 chip helped change computers forever, and its influence reached beyond technology. An asteroid in space was named 8080 Intel to honor the chip’s big role in how computers developed. Even some phone numbers, like Microsoft’s 425-882-8080, were picked because they included the numbers from this important chip. Many of Intel’s own phone numbers also used the ending 8080 to remember this key part of their history.

Images

An AMD AM9080ADC CERDIP40 integrated circuit package, showing the design of an electronic component used in computing technology.
A close-up of the Soviet K580IK80 chip, an early clone of the Intel i8080 microprocessor used in computers.
An OKI MSM8080A microcontroller chip, a small electronic component used in technology and engineering.
A Siemens SAB8080A electronic component, commonly used in early microcomputers.
A close-up photo of a Tesla MHB8080AC CPU chip, showing its intricate design and manufacturing details.
An example of an early computer microprocessor from 1984, showing how technology looked in the past.
An image of historical computer hardware, the Intel 8080 processor, from Poland.
A microprocessor chip, part of a Mitsubishi M5L8080AP, shown against an orange background.
A close-up of the National Semiconductor INS8080AJ microprocessor, showing its detailed design on an orange background.
An image of the NEC 8080AF electronic device.
An image of the Signetics MP8080AI microprocessor chip, an early computer processor used in technology history.
A close-up of the TI TMS8080JL microprocessor chip, an early computer processor used in technology history.

Related articles

This article is a child-friendly adaptation of the Wikipedia article on Intel 8080, available under CC BY-SA 4.0.

Images from Wikimedia Commons. Tap any image to view credits and license.