# A basic overview of 8086 Microprocessor

Introduced by Intel in 1978, the 8086 intel microprocessor is the successor of intel 8085.

It fulfilled all the gaps of the 8-bit intel 8085 microprocessor launched in 1976.

8086 intel microprocessor is used till now in systems as it is considered a legacy by intel (educational purposes).

8086 intel microprocessor is a 16-bit processor that was fabricated using the silicon gate H-MOS process on a chip of about 225 mil. sq.

The MOS technology has a rapid processing speed with a clock rate of 5MHz, the fastest of its time with 29,000 embedded with MOSFET transistors.

This microprocessor has characteristics of 8085 as well, behaving like an 8-bit processor along with being a 16-bit processor.

8086 intel microprocessor is capable of holding 1 MB of memory supporting multiple configurations.

### This processor has several mathematical operations that 8085 lacked, as follows

1. 16-bit arithmetic operations

2. Signed 8- and 16- bit arithmetic operations

3. Multiplication

4. Division

5. Byte string operations

6. Bit interchange

7. Float values

8. Position independent coding

8086 only understands binary codes, either 0 or 1.

This translates that the programmable language is Machine Language or assembly-level language.

To be able to perform operations, the developer needs to understand binary instruction codes in depth.

## Architecture: The architecture of the 8086 microprocessor

The architecture of the 8086 intel microprocessor is divided into two units- The bus interface unit (BIU) and the Execution Unit (EU).

Both the units divide work of them, increasing the processing speed.

**Bus Interface Unit**

Used for fetching Instruction bytes.

This unit is responsible for fetching memory instructions and for transmission of data as it loads the addressees on the address bus.

It performs read and write operations.

The main configuration is First-In-First-Out FIFO for data to be transferred in 6 bytes.

This unit has six 16-bit memory registers as the following

- Code Segment
- Stack Segment
- Extra Segment
- Data Segment

These registers are loaded with the 16 most significant bits of the starting addresses of the memory segment into the 20-bit address bus for the current operation performed by the 8086 intel microprocessor.

**Execution Unit**

As the name suggests, the execution unit is responsible for executing the set of instructions given by the bus interface unit.

This unit contains

- Control unit
- 16-bit Arithmetic Logic Unit (ALU)
- General-purpose register
- Index registers

### Flags

The 8-bit general-purpose registers of 8086 intel microprocessor are often clubbed together to operate at 16-bit registers.

The arithmetic logic unit is the base of the unit where all the core mathematical and logic functions are performed.

Stack Segment Register contains the 16-bit address of the stack.

The stack pointer contains a 16-bit offset value.

Base Pointer, Source Index, and Destination Index hold 16-bit offset values of the segments of the bus interface unit.

These are 16-bits of the Data segment and Extra Segment.

8086 microprocessor contains 9 flags in the register as conditional flags and control flags.

**Control Flags**

3 control flags are used to perform 8086 intel microprocessor operations.

1. Interrupt Flag: Used to generate interrupts.

2. Trap Flag: Used to step in between assembly language.

3. Direction Flag: Used in string operations.

**Conditional Flags**

6 conditional flags are used when conditional statements arise at the time of execution in the 8086 intel microprocessor.

**1. Carry Flag:** Carry Flag is set whenever the result of a mathematical n bit operation generates n+m bits. Else, it is reset.

**2. Parity Flag:** Parity Flag is set whenever the result of a mathematical or logic operation contains an even number of 1s in the result. Else, it is reset if there are an odd number of parities.

**3. Auxillary Carry Flag:** Auxiliary Carry Flag is set whenever the result of a mathematical operation in BCD numbers generates a carry. Else, it is reset if no carry is generated.

**4. Sign Flag:** Sign Flag is set whenever the result of a mathematical operation is negative. Else, it is reset when the result is positive.

**5. Zero Flag:** Zero Flag is set whenever the result of a mathematical or logical operation is 0 (00H in binary). Else, it is reset if the result is not zero.

**6. Overflow Flag:** Overflow Flag is set whenever the result of an operation represented in bits is too large to store. Else, it is reset if the result fits.