Sunteți pe pagina 1din 8

Data Bus: A data bus carries data.

Most processors have internal data buses that carry information inside the processor and external data buses that carry information back and forth between the processor and memory. It is 16 bit memory. Address Bus: An address bus carries address information. In most processors, memory is connected to the processor with separate address and data buses. The processor places the requested address in memory on the address bus for memory or the memory controller. It is 20 bit memory and 8bit each block. What is the difference between Address Bus and Data Bus? Data bus is bidirectional, while address bus is unidirectional. That means data travels in both directions but the addresses will travel in only one direction. The reason for this is that unlike the data, the address is always specified by the processor. The width of the data bus is determined by the size of the individual memory block, while the width of the address bus is determined by the size of the memory that should be addressed by the system. How to calculate memory size? Calculating maximum memory size we need to consider two elements: 1. The number of memory location (addresses) 2. The size of each memory location The following are assumed in the higher courses. The size of each memory location=Data bus width=memory word size As example: Calculate the maximum memory size of a computer with a 24bit address bus and a memory word size 16 bits. A 24 bit address bus allows 2 24 address = 16 MB of addresses. Each address contains 16 bits = 2 bytes Maximum memory size =16 MB X 2 Bytes = 32 MB Working Principles of 8086 Microprocessor: Execution of instructions can be used to explain the working principles of the microprocessor. Those are given below: o o o o o The BIU outputs the contents of the instruction pointer register (IP) onto the address bus, causing the selected byte or word to be read into the BIU. Register IP is incremented by 1 to prepare for the next instruction fetch. Once inside the BIU, the instruction is passed to the queue. Assuming that the queue is initially empty, the EU immediately draws this instruction from the queue and begins execution. While the EU is executing this instruction, the BIU proceeds to fetch a new instruction. Depending on the execution time of the first instruction, the BIU may fill the queue with several new instructions before the EU is ready to draw its next instruction.

The Bus Interface Unit (BIU) is programmed to fetch a new instruction whenever the queue has room for two additional bytes. There are three conditions that will cause the Execution Unit (EU) to enter a "wait" mode or BIU to suspend fetching. The first one occurs when the instruction requires access to a memory location. Here the BIU

must suspend fetching instructions and output the address of this memory location. Then the EU will resume execution. The second will occur when the instruction to be executed is a "jump" instruction. In this case control is to be transferred to a new non-sequential address. The third one will occur during the execution of an instruction that is slow to execute. At four cycles per instruction fetch, the queue will be completely filled during the execution of this single instruction.

Draw the internal architecture of 8086 microprocessor. Internal Architecture of 8086 Microprocessor: The figure given below is the internal architecture of 8086 microprocessor

There are two components in 8086 microprocessor these are: 1. Execution Unit (EU) 2. Bus Interface Unit (BIU) Execution Unit (EU): The purpose of execution unit is to execute instructions. Its contain circuit called Arithmetic and Logic Unit (ALU). The ALU unit can perform various arithmetic and logical operation, if required, based on the instruction to be executed. It can perform arithmetical operations, such as add,

subtract, increment, decrement, convert byte/word and compare etc and logical operations, such as AND, OR, exclusive OR, shift/rotate and test etc. The data for the operations are store in a circuit called register. Bus Interface Unit (BIU): The Bus Interface Unit (BIU) provides communication between the execution unit and the memory or input output circuits. As the EU has no connection with the system Busses, this job is done by BIU. BIU and EU are connected with an internal bus. BIU connects EU with the memory or I/O circuits. It is responsible for transmitting data, addresses and control signal on the busses. The BIU has 4 segment busses, CS, DS, SS, ES. 8086 Register mainly divided into four types: 1. General Register 2. Segment Register 3. Index/ Pointer Register 4. Flag Register General Registers: All general registers of the 8086 microprocessor can be used for arithmetic and logic operations. The general registers are: AX (Accumulator): This is accumulator register. It gets used in arithmetic, logic and data transfer instructions. In manipulation and division, one of the numbers involved must be in AX or AL. BX (Base Register): This is base register. BX register is an address register. It usually contain a data pointer used for based, based indexed or register indirect addressing. CX (Count Register): This is Count Register. This serves as a loop counter. Program loop constructions are facilitated by it. Count register can also be used as a counter in string manipulation and shift/rotate instruction. DX (Data Register): This is data register. Data register can be used as a port number in I/O operations. It is also used in multiplication and division. Index/ Pointer Register: The Index/ pointer registers are: SP (Stack Pointer): This is stack pointer register pointing to program stack. It is used in conjunction with SS for accessing the stack segment. BP (Base Pointer): This is base pointer register pointing to data in stack segment. Unlike SP, we can use BP to access data in the other segments. SI (Source Index): This is source index register which is used to point to memory locations in the data segment addressed by DS. By incrementing the contents of SI one can easily access consecutive memory locations. DI (Destination Index): This is destination index register performs the same function as SI. There is a class of instructions called string operations that use DI to access the memory locations addressed by ES.

