Beruflich Dokumente
Kultur Dokumente
8086 microprocessor is divided into two independent functional parts, the bus interface unit or BIU, and the execution unit or EU. Dividing the work between these two units speeds up processing. The BIU sends out addresses, fetches instructions from memory, reads data from ports and memory, and writes data to ports and memory. The execution unit of the 8086 tells the BIU where to fetch instructions or data from, decodes instructions and executes instructions.
The EU contains control circuitry which directs internal operations. A decoder in the EU translates instructions fetched from memory into a series of actions which EU carries out. The EU has a 16-bit arithmetic logic unit which can add, subtract, AND, OR, XOR, increment, decrement, complement, or shift binary numbers.
Flag Register
A flag is a flip-flop that indicates some condition produced by the execution of an instruction or controls certain operations of the EU. A 16-bit flag register in the EU contained nine active flags. Six of the nine flags are used to indicate some condition produced by an instruction. The three remaining flags in the flag register are used to control certain operations of the processor.
The six conditional flags in this group are the carry flag (CF), the parity flag (PF), the auxiliary carry flag (AF), the zero flag (ZF), the sign flag (SF) and the overflow flag(OF). The six conditional flags are set or reset by the EU on the basis of the results of some arithmetic or logic operation. The three control flags are the trap flag (TF), which is used for single stepping through a program; the interrupt flag (IF), which is used to allow or prohibit the interruption of a program; and the direction flag (DF), which is used with string instruction.
The BIU
The queue While the EU is decoding an instruction or executing an instruction which doesnt require use of buses, the BIU fetch up to six instruction bytes for the following instructions. The BIU stores these prefetched bytes in a first-in-first-out register set called queue. Segment Register The 8086 BIU sends out 20-bit addresses, so it can address any of 1,048,576 bytes in memory. However, at any given time the 8086 works with only four 65,536 byte segments within this 1,048576 byte range. Four segment registers in the BIU are used to hold the upper 16 bits of the starting addresses of four memory segments that 8086 is working with at a particular time. The four segment registers are the code segment (CS) register, the data segment (DS) register, the
Instruction Pointer
The code segment holds the upper 16 bits of the starting address of the segment from which the BIU is currently fetching instruction code bytes. The instruction pointer register holds the 16-bit address, or offset, of the next code byte within this code segment. The value contained in the IP is referred to as an offset because this value must be offset from (added to) the segment base address in CS to produce the required 20-bit physical address sent out by the BIU.
In addition to the stack pointer register (SP), EU contains a 16-bit base pointer (BP) register. It also contains a 16-bit source index (SI) register and a 16-bit destination index (DI) register. These three registers can be used for temporary storage of data just as the general purpose register. However, their main use is to hold the 16-bit offset of a data word in one of the segment.
Pin Diagram
Different version of 8086 have maximum clock frequencies ranging from 5 MHz to 10MHz. 8086 has a 10-bit address bus and 1 16-bit data bus and that the lower 16 bit address lines are multiplexed out on the data bus to minimize the number of pins needed. The double mnemonic on these pins shows that address are sent out on these lines during the first part of a machine cycle, and status information, which identifies the type of operation being done in that cycle, is sent out on these lines during a later part of the cycle. The operating mode of the 8086 is determined by the logic level applied to the MN/MX input. If high, then 8086 will function in minimum mode.
Coprocessor also means that there is a second processor in the system. In this two processor does not access the bus at the same time. One passes the control of the system bus to the other and then may suspend its operation. In the maximum-mode 8086 system, facilities are provided for implementing allocation of global resources and passing bus control to other microprocessor or coprocessor.
8288 Bus Controller Bus Command and Control Signals: 8086 does not directly provide all the signals that are required to control the memory, I/O and interrupt interfaces. Specially the WR, M/IO, DT/R, DEN, ALE and INTA, signals are no longer produced by the 8086. Instead it outputs three status signals S0, S1, S2 prior to the initiation of each bus cycle. This 3- bit bus status code identifies which type of bus cycle is to follow. S2 S1S0 are input to the external bus controller device, the bus controller generates the appropriately timed command and control signals.
The 8288 produces one or two of these eight command signals for each bus cycles. For instance, when the 8086 outputs the code S2S1S0 equals 001, it indicates that an I/O read cycle is to be performed. In the code 111 is output by the 8086, it is signaling that no bus activity is to take place. The control outputs produced by the 8288 are DEN, DT/R and ALE. These 3 signals provide the same functions as those described for the minimum system mode. This set of bus commands and control signals is compatible with the Multibus and industry standard for interfacing microprocessor systems.
8289 Bus Arbiter Bus Arbitration and Lock Signals : This device permits processors to reside on the system bus. It does this by implementing the Multibus arbitration protocol in an 8086-based system. Addition of the 8288 bus controller and 8289 bus arbiter frees a number of the 8086 pins for use to produce control signals that are needed to support multiple processors. Bus priority lock ( LOCK) is one of these signals. It is input to the bus arbiter together with status signals S0 through S2.
The output of 8289 are bus arbitration signals: bus busy (BUSY), common bus request (CBRQ), bus priority out (BPRO), bus priority in (BPRN), bus request (BREQ) and bus clock (BCLK). They correspond to the bus exchange signals of the Multibus and are used to lock other processor off the system bus during the execution of an instruction by the 8086. In this way the processor can be assured of uninterrupted access to common system resources such as global memory.
Queue Status Signals : Two new signals that are produced by the 8086 in the maximum-mode system are queue status outputs QS0 and QS1. Together they form a 2-bit queue status code, QS1QS0. Following table shows the four different queue status.
Local Bus Control Signal Request / Grant Signals: In a maximum mode configuration, the minimum mode HOLD, HLDA interface is also changed. These two are replaced by request/grant lines RQ/ GT0 and RQ/ GT1, respectively. They provide a prioritized bus access mechanism for accessing the local bus.
Mnemonic MOV PUSH POP PUSHA POPA XCHG XLAT IN OUT LEA LDS LES
LAHF
SAHF PUSHF
POPF
Arithmetic Instructions
Mnemonic
ADD ADC INC AAA DAA SUB
Description
SBB
DEC NEG CMP AAS DAS MUL
IMUL
AAM DIV
DB-Define Byte DD-Define Double word DQ-Define Quad word DT-Define Ten Bytes DW-Define Word
End-End Program END- End Procedure EQU-Equate Even-Align on even memory address Extern Global-Declare Symbols as Public or Extrn
Group-Group-Related Segments Include-Include Source Cod From File Label Length Name