0% found this document useful (0 votes)
57 views66 pages

Intel 8085 Microprocessor Overview

Kdksjej
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views66 pages

Intel 8085 Microprocessor Overview

Kdksjej
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Microprocessor Architecture

[Link]
Microprocessor Architecture
The microprocessor is the CPU (Central Processing Unit) of a computer. It is the heart
of the computer. Here, we will describe Intel 8085 as it is one of the most popular 8-
bit microprocessor.

Intel 8085
Intel 8085 is an 8-bit, NMOS microprocessor designed by Intel in 1977.

It has following configuration:

• It is a 40 pin I.C. package fabricated on a single LSI chip.


• The Intel 8085 uses a single +5Vd.c. supply for its operation.
• Intel 8085’s clock speed is about 3 MHz; the clock cycle is of 320ns.
• 8 - bit data bus.
• Address bus is of 16-bit, which can address up to 64KB
• 16-bit stack pointer
• 16 bit PC (Program Counter)
• Six 8-bit registers are arranged in pairs :BC, DE, HL

Intel 8085 is used in mobile phones, microwave ovens, washing machines etc.
ALU
The Arithmetic and Logic Unit, ALU performs the arithmetic and
logical operations:

• Addition
• Subtraction
• Logical AND
• Logical OR
• Logical EXCLUSIVE OR
• Complement (Logical NOT)
• Increment (add 1)
• Decrement (subtract 1)
• Left shift, Rotate left, Rotate right
• Clear, etc.
Timing and Control Unit
The timing and control unit is the section of the CPU.

• It is used to generate timing and control signals which are necessary for the
execution of instructions.
• It is used to control data flow between CPU and peripherals (including
memory).
• It is used to provide status, control and timing signals which are required for
the operation of memory and I/O devices.
• It is used to control the entire operations of the microprocessor and
peripherals connected to it.

Thus we can see that the control unit of the CPU acts as the brain of the
computer system.
Registers
Registers are used for temporary storage and manipulation of data and
instructions by the microprocessor. Data remain in the registers till they are
sent to the I/O devices or memory. Intel 8085 microprocessor has the
following registers:

• One 8-bit accumulator (ACC) i.e. register A


• Six general purpose registers of 8-bit, these are B,C, D, E, H and L
• One 16-bit stack pointer, SP
• One 16-bit Program Counter, PC
• Instruction register
• Temporary register

In addition to the above mentioned registers the 8085 microprocessor


contains a set of five flip-flops which serve as flags (or status flags).
A flag is a flip-flop which indicates some conditions which arises after the
execution of an arithmetic or logical instruction.

Accumulator (ACC): The accumulator is an 8-bit register associated with the


ALU. The register 'A' is an accumulator in the 8085. It is used to hold one of
the operands of an arithmetic and logical operation.

The final result of an arithmetic or logical operation is also placed in the


accumulator.
General-Purpose Registers: The 8085 microprocessor contains six 8-bit
general purpose registers. They are: B, D, C, E, H and L register.

To hold data of 16-bit a combination of two 8-bit registers can be employed.


The combination of two 8-bit registers is called register pair. The valid register
pairs in the 8085 are: D-E, B-C and H-L. The H-L pair is used to act as a
memory pointer.
Program Counter (PC): It is a 16-bit special purpose register. It is used to hold the
address of memory of the next instruction to be executed. It keeps the track of the
instruction in a program while they are being executed.

The microprocessor increments the content of the next program counter during the
execution of an instruction so that at the end of the execution of an instruction it
points to the next instruction’s address in the program.

Stack Pointer (SP): It is a 16-bit special function register used as memory pointer. A
stack is nothing but a portion of RAM. In the stack, the contents of only those registers
are saved, which are needed in the later part of the program.

The stack pointer (SP) controls the addressing of the stack. The Stack Pointer contains
the address of the top element of data stored in the stack.

