Introduction:Microprocessors do not have inbuilt memory. 8086microprocessor was designed and invented by Intel in 1976. It’s a 16-bitMicroprocessor which has 20-bit address lines and 16 bit data lines which aremultiplexed (AD0-AD15).
The words will be stored in two consecutive memorylocations. If the first byte of the word is at an odd address, the 8086 willread the first byte in one operation and the second byte in another. Else ifthe first byte of word is at even address, the 8086 can read the entire word inan operation.
Features:· It has faster processing as it has aninstruction queue capable of storing six instruction bytes from the memory.· Faster processing is due to 16 bit ALU,16 bit registers, internal data bus, and 16 bit external data bus. It was thefirst 16 bit processor with such features.· Performance is improved by pipelining.Pipelining has two stages, i.
e. Fetch Stage and Execute Stage. Fetch stagestores up to 6 bytes of instructions in queue, while execute stage executesthem.
· It has large number of transistors,approximately 29,000 transistors.Architectureof 8086:8086 microprocessor is divided into two functionalunits-1. ExecutionUnit (EU) 2. BusInterface Unit (BIU).ExecutionUnit (EU)-This unit commands BIU starting from where to fetchthe data and then decode and execute those instructions through givinginstruction. By using instruction decoder and ALU, it controls operations ondata.Some functional part of 8086 microprocessor are:1.
ALU-It handles arithmetic and logical operations.2. FlagRegister- 16-bit register which changes it status according to the resultstored in the accumulator. There are in total 9 flags. They are divided into 2groups – Condition Flags and Control Flags.
3. StatusFlags- It represents the result of the last instruction executed.a. CarryFlag (CF): This will indicate the final carry of the result given by theinstruction.b. AuxiliaryFlag (AF): This will represent the in between carries generated by theinstruction executed.c.
ParityFlag (PF): It will show the whether number of 1’s is odd or even in the result.d. ZeroFlag (ZF): If the result of the operation is zero, then the flag will be set to1 else 0.
e. SignFlag (SF): When the result of the operation is negative, then the flag is setto 1 else set to 0.f. OverflowFlag (OF): This will indicate the result when the capacity of the system isexceeded.4. ControlFlags- It controls the operation of the EU.a. TrapFlag (TF): For debugging, it allows the user to execute one instruction at atime and is used for single step control.
b. InterruptFlag (IF): It allows/prohibits interruption of a program. To enable the interruption,it is set to 1 else set to 0 for interrupt disabled.c. DirectionFlag (DF): If is used for the string operation. If the pointer is pointed atthe last character of the string, then the flag is set to 1 and the pointerwill be decremented. If the pointer is pointing to the first character of thestring, then the flag is set to 0 and will be incremented.
5. GeneralPurpose Registers- There are 8 general purpose registers, namely, AH, AL, BH,BL, CH, CL, DH, and DL. These can be used individually to store 8-bit data andcan be stored as 16-bit by making pairs. It is referred to the AX, BX, CX, andDX respectively.
a. Accumulatorregister (AX) – Used to store operand for arithmetic operations.b. Baseregister (BX) – Used to store the starting bas address of the memory area.
c. Counter(CX) – Used in loop instruction to store the loop counter.d. Dataregister (DX) – Used to hold I/O port address for I/O instruction.
6. StackPointer Register- It holds the address from the start of the segment to thememory location.BusInterface Unit (BIU):It takes care of all the data and addresses transferredon the buses for the EU, EU has no direct connection with System Buses so it ispossible with the BIU. Both the units are connected with the internal buses.
BIU has following functional parts-1. Instructionqueue- Up to 6 bytes of next instruction is given to BIU which stores them inthe instruction queue. When EU is ready to fetch the next instruction, itsimply reads it from the instruction queue resulting in execution speed.Fetching the next instruction before the current execution is completed iscalled as Pipelining.2. Segmentregister- Bus Interface Unit has 4 segment buses, i.e.
CS, DS, SS, and ES.a. CodeSegment (CS) – It addresses the memory location in the code segment of thememory.b. DataSegment (DS) – Consist of data used by the program and is accessed in the DS byan offset address.c. StackSegment (SS) – Handles memory to store data and addresses.d.
ExtraSegment (ES) – It is additional data segment used by the string to hold theextra destination data.3. InstructionPointer- This pointer holds the address of the next instruction to be executed.