Unit 1 8085
Unit 1 8085
Introduction
WHAT IS MICRO?
Micro is a new addition. In the late 1960’s, processors were built using discrete elements. These
devices performed the required operation, but were too large and too slow. It went directly from
discrete elements to a single chip. However, comparing today’s microprocessors to the ones
built in the early 1970’s you find an extreme increase in the amount of integration.
WHAT IS A MICROPROCESSOR?
The word comes from the combination of micro and processor. Processor means a device that
processes whatever. In this context processor means a device that processes numbers,
specifically binary numbers, 0’s and 1’s.To process means to manipulate. It is a general term
that describes all manipulation. Again in this content, it means to perform certain operations
on the numbers that depend on the microprocessor’s design. It is a programmable device that
takes in numbers, performs on them arithmetic or logical operations according to the program
stored in memory and then produces other numbers
As a Programmable device:
• The microprocessor can perform different sets of operations on the data it receives
depending on the sequence of instructions supplied in the given program.
• By changing the program, the microprocessor manipulates the data in different ways as
Instructions, Words, Bytes, etc.
• They processed information 8-bits at a time. That’s why they are called ―8-bit
processors. They can handle large numbers, but in order to process these numbers, they
2
broke them into 8-bit pieces and processed each group of 8-bits separately.
WHAT IS MEMORY?
Memory is the location where information is kept while not in current use. It is stored in
memory. Memory is a collection of storage devices. Usually, each storage device holds one
bit. Also, in most kinds of memory, these storage devices are grouped into groups of 8. These 8
storage locations can only be accessed together. So, one can only read or write in terms of bytes to and
from memory. Memory is usually measured by the number of bytes it can hold. It is measured
in Kilos, Megas and lately Gigas. A Kilo in computer language is 210 =1024. So, a KB
(KiloByte) is 1024 bytes. Mega is 1024 Kilos and Giga is 1024 Mega. When a program is
entered into a computer, it is stored in memory. Then as the microprocessor starts to execute
the instructions, it brings the instructions from memory one at a time. Memory is also used to
hold the data.The microprocessor reads (brings in) the data from memory when it needs it and
writes (stores) the results into memory when it is done.
A MICROPROCESSOR-BASED SYSTEM
From the above description, we can draw the following block diagram to represent a
microprocessor-based system as shown in fig 1. In this system, the microprocessor is the master
and all other peripherals are slaves. The master controls all peripherals and initiates all
operations. The buses are group of lines that carry data, address or control signals. The CPU
interface is provided to demultiplex the multiplexed lines, to generate the chip select signals
and additional control signals. The system bus has separate lines for each signal.
All the slaves in the system are connected to the same system bus. At any time instant
communication takes place between the master and one of the slaves. All the slaves have
tristate logic and hence normally remain in high impedance state. The processor selects a slave
by sending an address. When a slave is selected, it comes to the normal logic and communicates
with the processor.
The EPROM memory is used to store permanent programs and data. The RAM memory is
used to store temporary programs and data. The input device is used to enter program, data and
to operate system. The output device is also used for examining the results. Since the speed of
IO devices does not match with speed of microprocessor, an interface device is provided
between system bus and IO device.
3
Fig.1.1 Microprocessor based system (organization of microcomputer)
The CPU consists of ALU (Arithmetic and Logic Unit), Register unit and control unit. The
CPU retrieves stored instructions and data word from memory; it also deposits processed data
in memory.
This section performs computing functions on data. These functions are arithmetic operations
such as additions subtraction and logical operation such as AND, OR rotate etc. Result are
stored either in registers or in memory or sent to output devices.
REGISTER UNIT
It contains various register. The registers are used primarily to store data temporarily during
the execution of a program. Some of the registers are accessible to the uses through
instructions.
CONTROL UNIT
It provides necessary timing & control signals necessary to all the operations in the
microcomputer. It controls the flow of data between the p and peripherals (input, output &
memory). The control unit gets a clock which determines the speed of the p.
4
• It fetches an instructions word stored in memory.
• It executes the instruction. Executing the instruction may include some of the
following major tasks.
• Transfer of data from reg. to reg. in the CPU itself.
• Transfer of data between a CPU reg. & specified memory location.
• Performing arithmetic and logical operations on data from a specific memory
location or a designated CPU register.
• Directing the CPU to change a sequence of fetching instruction, if processing
the data created a specific condition.
• Performing housekeeping function within the CPU itself inorder to establish
desired condition at certain registers.
• It looks for control signal such as interrupts and provides appropriate
responses.
• It provides states, control, and timing signals that the memory and input/output
section can use.
ADDRESS BUS:
It is a group of wires or lines that are used to transfer the addresses of Memory or I/O devices.
It is unidirectional. In Intel 8085 microprocessor, Address bus was of 16 bits. This means that
Microprocessor 8085 can transfer maximum 16 bit address which means it can address 65,536
different memory locations. This bus is multiplexed with 8 bit data bus. So the most significant
bits (MSB) of address goes through Address bus (A7-A0) and LSB goes through multiplexed
data bus (AD0-AD7).
DATA BUS:
Data Bus is used to transfer data within Microprocessor and Memory/Input or Output devices.
It is bidirectional as Microprocessor requires to send or receive data. The data bus also works
as address bus when multiplexed with lower order address bus. Data bus is 8 Bits long. The
word length of a processor depends on data bus, thats why Intel 8085 is called 8 bit
Microprocessor because it have an 8 bit data bus.
5
CONTROL BUS:
Microprocessor uses control bus to process data that is what to do with the selected memory
location. Some control signals are Read, Write and Opcode fetch etc. Various operations are
performed by microprocessor with the help of control bus. This is a dedicated bus, because all
timing signals are generated according to control signal. The microprocessor is the master,
which controls all the activities of the system. To perform a specific job or task, the
microprocessor has to execute a program stored in memory. The program consists of a set of
instructions stored in consecutive memory location. In order to execute the program the
microprocessor issues address and control signals, to fetch the instruction and data from
memory one by one. After fetching each instruction it decodes the instruction and carries out
the task specified by the instruction.
FEATURES OF 8085
• 8-bit general purpose µp
• Capable of addressing 64 k of memory
• Has 40 pins as shown in fig 2
• Requires +5 v power supply
• Can operate with 3 MHz clock
• 8085 upward compatible
Multiplexed Address/Data Bus; Lower 8 bits of the memory address (or I/0 address) appear on
the bus during the first clock cycle of a machine state. It then becomes the data bus during the
second and third clock cycles. 3 stated during Hold and Halt modes.
6
Fig 1.2 Pin Diagram of 8085
It occurs during the first clock cycle of a machine state and enables the address to get latched
into the on chip latch of peripherals. The falling edge of ALE is set to guarantee setup and hold
times for the address information. ALE can also be used to strobe the status information. ALE
is never 3stated.
SO, S1 (OUTPUT)
RD (Output 3state)
READ: indicates the selected memory or 1/0 device is to be read and that the Data Bus is
available for the data transfer.
7
WR (Output 3state)
WRITE: Indicates the data on the Data Bus is to be written into the selected memory or 1/0
location. Data is set up at the trailing edge of WR. 3 stated during Hold and Halt modes.
READY (Input)
If Ready is high during a read or write cycle, it indicates that the memory or peripheral is ready
to send or receive data. If Ready is low, the CPU will wait for Ready to go high before
completing the read or write cycle.
HOLD (Input)
It indicates that another Master is requesting the use of the Address and Data Buses. The CPU,
upon receiving the Hold request will relinquish the use of buses as soon as the completion of
the current machine cycle. Internal processing can continue.
ADDRESS BUS
• Unidirectional
• Identifying peripheral or memory location
DATA BUS
• Bidirectional
• Transferring data
CONTROL BUS
• Synchronization signals
• Timing signals
• Control signal
8
Fig: 1.3 Signal Classifications of 8085 System Bus
THE ALU
• In addition to the arithmetic & logic circuits, the ALU includes the accumulator, which
is part of every arithmetic & logic operation.
• Also, the ALU includes a temporary register used for holding data temporarily during
the execution of the operation. This temporary register is not accessible by the
programmer.
9
Fig:1.4 Architecture of intel 8085 microprocessor
REGISTERS
GENERAL PURPOSE REGISTERS
10
FLAG REGISTER
8 bit register – shows the status of the microprocessor before/after an operation.S (sign flag),
Z (zero flag), AC (auxillary carry flag), P (parity flag) & CY (carry flag)
D7 D6 D5 D4 D3 D2 D1 D0
S Z X AC X P X CY
SIGN FLAG
• Used for indicating the sign of the data in the accumulator
• The sign flag is set if negative (1 – negative)
• The sign flag is reset if positive (0 –positive)
ZERO FLAG
• Is set if result obtained after an operation is 0
• Is set following an increment or decrement operation of that register
CARRY FLAG
• Is set if there is a carry or borrow from arithmetic operation
PARITY FLAG
• Is set if parity is even
• Is cleared if parity is odd
• The stack pointer is also a 16-bit register that is used to point into memory.
11
• The memory this register points to is a special area called the stack. The stack is an
area of memory used to hold data that will be retrieved soon.
• The address bus has 8 signal lines A8 – A15 which are unidirectional.
• The other 8 address bits are multiplexed (time shared) with the 8 data bits.
• So, the bits AD0 – AD7 are bi-directional and serve as A0 – A7 and D0 – D7 at the
same time.
• During the xecution of the instruction, these lines carry the address bits during the
early part, then during the late parts of the execution, they carry the 8 data bits.
• In order to separate the address from the data, we can use a latch to save the value
before the function of the bits changes.
DEMULTIPLEXING AD7-AD0
• From the above description, it becomes obvious that the AD7– AD0 lines are serving
a dual purpose and that they need to be demultiplexed to get all the information.
• The high order bits of the address remain on the bus for three clock periods. However,
the low order bits remain for only one clock period and they would be lost if they are
not saved externally. Also, notice that the low order bits of the address disappear when
they are needed most.
• To make sure we have the entire address for the full three clock cycles, we will use an
external latch to save the value of AD7– AD0 when it is carrying the address bits. We
use the ALE signal to enable this latch.
DEMULTIPLEXING AD7-AD0
12
Given that ALE operates as a pulse during T1, we will be able to latch the address. Then when
ALE goes low, the address is saved and the AD7– AD0 lines can be used for their purpose as
the bi-directional data lines.
• The high order address is placed on the address bus and hold for 3 clk periods.
• The low order address is lost after the first clk period, this address needs to be hold
however we need to use latch
• The address AD7 – AD0 is connected as inputs to the latch 74LS373.
• The ALE signal is connected to the enable (G) pin of the latch and the OC – Output
control – of the latch is grounded
ADDRESSING MODES
The microprocessor has different ways of specifying the data for the instruction. These are
called addressing modes.
Load the accumulator with the contents of the memory location whose address is stored in the
register pair BC).
Many instructions require two operands for execution. For example transfer of data between
two registers. The method of identifying the operands position by the instruction format is
known as the addressing mode. When two operands are involved in an instruction, the first
operand is assumed to be in a register Mp itself.
• Register addressing
13
• Implied addressing mode
REGISTER ADDRESSING
This type of addressing mode specifies register or register pair that contains data.ie (only the
register need be specified as the address of the operands).
Example LDA 3000H (The content at the location 3000H is copied to the register A).
Example MOV A, M (Move data from memory location specified by H-L pair to accumulator)
This mode doesn't require any operand. The data is specified by opcode itself.
14
(operation code). The second part is the data to be operated on. This part is called the operand.
INSTRUCTION SIZE
• Depending on the operand type, the instruction may have different sizes. It will occupy
a different number of memory bytes.
• Typically, all instructions occupy one byte only.
• The exception is any instruction that contains immediate data or a memory address.
• Instructions that include immediate data use two bytes.
• One for the opcode and the other for the 8-bit data.
• Instructions that include a memory address occupy three bytes.
• One for the opcode, and the other two for the 16-bit address.
• Arithmetic Instructions
• Logical Instructions
• Branching Instructions
This instruction copies the contents of the source register into the destination register. The
contents of the source register are not altered. If one of the operands is a memory location, its
location is specified by the contents of the HL registers. Example: MOV B, C or MOV B, M.
15
MVI Rd, Data M, Data
Move immediate 8-bit
The 8-bit data is stored in the destination register or memory. If the operand is a memory
location, its location is specified by the contents of the H-L registers.
Example: MVI B, 57H or MVI M, 57H.
Opcode Operand Description
The contents of a memory location, specified by a 16- bit address in the operand, are copied to
the accumulator. The contents of the source are not altered. Example: LDA 2034H
The contents of the designated register pair point to a memory location. This instruction copies
the contents of that memory location into the accumulator. The contents of either the register
pair or the memory location are not altered. Example: LDAX B
The contents of accumulator are copied into the memory location specified by the operand.
16
Example: STA 2500 H
The contents of accumulator are copied into the memory location specified by the contents of
the register pair. Example: STAX B
The contents of register L are stored into memory location specified by the 16-bit address. The
contents of register H are stored into the next memory location. Example: SHLD 2550 H
The contents of register H are exchanged with the contents of register D. The contents of
register L are exchanged with the contents of register E. Example: XCHG
This instruction loads the contents of H-L pair into SP. Example: SPHL
17
Opcode Operand Description
The contents of L register are exchanged with the location pointed out by the contents of the
SP. The contents of H register are exchanged with the next location (SP + 1). Example: XTHL
The contents of registers H and L are copied into the program counter (PC). The contents of
H are placed as the high-order byte and the contents of L as the low-order byte. Example:
PCHL
The contents of register pair are copied onto stack. SP is decremented and the contents of
high-order registers (B, D, H, A) are copied into stack. SP is again decremented and the
contents of low-order registers (C, E, L, Flags) are copied into stack. Example: PUSH B
The contents of top of stack are copied into register pair. The contents of location pointed out
by SP are copied to the low-order register (C, E, L, Flags). SP is incremented and the contents
of location are copied to the high-order register (B, D, H, A). Example: POP H
18
Opcode Operand Description
The contents of accumulator are copied into the I/O port. Example: OUT 78 H
ARITHMETIC INSTRUCTIONS
These instructions perform arithmetic operations such as addition, subtraction, increment, and
decrement.
ADDITION
Any 8-bit number, or the contents of register, or the contents of memory location can be added
to the contents of accumulator. The result (sum) is stored in the accumulator. No two other 8-
bit registers can be added directly. Example: The contents of register B cannot be added directly
to the contents of register C.
19
Opcode Operand Description
The contents of register or memory are added to the contents of accumulator. The result is
stored in accumulator. If the operand is memory location, its address is specified by H-L pair.
All flags are modified to reflect the result of the addition. Example: ADD B or ADD M
The contents of register or memory and Carry Flag (CY) are added to the contents of
accumulator. The result is stored in accumulator. If the operand is memory location, its address
is specified by H-L pair. All flags are modified to reflect the result of the addition. Example:
ADC B or ADC M
The 8-bit data is added to the contents of accumulator. The result is stored in accumulator. All
flags are modified to reflect the result of the addition. Example: ADI 45 H
20
Opcode Operand Description
The 8-bit data and the Carry Flag (CY) are added to the contents of accumulator. The result
is stored in accumulator. All flags are modified to reflect the result of the addition. Example:
ACI 45 H
The 16-bit contents of the register pair are added to the contents of H-L pair. The result is
stored in H-L pair. If the result is larger than 16 bits, then CY is set.No other flags are changed.
Example: DAD B
SUBTRACTION
Any 8-bit number, or the contents of register, or the contents of memory location can be
subtracted from the contents of accumulator.The result is stored in the accumulator.Subtraction
is performed in 2’s complement form. If the result is negative, it is stored in 2’s complement
form. No two other 8-bit registers can be subtracted directly.
21
The contents of the register or memory location are subtracted from the contents of the
accumulator. The result is stored in accumulator. If the operand is memory location, its address
is specified by H-L pair. All flags are modified to reflect the result of subtraction. Example:
SUB B or SUB M
The contents of the register or memory location and Borrow Flag (i.e. CY) are subtracted from
the contents of the accumulator. The result is stored in accumulator. If the operand is memory
location, its address is specified by H-L pair. All flags are modified to reflect the result of
subtraction. Example: SBB B or SBB M
The 8-bit data is subtracted from the contents of the accumulator.The result is stored in
accumulator. All flags are modified to reflect the result of subtraction. Example: SUI 45 H
22
The 8-bit data and the Borrow Flag (i.e. CY) is subtracted from the contents of the
accumulator. The result is stored in accumulator.All flags are modified to reflect the result of
subtraction. Example: SBI 45 H
INCREMENT/DECREMENT
The contents of register or memory location are incremented by 1. The result is stored in the
same place. If the operand is a memory location, its address is specified by the contents of H-
L pair. Example: INR B or INR M
The contents of register pair are incremented by 1. The result is stored in the same place.
Example: INX H
23
The contents of register or memory location are decremented by 1. The result is stored in the
same place. If the operand is a memory location, its address is specified by the contents of H-
L pair. Example: DCR B or DCR M
The contents of register pair are decremented by 1. The result is stored in the same place.
Example: DCX H
LOGICAL INSTRUCTIONS
These instructions perform logical operations on data stored in registers, memory and status
flags. The logical operations are:
• AND
• OR
• XOR
• Rotate
• Compare
• AND operation
• OR operation
• XOR operation
24
Opcode Operand Description
The contents of the accumulator are logically ANDed with the contents of register or memory.
The result is placed in the accumulator. If the operand is a memory location, its address is
specified by the contents of H-L pair. S, Z, P are modified to reflect the result of the operation.
CY is reset and AC is set. Example: ANA B or ANA M.
The contents of the accumulator are logically ANDed with the 8-bit data. The result is placed
in the accumulator. S, Z, P are modified to reflect the result.CY is reset, AC is set. Example:
ANI 86H.
The contents of the accumulator are logically ORed with the contents of the register or
memory. The result is placed in the accumulator. If the operand is a memory location, its
address is specified by the contents of H-L pair.S, Z, P are modified to reflect the result. CY
and AC are reset. Example: ORA B or ORA M.
25
Opcode Operand Description
The contents of the accumulator are logically ORed with the 8-bit data. The result is placed in
the accumulator. S, Z, P are modified to reflect the result.CY and AC are reset. Example: ORI
86H.
The contents of the accumulator are XORed with the contents of the register or memory. The
result is placed in the accumulator. If the operand is a memory location, its address is specified
by the contents of H-L pair. S, Z, P are modified to reflect the result of the operation. CY and
AC are reset. Example: XRA B or XRA M.
The contents of the accumulator are XORedwith the 8-bit data. The result is placed in the
accumulator. S, Z, P are modified to reflect the result. CY and AC are reset. Example: XRI
86H.
ROTATE
Each bit in the accumulator can be shifted either left or right to the next position as shown in
fig5.
26
Opcode Operand Description
Each binary bit of the accumulator is rotated left by one position. Bit D7 is placed in the
position of D0 as well as in the Carry flag. CY is modified according to bit D7. S, Z, P, AC are
not affected. Example: RLC.
Each binary bit of the accumulator is rotated right by one position. Bit D0 is placed in the
position of D7 as well as in the Carry flag. CY is modified according to bit D0. S, Z, P, AC are
not affected. Example: RRC.
27
Fig 1.6. : Work flow of RAL
Each binary bit of the accumulator is rotated left by one position through the Carry flag as
shown in fig 6. Bit D7 is placed in the Carry flag, and the Carry flag is placed in the least
significant position D0. CY is modified according to bit D7. S, Z, P, AC are not affected.
Example: RAL.
Each binary bit of the accumulator is rotated right by one position through the Carry flag. Bit
D0 is placed in the Carry flag, and the Carry flag is placed in the most significant position D7.
CY is modified according to bit D0. S, Z, P, AC are not affected. Example: RAR.
COMPARE
Any 8-bit data, or the contents of register, or memory location can be compares for:
• Equality
• Greater Than
• Less Than
28
Opcode Operand Description
The contents of the operand (register or memory) are compared with the contents of the
accumulator. Both contents are preserved .The result of the comparison is shown by setting the
flags of the PSW as follows:
The 8-bit data is compared with the contents of accumulator.The values being compared remain
unchanged. The result of the comparison is shown by setting the flags of the PSW as follows:
• if (A) > data: carry and zero flags are reset Example: CPI 89H
29
COMPLEMENT
The contents of the accumulator are complemented. No flags are affected. Example: CMA.
The Carry flag is complemented. No other flags are affected. Example: CMC.
The Carry flag is set to 1. No other flags are affected. Example: STC.
BRANCHING INSTRUCTIONS
The branching instruction alters the normal sequential flow. These instructions alter either
unconditionally or conditionally.
Branch operations are of two types:
Unconditional branch-- Go to a new location no matter what. Conditional branch-- Go to a
new location if the condition is true.
30
Opcode Operand Description
The program sequence is transferred to the memory location specified by the 16-bit address
given in the operand.
Example: JMP 2034 H.
The program sequence is transferred to the memory location specified by the 16-bit address
given in the operand based on the specified flag of the PSW. Replace x with condition
Example: JZ 2034 H. Jump conditionally
31
Opcode Operand Description
The program sequence is transferred to the memory location specified by the 16-bit address
given in the operand. Before the transfer, the address of the next instruction after CALL (the
contents of the program counter) is pushed onto the stack.
Example: CALL 2034 H.
The program sequence is transferred to the memory location specified by the 16- bit address
given in the operand based on the specified flag of the PSW. Before the transfer, the address
of the next instruction after the call (the contents of the program counter) is pushed onto the
stack. Replace x with condition
Example: CZ 2034 H. Call Conditionally
32
Opcode Operand Description
The program sequence is transferred from the subroutine to the calling program. The two bytes
from the top of the stack are copied into the program counter, and program execution begins at
the new address.
Example: RET.
The program sequence is transferred from the subroutine to the calling program based on the
specified flag of the PSW. The two bytes from the top of the stack are copied into the program
counter, and program execution begins at the new address. Example: RZ. Replace x with
condition
RETURN CONDITIONALLY
33
Opcode Operand Description
The RST instruction jumps the control to one of eight memory locations depending upon the
number. These are used as software instructions in a program to transfer program execution to
one of the eight locations. Example: RST 3.
No operation is performed. The instruction is fetched and decoded but no operation is executed.
Usually used for delay or to replace instructions during debugging.
Example: NOP
34
Opcode Operand Description
The CPU finishes executing the current instruction and halts any further execution. An
interrupt or reset is necessary to exit from the halt state. Example: HLT
The interrupt enable flip-flop is reset and all the interrupts except the TRAP are disabled.
No flags are affected.
Example: DI
The interrupt enable flip-flop is set and all interrupts are enabled. No flags are affected. This
instruction is necessary to re-enable the interrupts (except TRAP).
Example: EI
Operand Description
Opcode
This is a multipurpose instruction used to read the status of interrupts 7.5, 6.5, 5.5 and read
serial data input bit. The instruction loads eight bits in the accumulator with the following
interpretations.
Example: RIM
35
RIM Instruction
This is a multipurpose instruction and used to implement the 8085 interrupts 7.5, 6.5, 5.5, and
serial data output. The instruction interprets the accumulator contents as follows.
Example: SIM SIM Instruction
36
TIMING DIAGRAM
Timing diagram is the display of initiation of read/write and transfer of data operations under
the control of 3-status signals IO / M, S1, and S0. All actions in the microprocessor are
controlled by either leading or trailing edge of the clock.
MACHINE CYCLE
It is the time required by the microprocessor to complete the operation of accessing the memory
devices or I/O devices. In machine cycle various operations like opcode fetch, memory read,
memory write, I/O read, I/O write are performed.
T-STATE
Each machine cycle is composed of many clock cycles. Since, the data and instructions, both
are stored in the memory, the µP performs fetch operation to read the instruction or data and
then execute the instruction. The 3-status signals: IO / M, S1, and S0 are generated at the
beginning of each machine cycle. The unique combination of these 3-status signals identify
read or write operation and remain valid for the duration of the cycle.
37
Table1 shows details of the unique combination of these status signals to identify different
machine cycles. Thus, time taken by any µP to execute one instruction is calculated in terms
of the clock period. The execution of instruction always requires read and writes operations to
transfer data to or from the µP and memory or I/O devices. Each read/ write operation
constitutes one machine cycle (MC1) as indicated in Fig.1.7. Each machine cycle consists of
many clock periods/ cycles, called T-states.
PROCESSOR CYCLE:
The functions of the microprocessor are divided into fetch and execute cycle of any instruction
of a program. The program is nothing but number of instructions stored in the memory in
sequence. In the normal process of operation, the microprocessor fetches (receives or reads)
and executes one instruction at a time in the sequence until it executes the halt (HLT)
instruction.
INSTRUCTION CYCLE
An instruction cycle is defined as the time required to fetch and execute an instruction. For
executing any program, basically 2-steps are followed sequentially with the help of clocks
• Fetch
• Execute.
The time taken by the µP in performing the fetch and execute operations are called fetch and
execute cycle. Thus, sum of the fetch and execute cycle is called the instruction cycle as
indicated in Fig. 8. Each read or writes operation constitutes a machine cycle. The instructions
of 8085 require 1–5 machine cycles containing 3–6 states (clocks). The 1st machine cycle of
any instruction is always an Op Code fetch cycle in which the processor decides the nature of
instruction. It is of at least 4-states. It may go up to 6-states.
38
Fig.1.8 Processor cycle
• If the addressing mode is indirect then No. of machine cycles = No. of bytes + 1. Add
+1 to the No. of machine cycles if it is memory read/write operation.
• If the operand is 8-bit or 16-bit address then, No. of machine cycles = No. of bytes
+1.
The process of Opcode fetch operation requires minimum 4-clock cycles T1, T2, T3, and T4
and is the 1st machine cycle (M1) of every instruction.
Example
Fetch a byte 41H stored at memory location 2105H.
For fetching a byte, the microprocessor must find out the memory location where it is stored.
Then provide condition (control) for data flow from memory to the microprocessor. The
process of data flow and timing diagram of fetch operation are shown in Fig. 9. The
microprocessor fetches Opcode of the instruction from the memory as per the sequence below
• The microprocessor sends a high on status signal S1 and S0 indicating fetch operation.
• The microprocessor sends 16-bit address. AD bus has address in 1st clock of the 1st
machine cycle, T1.
• AD7 to AD0 address is latched in the external latch when ALE = 1.
39
• In T2, the RD control signal becomes low to enable the memory for read operation.
• The memory places opcode on the AD bus
• The data is placed in the data register (DR) and then it is transferred to IR.
• More machine cycles are essential for 2- or 3-byte instructions. The 1st machine cycle
M1 is meant for fetching the opcode. The machine cycles M2 and M3 are required
either read/ write data or address from the memory or I/O devices.
40
Fig. 1.10 Timing diagram for MVI B,05H
The MVI B, 05H instruction requires 2-machine cycles (M1 and M2). M1 requires 4-states
and M2 requires 3-states, total of 7-states as shown in Fig. 10. Status signals IO/M, S1 and S0
specifies the 1st machine cycle as the op-code fetch. In T1-state, the high order address {10H}
is placed on the bus A15 ⇔A8 and low-order address {00H} on the bus AD7 ⇔AD0 and ALE
= 1. In T2 -state, the RD line goes low and the data 06 H from memory location 1000H are
placed on the data bus. The fetch cycle becomes complete in T3-state. The instruction is
decoded in the T4-state. During T4-state, the contents of the bus are unknown. With the change
in the status signal, IO/M = 0, S1 = 1 and S0 = 0, the 2nd machine cycle is identified as the
memory read. The address is 1001H and the data byte [05H] is fetched via the data bus. Both
M1 and M2 perform memory read operation, but the M1 is called op-code fetch i.e., the 1st
machine cycle of each instruction is identified as the opcode fetch cycle.
Operation:
41
• It is used to fetch one byte from the memory.
• It requires 3 T-States.
• During T1, A8-A15 contains higher byte of address. At the same time ALE is high.
Therefore Lower byte of address A0-A7 is selected from AD0-AD7 as shown in fig
11.
• Since it is memory ready operation, IO/M (bar) goes low.
• During T2 ALE goes low, RD (bar) goes low. Address is removed from AD0-AD7
and data D0-D7 appears on AD0-AD7.
• During T3, Data remains on AD0-AD7 till RD (bar) is at low signal.
Operation:
• It requires 3 T-States.
42
• During T1, ALE is high and contains lower address A0-A7 from AD0-AD7.
• During T2, ALE goes low, WR (bar) goes low and Address is removed from AD0-
AD7 and then data appears on AD0-AD7 as in fig 12.
• Data remains on AD0-AD7 till WR (bar) is low.
Operation:
43
Fig 13.IO Read timing diagram
Operation:
44
Fig 14. IO Write timing diagram
INTERRUPT:
An interrupt is a signal initiated by an external device to the microprocessor. Once this signal
is received, the microprocessor completes the execution of the current instruction and responds
to the interrupt
The software interrupts are program instructions. When the instruction is executed, the
processor executes an interrupt service routine stored in the vector address of the software
interrupt instruction. The software interrupts of 8085 are RST 0, RST 1, RST 2, RST 3, RST
4, RST 5, RST 6 and RST 7.
45
The software interrupt instructions are included at the appropriate (or required) place in the
main program. When the processor encounters the software instruction, it pushes the content
of PC (Program Counter) to stack. Then loads the Vector address in PC and starts executing
the Interrupt Service Routine (ISR) stored in this vector address. At the end of ISR, a return
instruction - RET will be placed. When the RET instruction is executed, the processor POP
the content of stack to PC. Hence the processor control returns to the main program after
servicing the interrupt. Execution of ISR is referred to as servicing of interrupt. All software
interrupts of 8085 are vectored interrupts. The software interrupts cannot be masked and they
cannot be disabled. The software interrupts are RST0, RST1, … RST7 (8 Nos).
These are the interrupts provided as signals to the microprocessor. There are five interrupt
signals in 8085. They are Trap, RST 7.5, RST 6.5, RST 5.5 and INTR. The priority of the
interrupts is from TRAP to INTR. The program executed for the service of the interrupting
device is called the service routine.
TRAP
2. TRAP is the highest priority and vectored interrupt(as vector address is fixed i.e.
memory location where to transfer control).
3. TRAP interrupt is edge and level triggered. This means hat the TRAP must go high
and remain high until it is acknowledged.
4. In sudden power failure, it executes a ISR and send the data from main memory to
backup memory.
5. The signal, which overrides the TRAP, is HOLD signal. (i.e., If the processor receives
HOLD and TRAP at the same time then HOLD is recognized first and then TRAP is
recognized).
RST 7.5
46
• It has the second highest priority.
• It is edge sensitive. i.e. Input goes to high and no need to maintain high state until
it recognized.
• Maskable interrupt
It is disabled by,
• The RST 6.5 and RST 5.5 both are level triggered (i.e.) Input goes to high and stay
high until it recognized.
• Maskable interrupt
It is disabled by,
These interrupts are classified further into two classes based on the destination address and
response. Based on the service routine address, interrupts are classified in to vectored and non-
vectored interrupt.
VECTORED INTERRUPT:
If the address of the service routine is known to the microprocessor, i.e. if the service routine
begins at a predefined address, then the interrupts are called vectored interrupts. The vectored
address is calculated as (nx8)16 where n is the number of RST.
For example:
60 in hexadecimal number system is 003C. Therefore the branching address of RST 7.5 is
003C.
Interrupt Address
47
RST 7.5 003C
RST 6.5 0034
RST 5.5 002C
TRAP (RST 4.5) 0024
The address of the service routine is not known in prior to the microprocessor. It is sent by the
interrupting device.When the interrupt flipflop is enabled and INTR is high, microprocessor
executes the current instruction and makes INTA low. Based on the flexibility to enable or
disable interrupt, the interrupts are classified as maskable interrupt and non maskable interrupt.
Maskable Interrupt: Even if the interrupt signals are high, microprocessor will respond to
these signals only when interrupt flip flop is enabled. Example RST 7.5, RST 6.5, RST 5.5,
INTR
STACK
Stack is the upper part of the memory used for storing temporary information. It is a Last In
First Out Memory (LIFO). In 8085, it is accessed using PUSH and POP instructions. During
pushing, the stack operates in a decrement then store‖ style. The stack pointer is decremented
first, then the information is placed on the stack. During poping, the stack operates in a use
then increment style. The information is retrieved from the top of the the stack and then the
pointer is incremented. The SP pointer always points to the top of the stack‖.
The 8085 recognizes one additional register pair called the PSW (Program Status Word). This
register pair is made up of the Accumulator and the Flags registers. It is possible to push the
PSW onto the stack, do whatever operations are needed, then POP it off of the stack. The result
is that the contents of the Accumulator and the status of the Flags are returned to what they
were before the operations were executed.
SUBROUTINES
A subroutine is a group of instructions that will be used repeatedly in different locations of the
program. Rather than repeat the same instructions several times, they can be grouped into a
subroutine that is called from the different locations. In Assembly language, a subroutine can
exist anywhere in the code. However, it is customary to place subroutines separately from the
48
main program. The 8085 has two instructions for dealing with subroutines. The CALL
instruction is used to redirect program execution to the subroutine. The RET instruction is used
to return the execution to the calling routine.
CALL
CALL 4000H (3 byte instruction)
When CALL instruction is fetched, the MP knows that the next two Memory location contains
16bit subroutine address in the memory.
MP Reads the subroutine address from the next two memory location and stores the higher
order 8bit of the address in the W register and stores the lower order 8bit of the address in the
Z register. Push the address of the instruction immediately following the CALL onto the stack
[Return address]. Loads the program counter with the 16-bit address supplied with the CALL
instruction from WZ register as shown in fig 17.
49
acknowledged, the Address, Data, RD, WR, and IO/M lines are stated.
HLDA (Output)
HOLD ACKNOWLEDGE indicates that the CPU has received the Hold request and that it
will relinquish the buses in the next clock cycle. HLDA goes low after the Hold request is
removed. The CPU takes the buses one half clock cycle after HLDA goes low.
INTR (Input)
INTA (Output)
INTERRUPT ACKNOWLEDGE: is used instead of (and has the same timing as) RD during
the Instruction cycle after an INTR is accepted. It can be used to activate the 8259 Interrupt
chip or some other interrupt port.
RESTART INTERRUPTS: These three inputs have the same timing as INTR except they
cause an internal RESTART to be automatically inserted. RST 7.5 ~~ Highest Priority RST
6.5 RST 5.5 Lowest Priority
TRAP (Input)
Trap interrupt is a nonmaskable restart interrupt. It is recognized at the same time as INTR. It
is unaffected by any mask or Interrupt Enable. It has the highest priority of any interrupt.
RESET IN (Input)
Reset sets the Program Counter to zero and resets the Interrupt Enable and HLDA flipflops.
None of the other flags or registers (except the instruction register) are affected The CPU is
held in the reset condition as long as Reset is applied.
Indicates CPU is being reset also used as a system RESET. The signal is synchronized to the
processor clock.
X1, X2 (Input)
50
Crystal or R/C network connections to set the internal clock generator X1 can also be an
external clock input instead of a crystal. The input frequency is divided by 2 to give the internal
operating frequency.
CLK (Output)
Clock Output for use as a system clock when a crystal or R/ C network is used as an input to
the CPU. The period of CLK is twice the X1, X2 input period.
IO/M (Output)
IO/M indicates whether the Read/Write is to memory or l/O Tristated during Hold and Halt
modes.
SID (Input)
Serial input data line The data on this line is loaded into accumulator bit 7 whenever a RIM
instruction is executed.
SOD (output)
Serial output data line. The output SOD is set or reset as specified by the SIM instruction.
8085 PROGRAMS
I. 8-BIT ADDITION.
Program:
51
Sample Data:
Input Output
9100 – 04 9200 – 0C
9101 – 08 9201 – 00
9100 – FF 9200 – FE
9101 – FF 9201 – 01
8-BIT SUBTRACTION
Program:
Input Output
9200 – FF 9200 – 55
9201 – AA 9201 – 01
9200 – BB 9200 – 44
9201 – FF 9201 – 00
16-BIT ADDITION
Program:
52
MVI C, 00 -Clear one register for carry (Reg C)
LHLD 9100 -Load the first data in HL register pair
XCHG -Swap the contents of HL and DE pairs
LHLD -Load the second data in HL register pair
DAD D -Double add the contents of HL and DE pairs
JNC L1- Check for carry, if there is no carry go to step 8
INR C- Increment Reg C
L1: SHLD 9104- Store the result which is in HL pair in a memory location
MOV A, C - Move the carry in Reg C to accumulator
STA 9106 - Store the accumulator content in memory
RST 1 - Stop
Sample Data:
Input Output
9100 – 06 9104 – 09
9101 – 05 9105 – 0B
9102 – 03 9106 – 00
9103 – 06
9100 – 06 9104 – 09
9101 – F0 9105 – E0
9102 – 03 9106 – 01
9103 – F0
Program:
MVIB, 06- Initialize one register (Reg B) with the length of the string
LXI H, 9100- Initialize one register pair (HL) with the starting address of the source array
LXI D, 9205 - Initialize one register pair (DE) with the ending address of the destination array
L1: MOV A, M - Move the memory content to accumulator
STAX D - Store the accumulator content in DE pair
INX H - Increment HL pair
DCX D - Decrement DE pair
DCR B - Decrement the counter register – Reg B
JNZ L1 - Check for zero, if not zero, goto step 4
RST1 - Stop
53
Sample Data:
Input Output
9100 – 0E 9200 – 0C
9101 – 0E 9201 – 00
9102 – 0F 9202 – 0F
9103 – 0F 9203 – 0F
9104 – 00 9204 – 0E
9105 – 0C 9205 – 0E
FACTORIAL OF A NUMBER
Program:
Sample Data:
Input Output
9100 – 04 9101 – 18
54