Instruction Register: The instruction register holds the opcode (operation code or
instruction code) of the instruction which is being decoded and executed.
Temporary Register: It is an 8-bit register associated with the ALU. It holds data during
an arithmetic/logical operation. It is used by the microprocessor. It is not accessible to
programmer.

Flags: The Intel 8085 microprocessor contains five flip-flops to serve as a status flags.
The flip-flops are reset or set according to the conditions which arise during an
arithmetic or logical operation.
The five status flags of Intel 8085 are:

• Carry Flag (CS)


• Parity Flag (P)
• Auxiliary Carry Flag (AC)
• Zero Flag(Z)
• Sign Flag(S)

If a flip-flop for a particular flag is set, then it indicates 1. When it is reset, it indicates
0.
Data and Address Bus

The Intel 8085 is an 8-bit microprocessor. Its data bus is 8-bit wide and therefore, 8 bits of
data can be transmitted in parallel from or to the microprocessor.

The Intel 8085 requires an address bus of 16-bit wide as the memory addresses are of 16-
bits.

The 8 most significant bits of the address are transmitted by the address bus, A-bus (pins
A8 - A15).

The 8 least significant bits of the address are transmitted by data/address bus, AD-bus
(pins AD0 - AD7).
Address Bus and Data Bus

• A8 - A15 (Output): These are address bus and are used for the most significant bits of
the memory address or 8-bits of I/O address.

• AD0 - AD7 (Input/output): These are time multiplexed address/data bus i.e. they
serve dual purpose. They are used for the least significant 8 bits of the memory
address or I/O address during the first cycle. Again they are used for data during 2nd
and 3rd clock cycles.

Control and Status Signals

• ALE (Output): ALE stands for Address Latch Enable signal. ALE goes high during first
clock cycle of a machine cycle and enables the lower 8-bits of the address to be
latched either into the memory or external latch.
• IO/M (Output): It is a status signal which distinguishes whether the address is for
memory or I/O device.
• S0, S1 (Output): These are status signals sent by the microprocessors to distinguish
the various types of operation given in the next slide:
Status codes for Intel 8085

RD (Output): RD is a signal to control READ operation. When it goes low, the selected I/O
device or memory is read.

WR (Output): WR is a signal to control WRITE operation. When it goes low, the data bus'
data is written into the selected memory or I/O location.

READY (Input): It is used by the microprocessor to sense whether a peripheral is ready to


transfer a data or not. If READY is high, the peripheral is ready. If it is low the micro
processor waits till it goes high.
Serial input and serial output refer to methods of transmitting and receiving
data one bit at a time, sequentially, over a single communication channel. In
the context of microprocessors and microcontrollers like the Intel 8085, these
terms are often associated with serial communication.

1. **Serial Input (SID - Serial Input Data):**


- Serial input refers to the process of receiving data bit by bit, one after the
other, over a single communication line.
- In the case of the 8085 microprocessor, the SID (Serial Input Data) is a pin or
a flip-flop that represents the input for serial data. The state of the SID flip-flop
can be read using instructions like RIM (Read Interrupt Mask) or set using the
SIM (Set Interrupt Mask) instruction.
- The microprocessor can read data from external devices or peripherals that
communicate with it using a serial data format.
2. **Serial Output (SOD - Serial Output Data):**
- Serial output refers to the process of transmitting data one bit at a time over a single
communication line.
- In the 8085 microprocessor, the SOD (Serial Output Data) is a pin or a flip-flop that
represents the output for serial data. The state of the SOD flip-flop can be controlled
using the SIM (Set Interrupt Mask) instruction.
- The microprocessor can send data to external devices or peripherals using a serial
data format.

Serial communication is often used in situations where a full parallel data bus is not
practical, or when a more efficient use of resources is needed. It is commonly employed
in applications such as communication with peripherals, data transfer between
microcontrollers, and communication between a microcontroller and sensors or other
embedded devices.
the RIM instruction stands for "Read Interrupt Mask." The RIM instruction is used to read the status of
certain interrupt-related registers and flags. It is an 8-bit instruction.