Segment Register: These all 4 segment registers holds the addresses of instructions and data in memory. These values are used by the processor to access memory locations. It also contains 1 pointer register IP. IP contains the address of the next instruction to execute by the EU. CS (Code Segment) : Code segment (CS) is a 16-bit register containing address of 64 KB segment with processor instructions. The processor uses CS segment for all accesses to instructions referenced by instruction pointer (IP) register. CS register cannot be changed directly. The CS register is automatically updated during far jump, far call and far return instructions. Stack segment (SS) is a 16-bit register containing address of 64KB segment with program stack. By default, the processor assumes that all data referenced by the stack pointer (SP) and base pointer (BP) registers is located in the stack segment. SS register can be changed directly using POP instruction. Data segment (DS) is a 16-bit register containing address of 64KB segment with program data. By default, the processor assumes that all data referenced by general registers (AX, BX, CX, DX) and index register (SI, DI) is located in the data segment. DS register can be changed directly using POP and LDS instructions. Extra segment (ES) is a 16-bit register containing address of 64KB segment, usually with program data. By default, the processor assumes that the DI register references the ES segment in string manipulation instructions. ES register can be changed directly using POP and LES instructions. It is possible to change default segments used by general and index registers by prefixing instructions with a CS, SS, DS or ES prefix. IP (Instruction Pointer) : To access instructions the 8086 uses the registers CS and IP. The CS register contains the segment number of the next instruction and the IP contains the offset. IP is updated each time an instruction is executed so that it will point to the next instruction. Unlike other registers the IP cant be directly manipulated by an instruction, that is, an instruction may not contain IP as its operand. Instruction Queue: BIU also contain an instruction queue. When the EU executes instructions, the BIU gets up to 6 bytes of the next instruction and stores them in the instruction queue and this process is called instruction prefetch. This is a process to speed up the processor. Also when the EU needs to be connected with memory or peripherals, BIU suspends instruction prefetch and performs the needed operations. Purpose of using Instruction Queue: BIU contains an instruction queue. When the EU executes instructions, the BIU gets up to 6 bytes of the next instruction and stores them in the instruction queue and this process is called instruction prefetch. This is a process to speed up the processor. A subtle advantage of instruction queue is that, as next several instructions are usually in the queue, the BIU can access memory at a somewhat "leisurely" pace. This means that slow-memory parts can be used without affecting overall system performance. FLAGS: 8086 has 16 flag registers among which 9 are active. The purpose of the FLAGS register is to indicate the status of the processor. It does this by setting the individual bits called flags. There are two

kinds of FLAGS; Status FLAGS and Control FLAGS. Status FLAGS reflect the result of an operation executed by the processor. The control FLAGS enable or disable certain operations of the processor.

1. Carry Flag (CF) - this flag is set to 1 when there is an unsigned overflow. For example when you add bytes 255 + 1 (result is not in range 0...255). When there is no overflow this flag is set to 0 2. Sign Flag (SF) - set to 1 when result is negative. When result is positive it is set to0. (This flag takes the value of the most significant bit.) 3. Zero Flag (ZF) - set to 1 when result is zero. For non-zero result this flag is set to 0. 8086 Microprocessor Instruction Set and its Classification 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Data transfer instructions Input /Output Instruction Address Instruction Flag Register Instruction Arithmetic instructions Logic, shift and rotate instruction String instructions Conditional Transfer Unconditional Transfer Loop Instruction Interrupt Instruction Control Instruction : : : : : : : : : : : : MOV, XCHG IN ,OUT LEA, LDS PUSHF, POPF ADD, SUB, INS,DEC AND, OR,SHR, SAL, ROL, RCL MOVS, LODS, REP, STOS JC,JNC, JO, JS CALL, RET, JMP INT, INTO CLD, STD, CLI,STI

8086 Microprocessor PIN: GND AD0-AD15 NMI INTR CLK MN/MX BHE/S7 RD TEST ALE DI/R S5 Ground Address lines A0-A15 Non maskable interrupt request Maskable interrupt request Generates clock signals 1: Minimum Mode: At a time one process executed. 0: Maximum Mode: At a time multiple processes executed. Bus High Enable/ Status Register Read data from memory when RD=0 Input Signal Address Latch Enable Data transmit/ Receive Interrupt Enable (To detect interrupt)

8279 can be programmed to perform various functions through eight command words. 1. ModeSet

2. Prescaler:

3. Read FIFO/Sensor RAM:

4. Display Read: 5. Display Write: 6. Display Write Inhibit:

7. Clear:

8.

8279 status registers:

F= Full

U= Under Flow O= Overflow D= 1, Display unavailable

S/E= 0, No pressed multiple Keys

S/E= 1, Pressed multiple Keys

8259- Priority and Interrupts Controller: There are four registers in this controller those are: Interrupt Request Register (IRR): The interrupt request register keeps tracks of which interrupt inputs are asking for service. In-Service Register (ISR): In this register keeps the tracks of which interrupt inputs are being currently in serviced. Interrupt Mask Register (IMR): The interrupt mask register is used to disable or enable individual interrupt request. Priority Resolver: The priority resolver act as a judge that determines if and when an interrupt request on one of the IR input gets serviced. Initialization Command Word Flowchart

Initialization Command Words (ICWs):

ICW2:

ICW3 (Master Device):

ICW3 (Slave Device):

S-ar putea să vă placă și