Unit1Fmpmc CSD
Unit1Fmpmc CSD
Unit1Fmpmc CSD
PROCESSOR
Processor
A processor is the logic circuitry that responds to and processes the basic instructions that drives a
computer. The term processor has generally replaced the term central processing unit (CPU). The
processor in a personal computer or embedded in small devices is often called a microprocessor.
A central processing unit (CPU) is the electronic circuitry within a computer that carries out
the instructions of a computer program by performing the basic arithmetic, logical, control
and input/output (I/O) operations specified by the instructions. The term has been used in the
computer industry at least since the early 1960s. Traditionally, the term CPU refers to a processor,
more specifically to its processing unit and control unit (CU), distinguishing these core elements of a
computer from external components such as main memoryand I/O circuitry. The block diagram of
basic processor is as shown in the figure1.
basic processor
Figure 1 Basic processor
The inputs to an ALU are the data to be operated on, called operands, and a code indicating
the operation to be performed; the ALU's output is the result of the performed operation. In many
designs, the ALU also exchanges additional information with a status register, which relates to the
result of the current or previous operations. The diagram of ALU is as shown in the figure2.
alu
Figure2 Arithmetic Logic Unit
Control Unit
The control unit (CU) is a component of a computer's central processing unit (CPU) that directs
operation of the processor. It tells the computer's memory, arithmetic/logic unit and input and output
devices how to respond to a program's instructions.
The Control Unit (CU) is digital circuitry contained within the processor that coordinates the
sequence of data movements into, out of, and between a processor's many sub-units. The result of
these routed data movements through various digital circuits (sub-units) within the processor produces
the manipulated data expected by a software instruction (loaded earlier, likely from memory). The
diagram of control unit is as show in the figure3.
control unit
figure3 : control unit
Registers
A register is a quickly accessible location available to a digital processor's central processing
unit (CPU). Registers usually consist of a small amount of fast storage, although some registers have
specific hardware functions, and may be read-only or write-only. Registers are typically addressed by
mechanisms other than main memory, but may in some cases be memory mapped.
Almost all computers, whether load-store architecture or not, load data from a larger memory
into registers where it is used for arithmetic operations and is manipulated or tested by machine
instructions. Manipulated data is then often stored back to main memory, either by the same
instruction or a subsequent one. Modern processors use either static or dynamic RAM as main
memory, with the latter usually accessed via one or more cache levels. Processor registers are
normally at the top of the memory hierarchy, and provide the fastest way to access data. The term
normally refers only to the group of registers that are directly encoded as part of an instruction, as
defined by the instruction set. The diagram of register unit is as shown in the figure4.
register unit
pc
Figure5 Program Counter
Data Memory
The Data Memory Register is also known as Memory Data Register. The Memory Data Register is
the register of a computer's control unit that contains the data to be stored in the computer
storage (e.g. RAM), or the data after a fetch from the computer storage. It acts like a buffer and holds
anything that is copied from the memory ready for the processor to use it.
The MDR is a two-way register. When data is fetched from memory and placed into the
MDR, it is written to go in one direction. When there is a write instruction, the data to be written is
placed into the MDR from another CPU register, which then puts the data into memory.
Accumulator
It is an 8-bit register used to perform arithmetic, logical, I/O & LOAD/STORE operations. It
is connected to internal data bus & ALU.
These registers can work in pair to hold 16-bit data and their pairing combination is like B-C,
D-E & H-L.
Program counter
It is a 16-bit register used to store the memory address location of the next instruction to
be executed. Microprocessor increments the program whenever an instruction is being
executed, so that the program counter points to the memory address of the next
instruction that is going to be executed.
Stack pointer
It is also a 16-bit register works like stack, which is always incremented/decremented by 2
during push & pop operations.
Temporary register
It is an 8-bit register, which holds the temporary data of arithmetic and logical operations.
Flag register
It is an 8-bit register having five 1-bit flip-flops, which holds either 0 or 1 depending upon
the result stored in the accumulator.
Sign (S)
Zero (Z)
Auxiliary Carry (AC)
Parity (P)
Carry (C)
D7 D6 D5 D4 D3 D2 D1 D0
S Z AC P CY
Interrupt control
As the name suggests it controls the interrupts during a process. When a microprocessor is
executing a main program and whenever an interrupt occurs, the microprocessor shifts the
control from the main program to process the incoming request. After the request is
completed, the control goes back to the main program.
There are 5 interrupt signals in 8085 microprocessor: INTR, RST 7.5, RST 6.5, RST 5.5,
TRAP.
8085 Architecture
We have tried to depict the architecture of 8085 with this following image −
Microprocessor - 8085 Pin Configuration
Address bus
A15-A8, it carries the most significant 8-bits of memory/IO address.
Data bus
AD7-AD0, it carries the least significant 8-bit address and data bus.
RD − This signal indicates that the selected IO or memory device is to be read and is
ready for accepting data available on the data bus.
WR − This signal indicates that the data on the data bus is to be written into a selected
memory or IO location.
ALE − It is a positive going pulse generated when a new operation is started by the
microprocessor. When the pulse goes high, it indicates address. When the pulse goes
down it indicates data.
IO/M
This signal is used to differentiate between IO and Memory operations, i.e. when it is high
indicates IO operation and when it is low then it indicates memory operation.
S1 & S0
These signals are used to identify the type of current operation.
Power supply
There are 2 power supply signals − VCC & VSS. VCC indicates +5v power supply and VSS
indicates ground signal.
Clock signals
There are 3 clock signals, i.e. X1, X2, CLK OUT.
X1, X2 − A crystal (RC, LC N/W) is connected at these two pins and is used to set
frequency of the internal clock generator. This frequency is internally divided by 2.
CLK OUT − This signal is used as the system clock for devices connected with the
microprocessor.
RESET IN − This signal is used to reset the microprocessor by setting the program
counter to zero.
RESET OUT − This signal is used to reset all the connected devices when the
microprocessor is reset.
READY − This signal indicates that the device is ready to send or receive data. If READY
is low, then the CPU has to wait for READY to go high.
HOLD − This signal indicates that another master is requesting the use of the address
and data buses.
HLDA (HOLD Acknowledge) − It indicates that the CPU has received the HOLD request
and it will relinquish the bus in the next clock cycle. HLDA is set to low after the HOLD
signal is removed.
SOD (Serial output data line) − The output SOD is set/reset as specified by the SIM
instruction.
SID (Serial input data line) − The data on this line is loaded into accumulator whenever a
RIM instruction is executed.
ROHINI COLLEGE OF ENGINEERING & TECHNOLOGY
The 8085 microprocessor uses a16-bit wide address bus for addressing memories
and I/O devices. Using 16-bit wide address bus it can access 216 = 64K bytes of memory
and I/O devices. The 64K addresses are to be assigned to memories and I/O devices for
their addressing. There are two schemes for the allocation of addresses to memories and
input / output devices:
1. Memory mapped I/O scheme.
2. I/O mapped I/O scheme.
Memory mapped I/O scheme:
In memory mapped I/O scheme there is only one address space.
Address space is defined as the set of all possible addresses that microprocessor
can generate.
Some addresses are assigned to memories and some addresses to I/O devices.
An I/O device is also treated as memory location and one address is assign to it.
Suppose that memory locations are assigned the addresses 2000 H to 24FF H then
each one address is assign to each memory location. The addresses for I/O devices
are different from the addresses which have been assigned to memories.
The addresses which have not been assigned to memories can be assigned to each
I/O device.
In this scheme all the data transfer instructions of the microprocessor can be valid
for data transfer from the memory location or I/O device whose address is in H-L
pair.
I/O mapped I/O scheme:
In this scheme the addresses assigned to memory location can also be assigned to
I/O devices.
Since the same address may be assigned to memory location or an I/O device, the
microprocessor must issue a signal to distinguish whether the address on the
address bus is for a memory location or an I/O device.
The 8085 issues an IO/M signal for this purpose.
Two extra instructions IN and OUT are used to address I/O devices.
T1 T2 T3 T4
CLK
AD0
ALE
Figure 1.4.2 shows the timing diagram of how a data byte is transferred from
memory to the microprocessor from which the need for demultiplexing the bus
AD0-AD7 becomes easier to understand.
This figure shows that the address on the high order bus (20H) remains on the bus
for three clock periods.
However, the low order address (05H) is lost after the first clock period.
This address needs to be latched and used for identifying the memory address.
If the bus AD7-AD0 is used to identify the memory location (2005H), the address
will change to 204FH after the first clock period.
Figure. 1.4.2 shows a schematic that uses a latch and the ALE signal to demultiplex
the bus. The bus AD7-AD0 is connected as input to latch 74LS373.
The ALE signal is connected to Enable (G) pin of the Latch, and the Output control
(OC) signal of the latch is grounded.
Figure 1.4.2 shows that the ALE goes high during T1. When the ALE is high, the
latch is transparent; that means output changes according to the input data.
During T1 output of the latch is 05H.
When ALE goes low, the data byte 05H is latched until the next ALE, and the
output of the latch represents the low-order address bus A7-A0 after the latching
operation.
Figure 1.4.3 shows the RD (Read) as a control signal. Because this signal is used
both for reading memory and for reading an input device, it is necessary to generate
two different Read signals: one for memory and another for input. Similarly, two
separate Write signals must be generated.
This signal is Indeed with RD and WR signals by using the 74LS32 quadruple two-
input OR gates, as shown in Figure 1.4.3.
When both the input goes low , the outputs of the gates go low and generate MEMR
(memory Read) and MEMW (memory Write) control Signals.
When IO/M goes high, it indicates the peripheral I/O operation. The table shows
that this signal is complemented and ANDed with RD and WR signals to generate
IOR (I/O Read) and IOW (I/O Write) control Signals.
0 0 1 Memory read
0 1 0 Memory write
1 0 1 I/O read
1 1 0 I/O write
Address Decoding:
INPUTS
OUTPUTS
ENABLE SELECT
G1 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X H H X X X H H H H H H H H
L X X X X X H H H H H H H H
H L L L L L L H H H H H H H
H L L L L H H L H H H H H H
H L L L H L H H L H H H H H
H L L L H H H H H L H H H H
H L L H L L H H H H L H H H
H L L H L H H H H H H L H H
H L L H H L H H H H H H L H
H L L H H H H H H H H H H L
RST7.5
It is a maskable interrupt, having the second highest priority among all interrupts. When this interrupt
is executed, the processor saves the content of the PC register into the stack and branches to 003CH
address.
RST 6.5
It is a maskable interrupt, having the third highest priority among all interrupts. When this interrupt is
executed, the processor saves the content of the PC register into the stack and branches to 0034H
address.
RST 5.5
It is a maskable interrupt. When this interrupt is executed, the processor saves the content of the PC
register into the stack and branches to 002CH address.
INTR
It is a maskable interrupt, having the lowest priority among all interrupts. It can be disabled by
resetting the microprocessor.
When INTR signal goes high, the following events can occur −
The microprocessor checks the status of INTR signal during the execution of each instruction.
When the INTR signal is high, then the microprocessor completes its current instruction and
sends active low interrupt acknowledge signal.
When instructions are received, then the microprocessor saves the address of the next
instruction on stack and executes the received instruction.
UNIT-I
8086 Architecture
Introduction to Microprocessors
A microprocessor is a computer processor which incorporates the
functions of a computer's central processing unit (CPU) on a
single integrated circuit (IC), or at most a few integrated circuits
The microprocessor is a multipurpose, clock driven, register based,
digital-integrated circuit which accepts binary data as input, processes it
according to instructions stored in its memory, and provides results as
output. Microprocessors contain both combinational logic and sequential
digital logic. Microprocessors operate on numbers and symbols represented
in the binary numeral system.
Generation of Microprocessors:
INTEL 4004 ( 1971)
4-bit microprocessor
4 KB main memory
45 instructions
PMOS technology
was first programmable device which was used in calculators
INTEL 8008 (1972)
8-bit version of 4004
16 KB main memory
48 instructions
PMOS technology
Slow
Intel 8080 (1973)
8-bit microprocessor
64 KB main memory
2 microseconds clock cycle time
500,000 instructions/sec
10X faster than 8008
NMOS technology
Drawback was that it needed three power supplies.
Small computers (Microcomputers) were designed in mid
1970’s
Using 8080 as CPU.
INTEL 8086/8088
Buses
Register Organization of 8086
8086 has a powerful set of registers containing general purpose and
special purpose registers. All the registers of 8086 are 16-bit registers. The
general purpose registers, can be used either 8-bit registers or 16-bit
registers. The general purpose registers are either used for holding the data,
variables and intermediate results temporarily or for other purpose like
counter or for storing offset address for some particular addressing modes
etc. The special purpose registers are used as segment registers, pointers,
index registers or as offset storage registers for particular addressing
modes. Fig 1.4 shows register organization of 8086. We will categorize the
register set into four groups as follows:
The registers AX, BX, CX, and DX are the general 16-bit registers.
Segment registers:
To complete 1Mbyte memory is divided into 16 logical segments. The
complete 1Mbyte memory segmentation is as shown in fig 1.5. Each
segment contains 64Kbyte of memory. There are four segment registers.
Source Index (SI) is a 16-bit register. SI is used for indexed, based indexed
and register indirect addressing, as well as a source data addresses in string
manipulation instructions.
Flags Register determines the current state of the processor. They are
modified automatically by CPU after mathematical operations, this allows to
determine the type of the result, and to determine conditions to transfer
control to other parts of the program. The 8086 flag register as shown in
the fig 1.6. 8086 has 9 active flags and they are divided into two categories:
1. Conditional Flags
2. Control Flags
Carry Flag (CY): This flag indicates an overflow condition for unsigned
integer arithmetic. It is also used in multiple-precision arithmetic.
Parity Flag (PF):This flag is used to indicate the parity of result. If lower
order 8-bits of the result contains even number of 1’s, the Parity Flag is set
and for odd number of 1’s, the Parity flag is reset.
Zero Flag (ZF):It is set; if the result of arithmetic or logical operation is zero
else it is reset.
Sign Flag (SF):In sign magnitude format the sign of number is indicated by
MSB bit. If the result of operation is negative, sign flag is set.
Control Flags
Control flags are set or reset deliberately to control the operations of the
execution unit. Control flags are as follows:
Trap Flag (TF): It is used for single step control. It allows user to execute one
instruction of a program at a time for debugging. When trap flag is set,
program can be run in single step mode.
Direction Flag (DF):It is used in string operation. If it is set, string bytes are
accessed from higher memory address to lower memory address. When it is
reset, the string bytes are accessed from lower memory address to higher
memory address.
8086 Architecture
The Execution unit tells the BIU where to fetch instructions or data
from
decodes instructions and
Executes instructions
Control Circuitry:
It directs internal operations.
A decoder in the EU translates instructions fetched from memory
Into series of actions which the EU carries out
SUBTRACT
XOR
INCREMENT
DECREMENT
COMPLEMENT
FLAG REGISTERS:
A flag is a flip flop that indicates some condition produced by
execution of an instruction or controls certain operation of the EU.
It is 16 bit
2. Control flags
Conditional Flags
Carry Flag (CY): This flag indicates an overflow condition for unsigned
integer arithmetic. It is also used in multiple-precision arithmetic.
Parity Flag (PF):This flag is used to indicate the parity of result. If lower
order 8-bits of the result contains even number of 1’s, the Parity Flag is set
and for odd number of 1’s, the Parity flag is reset.
Zero Flag (ZF):It is set; if the result of arithmetic or logical operation is zero
else it is reset.
Sign Flag (SF):In sign magnitude format the sign of number is indicated by
MSB bit. If the result of operation is negative, sign flag is set.
Control Flags
Control flags are set or reset deliberately to control the operations of the
execution unit. Control flags are as follows:
Trap Flag (TF): It is used for single step control. It allows user to execute one
instruction of a program at a time for debugging. When trap flag is set,
program can be run in single step mode.
Direction Flag (DF):It is used in string operation. If it is set, string bytes are
accessed from higher memory address to lower memory address. When it is
reset, the string bytes are accessed from lower memory address to higher
memory address.
Instruction Queue:
BIU gets upto 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.( based on FIFO) .This is
much faster than sending out an addresses to the system memory and
waiting for memory to send back the next instruction byte or bytes .Here
the Queue will be dumped and then reloaded from the new Address.
Segment Register:
The 8086 20 bit addresses So it can address upto 220 in memory ( 1 Mbyte)
but at any instant it can address upto 4 64 KB segments. This four segments
holds the upper 16 bits of the starting address of four memory segments
that the 8086 is working with it at particular time .The BIU always inserts
zeros for the lowest 4 bits of the 20 bit starting address
Example : If the code segment register contains 348AH then the code
segment starts at 348A0H .In other words a 64Kbyte segment can be
located anywhere within 1MByte address Space but the segment will
always starts at an address with zeros in the lowest 4 bits
Stack: is a section of memory set aside to store addresses and data while
subprogram executes is often called segment base . The stack segment
register always holds the upper 16 bit starting address of program stack.
The extra segment register and data segment register is used to hold the
upper 16 bit starting addresses of two memory segments that are used for
data .
Instruction Pointer holds the 16 bit address or offset of the next code byte
within the code segment. The value contained in the Instruction Pointer
called as Offset because the value must be added to the segment base
address in CS to produce the required 20 bit address.
These three registers are used to store temporary storage of data like
general purpose registers .They hold the 16 bit offset data of the data word
in one of the segment
Programming model
A logical address gives the displacement from the base address of the
segment to the desired location within it, as opposed to its "real" address,
which maps directly anywhere into the 1 MByte memory space. This "real"
address is called the physical address.
What is the difference between the physical and the logical address?
The physical address is 20 bits long and corresponds to the actual binary
code output by the BIU on the address bus lines. The logical address is an
offset from location 0 of a given segment.
You should also be careful when writing addresses on paper to do so
clearly. To specify the logical address XXXX in the stack segment, use the
convention SS:XXXX, which is equal to [SS] * 16 + XXXX.
Logical address is in the form of: Base Address: Offset Offset is the
displacement of the memory location from the starting location of the
segment. To calculate the physical address of the memory, BIU uses the
following formula:
To convert this 16-bit address into 20-bit, the BIU appends 0H to the LSB (by
multiplying with 16) of the address. After appending, the starting address of
the Data Segment becomes 22220H.
Where 0016H is the offset, 2222 H is the value of DS Therefore the physical
address:22220H + 0016H
: 22236 H
The following table describes the default offset values to the corresponding
memory segments.
AD15-AD0:
These are the time multiplexed memory I/O address and data lines.
Address remains on the lines during T1 state, while the data is available on
the data bus during T2, T3, TW and T4. Here T1, T2, T3, T4 and TW are the
clock states of a machine cycle. TW is await state. These lines are active
high and float to a tristate during interrupt acknowledge and local bus hold
acknowledge cycles.
A19/S6, A18/S5, A17/S4, A16/S3:
These are the time multiplexed address and status lines. During T1,
these are the most significant address lines or memory operations. During
I/O operations, these lines are low. During memory or I/O operations, status
information is available on those lines for T2, T3, TW and T4 .The status of
the interrupt enable flag bit(displayed on S5) is updated at the beginning of
each clock cycle. The S4 and S3 combinedly indicate which segment register
is presently being used for memory accesses as shown in Table 1.1.
These lines float to tri-state off (tristated) during the local bus hold
acknowledge. The status line S6 is always low(logical). The address bits are
separated from the status bits using latches controlled by the ALE signal.
Read signal, when low, indicates the peripherals that the processor is
performing a memory or I/O read operation. is active low and shows
the state for T2, T3, TW of any read cycle. The signal remains tristated
during the 'hold acknowledge'.
READY:
This is a level triggered input. This is sampled during the last clock
cycle of each instruction to determine the availability of the request. If any
interrupt request is pending, the processor enters the interrupt
acknowledge cycle. This can be internally masked by resetting the interrupt
enable flag. This signal is active high and internally synchronized.
TEST:
NMI-Non-maskable Interrupt:
RESET:
This input causes the processor to terminate the current activity and
start execution from FFFF0H. The signal is active high and must be active for
at least four clock cycles. It restarts execution when the RESET returns low.
RESET is also internally synchronized.
CLK-Clock Input:
The clock input provides the basic timing for processor operation and
bus control activity. Its an asymmetric square wave with 33% duty cycle.
The range of frequency for different 8086 versions is from 5MHz to 10MHz.
VCC :
+5V power supply for the operation of the internal circuit. GND
ground for the internal circuit.
MN/MX :
The logic level at this pin decides whether the processor is to operate
in either minimum (single processor) or maximum (multiprocessor) mode.
The following pin functions are for the minimum mode operation of 8086.
M/IO -Memory/IO:
-Interrupt Acknowledge:
This output signal indicates the availability of the valid address on the
address/data lines, and is connected to latch enable input of latches. This
signal is active high and is never tristated.
-Data Transmit/Receive:
This output is used to decide the direction of data flow through the
transreceivers (bidirectional buffers). When the processor sends out data,
this signal is high and when the processor is receiving data, this signal is low.
Logically, this is equivalent to S1 in maximum mode. Its timing is the same
as M/I/O. This is tristated during 'hold acknowledge'.
When the HOLD line goes high, it indicates to the processor that
another master is requesting the bus access. The processor, after receiving
the HOLD request, issues the hold acknowledge signal on HLDA pin, in the
middle of the next clock cycle after completing the current bus (instruction)
cycle. At the same time, the processor floats the local bus and control lines.
When the processor detects the HOLD line low, it lowers the HLDA signal.
HOLD is an asynchronous input, and it should be externally synchronized.
These are the status lines which reflect the type of operation, being
carried out by the processor. These become active during T4 of the previous
cycle and remain active during T1 and T2 of the current bus cycle. The
status lines return to passive state during T3 of the current bus cycle so that
they may again become active for the next bus cycle during T4. Any change
in these lines during T3 indicates the starting of a new cycle, and return to
passive state indicates end of the bus cycle. These status lines are encoded
in table 1.3
This output pin indicates that other system bus masters will be
prevented from gaining the system bus, while the signal is low.
The signal is activated by the 'LOCK' prefix instruction and remains
active until the completion of the next instruction. This floats to tri-state
off during "hold acknowledge". When the CPU is executing a critical
instruction which requires the system bus, the LOCK prefix instruction
ensures that other processors connected in the system will not gain the
control of the bus. The 8086, while executing the prefixed instruction,
asserts the bus lock signal output, which may be connected to an
external bus controller.
These pins are used by other local bus masters, in maximum mode, to
force the processor to release the local bus at the end of the processor's
current bus cycle. Each of the pins is bidirectional with having
higher priority than pins have internal pull-up resistors and
may be left unconnected. The request! Grant sequence is as follows:
1. A pulse one clock wide from another bus master requests the bus access
to 8086.
2. During T4 (current) or T1 (next) clock cycle, a pulse one clock wide from
8086 to the requesting master, indicates that the 8086 has allowed the local
bus to float and that it will enter the "hold acknowledge" state at next clock
cycle. The CPU's bus interface unit is likely to be disconnected from the local
bus of the system.
3. A one clock wide pulse from the another master indicates to 8086 that
the 'hold' request is about to end and the 8086 may regain control of the
local bus at the next clock cycle.
Transreceivers
Transreceivers are the bidirectional buffers and some times they are
called as data amplifiers. They are required to separate the valid data from
the time multiplexed address/data signal. They are controlled by two
signals, namely, DEN* and DT/R*. The DEN* signal indicates that the valid
data is available on the data bus, while DT/R indicates the direction of data,
i.e. from or to the processor.
Memory:
The system contains memory for the monitor and users program
storage. Usually, EPROMS are used for monitor storage, while RAMs for
users program storage.
IO Devices:
A system may contain I/O devices for communication with the processor as
well as some special purpose I/O devices.
Clock Generator:
The clock generator generates the clock from the crystal oscillator
and then shapes it and divides to make it more precise so that it can be
used as an accurate timing reference for the system. The clock generator
also synchronizes some external signals with the system clock.
The general system organization is shown in above fig .Since it has 20
address lines and 16 data lines, the 8086 CPU requires three octal address
latches and two octal data buffers for the complete address and data
separation.
The read cycle begins in T1 with the assertion of the address latch
enable (ALE) signal and also M/IO* signal. During the negative going edge of
this signal, the valid address is latched on the local bus. The BHE* and
A0 signals address low, high or both bytes. From Tl to T4, the M/IO* signal
indicates a memory or I/O operation. At T2 the address is removed from the
local bus and is sent to the output. The bus is then tristated. The read (RD*)
control signal is also activated in T2 .
The read (RD) signal causes the addressed device to enable its data
bus drivers. After RD* goes low, the valid data is available on the data bus.
The addressed device will drive the READY line high, when the
processor returns the read signal to high level, the addressed device will
again tristate its bus drivers.
A write cycle also begins with the assertion of ALE and the emission
of the address. The M/IO* signal is again asserted to indicate a memory or
I/O operation. In T2 after sending the address in Tl the processor sends the
data to be written to the addressed location. The data remains on the bus
until middle of T4 state. The WR* becomes active at the beginning of T2.
The BHE* and A0 signals are used to select the proper byte or bytes
of memory or I/O word to be read or written. The M/IO*, RD* and WR*
signals indicate the types of data transfer as specified in Table
The HOLD pin is checked at the end of the each bus cycle. If it is
received active by the processor before T4 of the previous cycle or during
T1 state of the current cycle, the CPU activities HLDA in the next clock cycle
and for the succeeding bus cycles, the bus will be given to another
requesting master The control control of the bus is not regained by the
processor until the requesting master does not drop the HOLD pin low.
When the request is dropped by the requesting master, the HLDA is
dropped by the processor at the trailing edge of the next clock as shown in
fig
Maximum Mode 8086 System and Timings
In the maximum mode, the 8086 is operated by strapping the
MN/MX* pin to ground. In this mode, the processor derives the status
signals S2*, S1* and S0*. Another chip called bus controller derives the
control signals using this status information. In the maximum mode, there
may be more than one microprocessor in the system configuration. The
other components in the system are the same as in the minimum mode
system. The general system organization is as shown in the fig1.1
The maximum mode system timing diagrams are also divided in two
portions as read (input) and write (output) timing diagrams. The
address/data and address/status timings are similar to the minimum mode.
ALE is asserted in T1, just like minimum mode. The only difference lies in
the status signals used and the available control and advanced command
signals. The fig. 1.2 shows the maximum mode timings for the read
operation while the fig. 1.3 shows the same for the write operation.
Interrupt is the method of creating a temporary halt during program execution and allows
peripheral devices to access the microprocessor. The microprocessor responds to that
interrupt with an ISR (Interrupt Service Routine), which is a short program to instruct the
microprocessor on how to handle the interrupt.
The following image shows the types of interrupts we have in a 8086 microprocessor −
Hardware Interrupts
Hardware interrupt is caused by any peripheral device by sending a signal through a
specified pin to the microprocessor.
The 8086 has two hardware interrupt pins, i.e. NMI and INTR. NMI is a non-maskable
interrupt and INTR is a maskable interrupt having lower priority. One more interrupt pin
associated is INTA called interrupt acknowledge.
NMI
It is a single non-maskable interrupt pin (NMI) having higher priority than the maskable
interrupt request pin (INTR)and it is of type 2 interrupt.
Pushes the CS (code segment) value and IP (instruction pointer) value of the return
address on to the stack.
IP is loaded from the contents of the word location 00008H.
INTR
The INTR is a maskable interrupt because the microprocessor will be interrupted only if
interrupts are enabled using set interrupt flag instruction. It should not be enabled using
clear interrupt Flag instruction.
The INTR interrupt is activated by an I/O port. If the interrupt is enabled and NMI is
disabled, then the microprocessor first completes the current execution and sends ‘0’ on
INTA pin twice. The first ‘0’ means INTA informs the external device to get ready and during
the second ‘0’ the microprocessor receives the 8 bit, say X, from the programmable
interrupt controller.
Flag register value, CS value of the return address and IP value of the return address
are pushed on to the stack.
Software Interrupts
Some instructions are inserted at the desired position into the program to create interrupts.
These interrupt instructions can be used to test the working of various interrupt handlers. It
includes −
CS value of the return address and IP value of the return address are pushed on to the
stack.
The starting address for type0 interrupt is 000000H, for type1 interrupt is 00004H similarly
for type2 is 00008H and ……so on. The first five pointers are dedicated interrupt pointers.
i.e. −
The interrupts from Type 5 to Type 31 are reserved for other advanced microprocessors, and
interrupts from 32 to Type 255 are available for hardware and software interrupts.
Write Cycle :
In case of write memory cycle, during T 1 state microprocessor puts an address on address
bus. Data is put on data bus by CPU during T 2 state and maintained during T3 and T4 states,
that is written out to memory or I/O devices.