The RIM instruction reads the contents of the following registers and flags into the accumulator:

1. Accumulator (A): The contents of the accumulator are not affected by the RIM instruction.

2. Interrupt Enable Flip-Flop (IE): The state of the interrupt enable flip-flop is placed in bit 7 of the
accumulator. If bit 7 is 1, interrupts are enabled; if it is 0, interrupts are disabled.

3. Serial Output Data (SOD): The state of the serial output data line is placed in bit 6 of the accumulator.

4. R1 and R0: Bits 5 and 4 of the accumulator contain the status of the R1 and R0 bits in the status register.

5. SID and SOD: Bits 3 and 2 of the accumulator contain the status of the serial input data (SID) and serial
output data (SOD) lines.

6. Trap Flip-Flop: Bit 1 of the accumulator is not used and is always 0.

7. RIM Flip-Flop: Bit 0 of the accumulator contains the state of the RIM flip-flop. If it is 1, the RIM
instruction has been executed; if it is 0, the RIM instruction has not been executed.

The RIM instruction allows the program to check the status of various interrupt-related elements, which can
be useful for decision-making in the program flow based on the interrupt status.
the SIM instruction stands for "Set Interrupt Mask." The SIM instruction is used to set the
status of the interrupt-related registers and flags. It is an 8-bit instruction.

The SIM instruction is used to load the accumulator with data from the specified data byte
and then use this data to modify the status of the interrupt-related registers. The format of
the SIM instruction is: SIM

After the SIM instruction is executed, the following modifications are made:
1. Bits 7 and 6 of the accumulator (A) are used to set the state of the interrupt enable flip-
flop (IE). Bit 7 corresponds to the state of the interrupt enable (INTE) flip-flop, and bit 6
corresponds to the state of the serial output enable (SOD) flip-flop.
2. Bits 5 and 4 of the accumulator (A) are used to set the status of the R1 and R0 bits in
the status register.
3. Bits 3 and 2 of the accumulator (A) are ignored.
4. Bit 1 of the accumulator (A) is used to set the state of the serial input data (SID) flip-
flop.
5. Bit 0 of the accumulator (A) is ignored.

In summary, the SIM instruction allows the program to configure the interrupt-related
registers and control the state of the interrupt enable flip-flop, serial output enable flip-
flop, R1 and R0 bits, and the serial input data flip-flop. It is particularly useful for
configuring the interrupt system and serial communication in the 8085 microprocessor.
8085 Instructions
An instruction of computer is a command given to the computer to
perform a specified operation on given data. Some instructions of
Intel 8085 microprocessor are: MOV, MVI, LDA, STA, ADD, SUB, RAL,
INR, MVI, etc.

Each instruction contains two parts: Opcode (Operation code) and


Operand.

The 1st part of an instruction which specifies the task to be


performed by the computer is called Opcode.

The 2nd part of the instruction is the data to be operated on, and it
is called Operand. The Operand (or data) given in the instruction
may be in various forms such as 8-bit or 16-bit data, 8-bit or 16-bit
address, internal registers or a register or memory location.
In computer programming and assembly language, an instruction is typically
composed of two parts: the opcode and the operand.

1. Opcode (Operation Code):


- The opcode is a code that represents the operation or instruction to be
performed by the CPU (Central Processing Unit). It specifies the operation the CPU
needs to carry out.
- Opcodes are machine-level instructions that are understood by the processor's
instruction set architecture.
- Examples of opcodes include ADD (addition), SUB (subtraction), MOV (move),
JMP (jump), etc.

2. Operand:
- The operand is the data or the address of the data on which the operation
specified by the opcode is to be performed.
- In simple terms, the operand is the source or destination of the data for the
instruction.
- For instructions like MOV (move), the operand might be the data to be moved,
and for instructions like ADD or SUB, the operand is the data to be added or
subtracted.
Let's consider an example of an instruction in Intel 8085 assembly
language:

