Description
1.1 8086 Microprocessor: Salient Features and Pin Descriptions 📌
Salient Features
The 8086 is an enhanced 16-bit microprocessor developed by Intel in 1978.2
-
Architecture: It is a 16-bit microprocessor, meaning its ALU, internal registers, and internal data bus are 16 bits wide.3
-
Memory Addressing: It has a 20-bit address bus, allowing it to access 4$2^{20} = **1\text{ MB}**$ of physical memory locations (from 5$00000\text{H}$ to 6$FFFFF\text{H}$).7
-
Data Bus: It has a 16-bit data bus, enabling it to read or write 16 bits (a word) or 8 bits (a byte) at a time.
-
I/O Ports: It can address 8$2^{16} = **65,536**$ I/O ports.9
-
Pipelining: It uses a two-stage pipeline (Fetch and Execute) with a 6-byte instruction prefetch queue to speed up instruction execution by overlapping fetch and execution cycles.10
-
Operating Modes: It supports two operating modes:11
-
Minimum Mode: Suitable for single-processor systems.12
-
Maximum Mode: Suitable for multiprocessor systems
-
-
Registers: It has fourteen 16-bit registers.
-
Clock Speed: It was available in different versions, typically 13$5\text{ MHz}$, 14$8\text{ MHz}$, and 15$10\text{ MHz}$.16
Pin Descriptions
The 8086 is a 40-pin Dual In-line Package (DIP).17 Many pins are multiplexed, meaning they serve dual purposes depending on the timing.18
| Pin Group | Description | Key Pins/Functions |
| Address/Data Bus | Multiplexed lines used for address during the first clock cycle and for data/status during subsequent cycles. | AD0-AD15: 16 multiplexed Address/Data lines. |
| Address/Status Bus | Multiplexed lines for the high-order address bits and status signals. | A16-A19/S3-S6: 4 multiplexed Address/Status lines. |
| Control Signals | Signals to control read/write and memory/I/O operations. | $\overline{\textbf{RD}}$ (Read), $\overline{\textbf{WR}}$ (Write), M/$\overline{\text{IO}}$ (Memory/I/O), ALE (Address Latch Enable). |
| Bus High Enable | Used with A19 to indicate 16-bit transfer. | $\overline{\textbf{BHE}}/\text{S7}$: Bus High Enable/Status bit 7. |
| Clock and Power | Provides timing and power supply. | CLK (Clock Input), VCC ($+5\text{V}$ supply), GND (Ground). |
| Interrupts | Used for external interrupt requests. | INTR (Interrupt Request), NMI (Non-Maskable Interrupt), $\overline{\textbf{INTA}}$ (Interrupt Acknowledge). |
| Mode Selection | Determines the operating mode. | MN/$\overline{\text{MX}}$ (Minimum/Maximum Mode). |
| Ready Signal | Used by slower peripherals to slow down the CPU. | READY |
| Minimum Mode Signals | Control signals specific to minimum mode (single processor). | $\overline{\textbf{WR}}$, M/$\overline{\text{IO}}$, ALE, $\overline{\textbf{INTA}}$, $\text{HOLD}$, $\text{HLDA}$. |
| Maximum Mode Signals | Status/Control signals specific to maximum mode (multiprocessor). | $\overline{\textbf{S0}}$, $\overline{\textbf{S1}}$, $\overline{\textbf{S2}}$, $\overline{\textbf{LOCK}}$, $\overline{\textbf{QS0}}$, $\overline{\textbf{QS1}}$, $\overline{\textbf{RQ}}/\overline{\textbf{GT0}}$, $\overline{\textbf{RQ}}/\overline{\textbf{GT1}}$. |
1.2 Architecture of 8086: Functional Block Diagram & Register Organization
The 8086 architecture is logically divided into two independent functional units to achieve parallel processing: the Bus Interface Unit (BIU) and the Execution Unit (EU).19
Functional Block Diagram
-
Bus Interface Unit (BIU)
-
Purpose: Handles all external bus operations like fetching instructions, reading/writing operands, and generating physical addresses.20
-
Components:
-
Instruction Queue (6-bytes): A FIFO (First-In, First-Out) buffer that stores prefetched instruction bytes, enabling pipelining.21
-
Segment Registers (CS, DS, SS, ES): 16-bit registers used for memory segmentation to calculate the 20-bit physical address.22
-
Instruction Pointer (IP): A 16-bit register that holds the offset address of the next instruction to be fetched from the Code Segment.23
-
Address Generation Circuit: Combines the segment register content (shifted left by 4 bits) with the offset address to produce the 20-bit physical address.24
-
-
-
Execution Unit (EU)
-
Purpose: Decodes and executes instructions received from the BIU’s instruction queue.25
-
Components:
-
Arithmetic and Logic Unit (ALU): Performs 16-bit arithmetic and logic operations.26
-
Control Unit (CU): Decodes instructions and generates control signals.
-
General Purpose Registers (AX, BX, CX, DX):27 Used for data storage and temporary results.28
-
Pointer and Index Registers (SP, BP, SI, DI):29 Used to hold offset addresses for various addressing modes.30
-
Flag Register (PSW): A 16-bit register that stores the status of the result of ALU operations and controls CPU operation.31
-
-
Register Organization
The 8086 has fourteen 16-bit registers, grouped as follows:
-
General Purpose Registers (Data Registers)
-
AX (Accumulator): Used for I/O operations and arithmetic.32 Can be split into AH (High) and AL (Low) 8-bit registers.33
-
BX (Base Register): Used as a base register for memory addressing.34 Can be split into BH and BL.35
-
CX (Count Register): Used as a counter for loop and string instructions.36 Can be split into CH and CL.37
-
DX (Data Register): Used for I/O port addressing and in multiplication/division operations. Can be split into DH and DL.38
-
-
Segment Registers (Used by BIU)39
-
CS (Code Segment): Stores the base address of the memory segment containing the program instructions.40
-
DS (Data Segment): Stores the base address of the memory segment containing program data.41
-
SS (Stack Segment):42 Stores the base address of the memory segment containing the stack.43
-
ES (Extra Segment): Stores the base address of an extra data segment (often used for string operations).
-
-
Pointer and Index Registers (Used by EU)
-
IP (Instruction Pointer): Holds the offset address of the next instruction in the Code Segment.45 (Used with CS)
-
SP (Stack Pointer):46 Holds the offset address of the top of the stack in the Stack Segment. (Used with SS)
-
BP (Base Pointer):47 Holds the offset address of a data item in the Stack Segment, primarily for accessing function parameters.48 (Used with SS)
-
SI (Source Index): Holds the offset address of the source data in the Data Segment for string operations.49 (Used with DS)
-
DI (Destination Index): Holds the offset address of the destination data in the Extra Segment for string operations.50 (Used with ES)
-
-
Flag Register (Status Register)
-
A 16-bit register where only 9 bits are actively used.51 It contains Status Flags (CF, PF, AF, ZF, SF, OF) and Control Flags (TF, IF, DF).
-
1.3 Concept of Pipelining
Pipelining is a technique used in the 8086 to increase the speed of execution (throughput) by overlapping the instruction fetch cycle with the instruction execution cycle.52
-
Two Independent Units: The 8086 architecture enables pipelining by separating the processor into the Bus Interface Unit (BIU) and the Execution Unit (EU), allowing them to operate in parallel (asynchronously).53
-
BIU Task (Fetch): The BIU fetches up to 6 bytes of the next sequential instructions from memory and stores them in its Instruction Queue whenever the bus is free and the queue has at least two empty spaces.54
-
EU Task (Execute): The EU reads the instruction bytes from the instruction queue, decodes them, and executes them.55
-
Parallel Operation: While the EU is executing the current instruction, the BIU is simultaneously fetching the next instructions.56 This reduces the time the EU has to wait for instructions to arrive from memory, thus improving overall performance.
-
Pipeline Flush: If a branch or jump instruction is executed, the instructions already loaded in the queue are no longer the next sequential instructions and become irrelevant.57 In this case, the queue is flushed (cleared), and the BIU begins fetching from the new target address, causing a temporary performance drop.58
1.4 Memory Segmentation and Physical Memory Address Generation
Memory Segmentation
The 8086 uses memory segmentation to achieve its 59$1\text{ MB}$ memory addressing capability with only 16-bit registers.60
-
Logical Division: The 61$1\text{ MB}$ of physical memory is logically divided into smaller, independent units called segments.62
-
Segment Size: Each segment can have a maximum size of 63$64\text{ KB}$ (64$2^{16}$ bytes), which can be addressed by a 16-bit offset.65
-
Active Segments: The 8086 works with four primary segments at any given time, whose starting addresses are held in the four 16-bit Segment Registers (CS, DS, SS, ES).66
-
Advantage: It allows for flexible memory management, code/data/stack separation, and allows the 16-bit registers to address the 20-bit address space.67
Physical Memory Address Generation
The CPU generates a 20-bit Physical Address (PA) from a 32-bit Logical Address (a combination of a 16-bit Segment Address and a 16-bit Offset Address, written as Segment:Offset).68
The BIU’s address generation circuit calculates the 20-bit Physical Address using the following formula:
Equivalently, multiplying by 16 is the same as shifting the 16-bit segment address left by 4 bits and padding with four $0$‘s.
Example:
-
Segment Address (CS): $1000\text{H}$
-
Offset Address (IP): $2535\text{H}$
- Shift Segment Address left by 4 bits (add a trailing $0\text{H}$):
$$1000\text{H} \rightarrow 10000\text{H}$$
- Add the Offset Address:
$$\begin{array}{r} 10000\text{H} \\ + \ 2535\text{H} \\ \hline 12535\text{H} \end{array}$$
-
Physical Address (PA): 69$12535\text{H}$ (a 20-bit address)70
-
This mechanism is why the starting address of any segment must be divisible by 16 (i.e., a paragraph boundary).71





Reviews
There are no reviews yet.