MIT Unit 5 Notes
MIT Unit 5 Notes
8086 ARCHITECTURE
Microprocessor & Interfacing techniques Notes
EU (Execution Unit)
Execution unit gives instructions to BIU stating from where to fetch the data and then decode and
execute those instructions. Its function is to control operations on data using the instruction decoder &
ALU. EU has no direct connection with system buses as shown in the above figure, it performs
operations over data through BIU.
Let us now discuss the functional parts of 8086 microprocessors.
ALU
It handles all arithmetic and logical operations, like +, −, ×, /, OR, AND, NOT operations.
Flag Register
It is a 16-bit register that behaves like a flip-flop, i.e. it changes its status according to the result stored
in the accumulator. It has 9 flags and they are divided into 2 groups − Conditional Flags and Control
Flags.
Conditional Flags
It represents the result of the last arithmetic or logical instruction executed. Following is the list of
conditional flags −
Carry flag − This flag indicates an overflow condition for arithmetic operations.
Auxiliary flag − When an operation is performed at ALU, it results in a carry/barrow from
lower nibble (i.e. D0 – D3) to upper nibble (i.e. D4 – D7), then this flag is set, i.e. carry given
by D3 bit to D4 is AF flag. The processor uses this flag to perform binary to BCD conversion.
Parity flag − This flag is used to indicate the parity of the result, i.e. when the lower order 8-bits
of the result contains even number of 1’s, then the Parity Flag is set. For odd number of 1’s, the
Parity Flag is reset.
Zero flag − This flag is set to 1 when the result of arithmetic or logical operation is zero else it is
set to 0.
Microprocessor & Interfacing techniques Notes
Sign flag − This flag holds the sign of the result, i.e. when the result of the operation is negative,
then the sign flag is set to 1 else set to 0.
Overflow flag − This flag represents the result when the system capacity is exceeded.
Control Flags
Control flags controls the operations of the execution unit. Following is the list of control flags −
Trap flag − It is used for single step control and allows the user to execute one instruction at a
time for debugging. If it is set, then the program can be run in a single step mode.
Interrupt flag − It is an interrupt enable/disable flag, i.e. used to allow/prohibit the interruption
of a program. It is set to 1 for interrupt enabled condition and set to 0 for interrupt disabled
condition.
Direction flag − It is used in string operation. As the name suggests when it is set then string
bytes are accessed from the higher memory address to the lower memory address and vice-a-
versa.
General purpose register
There are 8 general purpose registers, i.e., AH, AL, BH, BL, CH, CL, DH, and DL. These registers
can be used individually to store 8-bit data and can be used in pairs to store 16bit data. The valid
register pairs are AH and AL, BH and BL, CH and CL, and DH and DL. It is referred to the AX, BX,
CX, and DX respectively.
Microprocessor & Interfacing techniques Notes
AX register − It is also known as accumulator register. It is used to store operands for arithmetic
operations.
BX register − It is used as a base register. It is used to store the starting base address of the
memory area within the data segment.
CX register − It is referred to as counter. It is used in loop instruction to store the loop counter.
DX register − This register is used to hold I/O port address for I/O instruction.
Stack pointer register
It is a 16-bit register, which holds the address from the start of the segment to the memory location,
where a word was most recently stored on the stack.
BIU takes care of all data and addresses transfers on the buses for the EU like sending addresses,
fetching instructions from the memory, reading data from the ports and the memory as well as writing
data to the ports and the memory. EU has no direction connection with System Buses so this is possible
with the BIU. EU and BIU are connected with the Internal Bus.
It has the following functional parts −
Instruction queue − BIU contains the instruction queue. BIU gets up to 6 bytes of next instructions and
stores them in the instruction queue. When EU executes instructions and is ready for its next
instruction, then it simply reads the instruction from this instruction queue resulting in increased
execution speed.
Fetching the next instruction while the current instruction executes is called pipelining.
Segment register − The total memory size is divided into segments of various sizes. The process of
dividing memory this way is called Segmentation. In memory, data is stored as bytes. Each byte has a
specific address. Intel 8086 has 20 lines address bus. With 20 address lines, the memory that can be
addressed is 220 = 1,048,576 bytes (1 MB).
8086 can access memory with address ranging from 00000 H to FFFFFH. In 8086, memory has four
different types of segments. These are:
CS − It stands for Code Segment. It is used for addressing a memory location in the code
segment of the memory, where the executable program is stored.
Microprocessor & Interfacing techniques Notes
DS − It stands for Data Segment. It consists of data used by the program and is accessed in the
data segment by an offset address or the content of other register that holds the offset address.
SS − It stands for Stack Segment. It handles memory to store data and addresses during
execution.
ES − It stands for Extra Segment. ES is additional data segment, which is used by the string to
hold the extra destination data.
Instruction pointer − It is a 16-bit register used to hold the address of the next instruction to be
executed.
Pointers and Index Registers
The pointers contain offset within the particular segments.
The pointer register IP (instruction Pointer) contains offset within the code segment. The pointer
register BP (base pointer) contains offset within the data segment.
The pointer register SP (stack pointer) contains offset within the stack segment.
The register SI (source index) is used to store the offset of source data in data segment.
Microprocessor & Interfacing techniques Notes
The register DI (destination index) is used to store the offset of destination in data or extra
segment.
The index registers are particularly useful for string manipulation.
Physical Address
INSTRUCTION PIPELINING
An instruction pipeline is a technique used in the design of computers to increase their instruction
throughput (the number of instructions that can be executed in a unit of time). The basic instruction
cycle is broken up into a series called a pipeline. Rather than processing each instruction sequentially
(one at a time, finishing one instruction before starting the next), each instruction is split up into a
sequence of steps so different steps can be executed concurrently (at the same time) and in parallel
(by different circuitry). Each instruction is split into a sequence of dependent steps. The first step is
always to fetch the instruction from memory; the final step is usually writing the results of the
instruction to processor registers or to memory.
There are five stages of pipelining:
1. Instruction fetch
Microprocessor & Interfacing techniques Notes
*************************************