MVI B, 15H

In this example:
- MVI is the opcode, which stands for "Move Immediate."
- B is the operand, representing the register where the immediate data
will be moved.
- 15H is the immediate operand, representing the data (in
hexadecimal) to be moved into the register B.

In this instruction, the opcode (MVI) specifies the operation, and the
operand (B) along with the immediate operand (15H) provides details
about the specific operation, indicating that the immediate data 15H
should be moved into register B.
Instruction Word Size
A digital computer understands instruction written in binary codes (machine
codes). The binary codes of all instructions are not of the same length.

According to the word size, the Intel 8085 instructions are classified into the
following three types:

1. One byte instruction


2. Two byte instruction
3. Three byte instruction

1. One-byte instruction: Examples of one byte instructions are:

• MOV A, B - Move the content of the register B to register A.


• ADD B - Add the content of register B to the content of the accumulator.

All the above two examples are only one byte long. All one-byte instructions
contain information regarding operands in the opcode itself.
2. Two-byte instruction: In a two byte instruction the first byte of the instruction is its
opcode and the second byte is either data or address.

Example:

MVI B, 05 ; 05 moved to register B.

06, 05 ; MVI B, 05 is in the code form.

The first byte 06 is the opcode for MVI B and second byte 05 is the data which is to be
moved to register B.

3. Three-byte instruction: The first byte of the instruction is its opcode and the second and
third bytes are either 16-bit data or 16-bit address.

Example:
LXI H, 2400H ; Load H-L Pair with 2400H
21, 00, 24 ; LXI H, 2400H in the code form

The first byte 21 is the opcode for the instruction LXI H. The second 00 is 8 LSBs of the data
(2400H), which is loaded into register L. The third byte 24 is 8 MSBs of the data (2400H),
which is loaded into register H.
The time required to fetch an instruction and necessary data from memory and
to execute it, is called an instruction cycle. Or the total time required to execute
an instruction is given by:

IC = FC + EC
Where,

IC = Instruction Cycle
FC = Fetch Cycle
EC = Execute Cycle
Fetch the instruction (Fetch Cycle)
In the beginning of the fetch cycle, the content of the program counter (PC), which is the
address of the memory location where opcode is available, is sent to the memory. The
memory puts the opcode on the data bus so as to transfer it to the CPU.

The whole operation of fetching an opcode takes three clock cycles. A slow memory may
take more time.

Decode the instruction (Decode Cycle)


The opcode fetched from the memory goes to the data register, DR and then to instruction
register, IR. From the IR it goes to the decoder circuitry which decodes the instruction.
Decoder circuitry is within the microprocessor.

Execute the Instruction (Execute Cycle)


After the instruction is decoded, execution begins.

If the operand is beside the general purpose registers, execution is immediately


performed. The time taken in decoding and execution of an instruction is one clock cycle.
In some situations, an execute cycle may involve one or more read or write cycles or both.

Read Cycle: If an instruction contains data or operand address which are in the memory,
the CPU has to perform some read operations to get the desired data. In case of a read
cycle the instruction received from the memory are data or operand address instead of an
opcode.

Write Cycle: In write cycle, data are sent from the CPU to the memory or an output
device.

Machine Cycle and State


The necessary steps carried out to perform the operation of accessing either memory or
input output device, constitute a machine cycle. In other words, necessary steps carried
out to perform a fetch, a read or a write operation constitutes a machine cycle.
One sub-division of an operation performed in one clock cycle is called a state or T-state.
In short, one clock cycle of the system clock is referred to as a state.
Timing Diagram
The necessary steps carried out in a machine cycle can be represented graphically. Such a
graphical representation is called timing diagram. The timing diagram for opcode fetch,
memory read, memory write, I/O read and I/O write will be discussed below:
In the above diagrams, the basic used parameters are:
ALE: ALE indicates the availability of a valid address on the multiplexed address/data
lines. When it is high or 1, then it acts as an address bus and when low or 0, then it acts
as a data bus.

