Lesson 13 of 48 intermediate

8086 Pins and Signals

Understanding the 40-pin DIP package and every signal that connects the 8086 to the outside world

Open interactive version (quiz + challenge)

Real-world analogy

Think of the 8086 chip as a post office building. The 40 pins are its doors and windows — some doors let mail out (address lines), some let mail in (data lines), and some are signal flags on the roof that tell delivery trucks when to stop, wait, or go (control signals).

What is it?

The 8086 microprocessor uses a 40-pin DIP package where each pin serves a specific role: AD0-AD15 carry multiplexed address and data, A16-A19 provide upper address bits, ALE latches the address, RD/WR control read and write operations, M/IO distinguishes memory from I/O access, INTR/NMI handle interrupts, HOLD/HLDA enable DMA, READY inserts wait states for slow devices, and RESET initializes the processor.

Real-world relevance

Every PC motherboard ever made routes these exact signal types between the CPU and chipset. When your computer boots, the RESET pin releases and the CPU fetches its first instruction from address FFFF0h — this is why the BIOS ROM must sit at the top of the first megabyte. Understanding these pins is essential for designing embedded 8086 systems and reading hardware schematics.

Key points

Code example

; Visualizing an 8086 memory read bus cycle
; Step-by-step pin activity during a MOV AX, [2000h]

; T1 state:
;   ALE = HIGH (address is valid)
;   AD0-AD15 = 2000h (lower 16 bits of address)
;   A16-A19  = segment-derived upper bits
;   M/IO     = HIGH (memory access)

; T1 falling edge of ALE:
;   External 8282 latch captures address 2000h

; T2 state:
;   ALE = LOW
;   AD0-AD15 = floating (tri-state), preparing for data
;   RD = LOW (read strobe asserted)

; T3 state:
;   READY sampled — if LOW, insert Tw
;   AD0-AD15 = data from memory appears

; T4 state:
;   CPU latches data from AD0-AD15 into AX
;   RD = HIGH (read complete)
;   Bus cycle ends

Line-by-line walkthrough

  1. 1. T1 state: ALE goes HIGH — this is the 'address is ready!' announcement. AD0-AD15 carry the 16-bit address of the memory location we want to read.
  2. 2. A16-A19 carry the upper 4 address bits derived from the segment register — together with AD0-AD15, this forms the full 20-bit physical address.
  3. 3. M/IO is set HIGH because this is a memory access (MOV from memory), not an I/O port operation.
  4. 4. On the falling edge of ALE, external 8282 latches capture and hold the address — the bus is about to switch roles.
  5. 5. T2 state: AD0-AD15 go tri-state momentarily, then RD is asserted LOW — this tells the memory chip to place its data on the bus.
  6. 6. T3 state: the CPU checks the READY pin — if the memory is slow and READY is LOW, the CPU just waits in Tw states.
  7. 7. Once READY is HIGH, the memory has placed valid data on AD0-AD15. The CPU reads these lines.
  8. 8. T4 state: the CPU captures the data into the destination register (AX), releases RD back to HIGH, and the bus cycle is complete.

Spot the bug

; System design: 8086 connected to memory
; Problem: Data read from memory is always garbage

; Hardware setup:
;   AD0-AD15 connected directly to memory data pins
;   A16-A19 connected to upper address decoder
;   RD connected to memory OE (output enable)
;   ALE is not connected to anything
;   M/IO connected to memory CS (chip select)
Need a hint?
Without a latch, what happens to the address when AD0-AD15 switch to data mode in T2?
Show answer
Bug: ALE is not connected to an address latch (like 8282). Since AD0-AD15 are multiplexed, the address is only valid during T1. Without a latch to capture and hold the address when ALE pulses, the address lines switch to data mode in T2 and the memory chip loses the address — reading from a random/unstable location. Fix: Connect ALE to the clock input of an 8282 latch, route AD0-AD15 through the latch for address lines, and connect the latch outputs to the memory address pins.

Explain like I'm 5

Imagine the 8086 is a person sitting in a room with 40 strings tied to their fingers. Some strings ring bells (to say 'I want to read!'), some pull open doors (to let data in or out), and some are pulled by others (to say 'Wait!' or 'I need your attention!'). Every time the clock ticks, the person follows a pattern — put the address on some strings, then switch to moving data through the same strings.

Fun fact

The 8086 has exactly 40 pins — the same count as the Intel 8085 it replaced. Intel deliberately kept the same package size to reuse existing manufacturing tooling, even though the 8086 was far more complex. The multiplexed address/data bus was the trick that made this possible.

Hands-on challenge

Draw or describe the complete pin diagram of the 8086 from memory. Group the 40 pins into five categories: address/data, control output, control input, interrupt, and power. For each category, list the pin names and briefly state their purpose. Then trace what happens on each pin during a single memory write bus cycle (T1 through T4).

More resources

Open interactive version (quiz + challenge) ← Back to course: Microprocessor A–Z