RD (low active): If it is high or 1, then no data is read by the microprocessor. If signal is


low or 0, then data is read by the microprocessor.
WR (low active): If it is high or 1, then no data is written by the microprocessor. If signal
is low or 0, then data is written by the microprocessor.
IO/M (low active): A high or 1 on this signal indicates I/O operation while a low or 0
indicates memory operation.
S0, S1: S0 and S1 Indicate the type of machine cycle in progress.

The below table, shows the status of different control signal for different operation:
Instruction Set of 8085

[Link]
Instruction Set of 8085

Instruction and Data Formats

The various techniques to specify data for instructions are:

1. 8-bit or 16-bit data may be directly given in the instruction itself.


2. The address of the memory location, I/O port or I/O device, where data resides,
may be given in the instruction itself.
3. In some instructions, only one register is specified. The content of the specified
register is one of the operands.
4. Some instructions specify two registers. The contents of the registers are the
required data.
5. In some instructions, data is implied. The most instructions of this type operate on
the content of the accumulator.

Due to different ways of specifying data for instructions, the machine codes of all
instructions are not of the same length. It may 1-byte, 2-byte or 3-byte instruction.
Addressing Modes

Each instruction requires some data on which it has to operate. There are different
techniques to specify data for instructions. These techniques are called addressing
modes. Intel 8085 uses the following addressing modes:

Direct Addressing
In this addressing mode, the address of the operand (data) is given in the instruction
itself.

Example

STA 2400H ; It stores the content of the accumulator in the memory location
2400H.

32, 00, 24 ; The above instruction in the code form.

In this instruction, 2400H is the memory address where data is to be stored. It is given in
the instruction itself. The 2nd and 3rd bytes of the instruction specify the address of the
memory location. Here, it is understood that the source of the data is accumulator.
Register Addressing
In register addressing mode, the operand is in one of the general purpose
registers. The opcode specifies the address of the register(s) in addition to the
operation to be performed.

Example:

MOV A, B: Move the content of B register to register A.

78: The instruction in the code form.

In the above example, MOV A, B is 78H. Besides the operation to be performed


the opcode also specifies source and destination registers.

The opcode 78H can be written in binary form as 01111000. The first two bits,
i.e. 0 1 are for MOV operation, the next three bits 1 1 1 are the binary code for
register A, and the last three bits 000 are the binary code for register B.
Register Indirect Addressing
In Register Indirect mode of addressing, the address of the
operand is specified by a register pair.

Example

LXI H, 2500 H - Load H-L pair with 2500H.


MOV A, M - Move the content of the memory location, whose
address is in H-L pair (i.e. 2500 H) to the accumulator.
HLT - Halt.
In the above program the instruction MOV A, M is an example of
register indirect addressing. For this instruction, the operand is in
the memory. The address of the memory is not directly given in the
instruction. The address of the memory resides in H-L pair and this
has already been specified by an earlier instruction in the program,
i.e. LXI H, 2500 H.
Immediate Addressing
In this addressing mode, the operand is specified within the instruction
itself.

Example

LXI H, 2500 is an example of immediate addressing. 2500 is 16-bit data


which is given in the instruction itself. It is to be loaded into H-L pair.

Implicit Addressing
There are certain instructions which operate on the content of the
accumulator. Such instructions do not require the address of the
operand.

Example

CMA, RAL, RAR, etc.


Status Flags
There is a set of five flip-flops which indicate status
(condition) arising after the execution of arithmetic and
logic instructions. These are:

Carry Flag (CS)


Parity Flag (P)
Auxiliary Carry Flags (AC)
Zero Flags (Z)
Sign Flags (S)
Intel 8085 Instructions

An instruction of a computer is a command given to the computer


to perform a specified operation on given data. In microprocessor,
the instruction set is the collection of the instructions that the
microprocessor is designed to execute.

The programmer writes a program in assembly language using


these instructions. These instructions have been classified into the
following groups:

You might also like