MICROPROCESSORS AND APPLICATIONS
Mr. DEEPAK P.
Associate Professor
ECE Department
SNGCE
DEEPAK.P
UNIT 2
DEEPAK.P
1/8/14
8085
PROGRAMMING MODEL
DEEPAK.P
3
Overview: 8085
1. Six general-purpose Registers
Programming model
2. Accumulator Register
3. Flag Register
4. Program Counter Register
5. Stack Pointer Register
Programming Model
DEEPAK.P
Programming Model
DEEPAK.P
1/8/14
Instruction & Data
Formats
DEEPAK.P
7
Instruction & Data
Formats
8085 Instruction set can be classified according
to size (in bytes) as
1. 1-byte Instructions
2. 2-byte Instructions
3. 3-byte Instructions
1.Includes Opcode and Operand in the same
byte
2.First byte specifies Operation Code Second
byte specifies Operand
3.First byte specifies Operation Code Second &
Third byte specifies Operand
Instruction & Data
Formats
1. 1-byte Instructions
Eg. MOV A, M, CMA, DAA etc
2. 2-byte Instructions
Eg. MVI A, 08, IN 02, CPI 03 etc
3. 3-byte Instructions
Eg. LXI H, 4500, STA 4600, LDA 4200
1/8/14
ADDRESSING MODES
DEEPAK.P
10
Addressing
Modes
of
The microprocessor has different ways of
8085 the data or operand for the
specifying
instruction.
The various formats of specifying
operands are called addressing modes
The 8085 has Five addressing modes:
1) Register Addressing mode: This type of
addressing mode specifies register or register
pair that contains data.
Example: ADD B, MOV B A
Addressing Modes of
2)8085
Immediate Addressing Mode:
In this type of addressing mode, immediate
data byte is provided with the
instruction.
Example: MVI A 47H, LXIH, 4100H etc.
Memory Addressing
One of the operands is a memory location
Depending on how address of memory
location is specified, memory addressing is
of two types
Direct addressing
Indirect addressing
3) Direct Addressing Mode: In this type
of addressing mode, the 16bit memory
address is directly provided with the
instruction.
Example: LDA C5 00 , STA 3050H etc
Addressing
Modes
of
4) Indirect Addressing Mode: In this type
of8085
addressing mode, the 16bit memory
address is indirectly provided with the
instruction using a register pair
Example: LDAX B
(Load the accumulator with the contents
of the memory location whose address is
stored in the register pair BC)
MOV M, A ;copy register A to memory location
whose address is stored
H
Lin register pair HL
30H
20H
50H
2050H 30H
Addressing
Modes
of
5) Implied Addressing mode: In this type of
8085 mode, No operand (register or
addressing
data) is specified in the instruction.
The operand is inborn to the instruction.
Example: CMA (Complement Accumulator) ,
SIM , RIM etc
1/8/14
INSTRUCTION SET
DEEPAK.P
16
Instruction Set of 8085
Consists of
74 operation codes, e.g. MOV, MVI
246 Instructions, e.g. MOV A,B, MVI A,03
8085 instructions can be classified
as
1. Data Transfer (Copy)
2. Arithmetic
3. Logical and Bit manipulation
4. Branch
5. Machine Control
Instruction
MOV
Move
MVIMove Immediate
LDA
Load Accumulator Directly from Memory
STAStore Accumulator Directly in Memory
LHLD
Load Hand L Registers Directly from
Memory
SHLD
Store Hand L Registers Directly in
Memory
LXI Load register pair Immediate
LDAX
Load accumulator indirect
STAX
Store Accumulator In direct
XCHG
Exchange DE pair and HL pair
XTHL
Exchange between HL pair and stack
Instruction
Data Transfer Instructions
IN portaddr
i.e. IN 00 ( Reads data from the Input Switch,
0 0represents the port address of the input
switch)
OUT portaddr
i.e. OUT 00 ( Writes data to the Display device
where 00 represents the Port address of the
display)
Data Transfer Instructions
The 256 input/output ports provide
communication with the outside world of
peripheral devices.
The IN and OUT instructions initiate data
transfers.
The I N instruction latches the number of the
desired port onto the address bus. As soon as a
byte of data is returned to the data bus latch, it
is transferred into the accumulator.
The OUT instruction latches the number of the
desired port onto the address bus and latches
the data in the accumulator onto the data bus.
Arithmetic Instructions
ADD
Add to Accumulator
ADI Add Immediate Data to Accumulator
ADC
Add to Accumulator Using Carry Flag
ACI Add Immediate Data to Accumulator Using
Carry Flag
SUB
Subtract from Accumulator
SUI Subtract Immediate Data from Accumulator
Arithmetic Instructions
SBB
Subtract from Accumulator Using Borrow
((:Carry) Flag
SBI Subtract I mmediate from Accumulator Using
Borrow
INR
Increment Specified Byte by One
DCR
Decrement Specified Byte by One
INX Increment Register Pair by One
DCX
Decrement Register Pair by One
DAD
Double Register Add: Add Contents of
Register
Pair to Hand L Register Pair
Arithmetic Instructions
Logical Instructions
ANA
Logical AND with Accumulator
ANI
Logical AND with Accumulator Using
Immediate Data
ORA
Logical OR with Accumulator
ORI
Logical OR with Accumulator Using
Immediate Data
XRA
Exclusive Logical OR with
Accumulator
XRI
Exclusive OR Using Immediate Data
CMP
Compare
CPI
Compare Using Immediate Data
Logical Instructions
RLC
RRC
RAL
RAR
CMA
CMC
STC
Rotate Accumulator Left
Rotate Accumulator Right
Rotate Left Through Carry
Rotate Right Through Carry
Complement Accumulator
Complement Carry Flag
Set Carry Flag
Logical Instructions
Logical Instructions
Logical Instructions
Logical Instructions
Branching Instructions
The unconditional branching instructions are
as follows:
JMP Jump
CALL
Call
RET
Return
Conditional branching instructions
jumps
Calls Returns
JC CC
RC (Carry)
JNC
CNC RNC (No Carry)
JZ CZ
RZ (Zero)
JNZ
CNZ RNZ (Not Zero)
Branching Instructions
JP
JM
JPE
Even)
JPO
(Parity Odd)
PCHL
Counter
RST
Used with
CP
CM
CPE
RP (Plus)
RM (Minus)
RPE (Parity
CPO
RPO
Move Hand L to Program
Special Restart Instruction
Interrupts
Jump Instructions
Call Instructions
Return Instructions
Re start Instructions
Stack, I/O, and Machine Control
Instructions.
PUSH
Push Two Bytes of Data onto
the Stack
POP
Pop Two Bytes of Data off
the Stack
XTHL
Exchange Top of Stack with
Hand L
SPHL
Move contents of Hand L to
Stack Pointer
The I/O instructions are as follows:
IN
Initiate Input Operation
OUT
Initiate Output Operation
Stack, I/O, and Machine Control
Instructions.
The machine control instructions are as
follows:
EI
DI
HLT
NOP
Enable Interrupt System
Disable Interrupt System
Halt
No Operation
Stack, I/O, and Machine Control
Instructions.
RIM
Stack, I/O, and Machine Control
Instructions.
SIM
4/8/14
ASSEMBLY LANGUAGE
PROGRAMMING
DEEPAK.P
41
Programming
1. Write an assembly program to add two
numbers
o
o
o
o
o
o
MVI D, 02BH
MVI C, 06FH
MOV A, C
ADD D
STA 4500
HLT
Program
1. Write an assembly program to add two
numbers
o
o
o
o
o
o
LXI H, 4500
MOV A, M
INX H
ADD M
STA 4500
HLT
Program
2. Write an Assembly Language Program to
add two numbers ; results contain carry
LOOP1
LXI H, 4500
MOV A, M
INX H
ADD M
JNC LOOP 1
INR C
STA 4500
MOV A, C
STA 4501
HLT
Program
2. Write an Assembly Language Program to
add two numbers ; results contain carry
( write the program using JC)
LXI H, 4500
LOOP1
LOOP1
MOV A, M
INX H
ADD M
JC
LOOP 1
JMP
LOOP 2
INR C
STA 4500
MOV A, C
STA 4501
HLT
ADDITION OF TWO 16 BIT
NUMBERS
3. To write an assembly language program for
adding two 16 bit numbers using 8085 micro
processor.
SUM OF DATAS
4. To write an assembly language program to
calculate the sum of datas using 8085
microprocessor
SUBTRACTION OF TWO 8 BIT
NUMBERS
5. To write a assembly language program for
subtracting 2 bit (8) numbers by using- 8085
SUBTRACTION OF TWO 16 BIT
NUMBERS
6. To write an assembly language program for
subtracting two 16 bit numbers using 8085
microprocessor kit.
Multiplication ; No carry
LDA 2000 // Load multiplicant to accumulator
MOV B,A // Move multiplicant from A(acc) to B
register
LDA 2001 // Load multiplier to accumulator
MOV C,A // Move multiplier from A to C
MVI A,00 // Load immediate value 00 to a
L: ADD B // Add B(multiplier) with A
DCR C // Decrement C, it act as a counter
JNZ L // Jump to L if C reaches 0
STA 2010 // Store result in to memory
HLT // End
Multiplication ; With carry
7. Write an assembly program to multiply
a number by 8
MVI C,OO
LXI H, 4100
MOV B, M
INX H
MOV A, M
DCR B
LOOP 2
ADD M
JNC LOOP1
INR C
LOOP 1
DCR B
JNZ LOOP2
STA 4500
HLT
Multiplication
DIVISION OF TWO 8 BIT
NUMBERS
To write an assembly language program for
dividing two 8 bit numbers using
microprocessor
ASCENDING ORDER
9. To write a program to sort given n
numbers in ascending order
DESCENDING ORDER
10. To write a program to sort given n
numbers in descending order
Program
11. Write an Assembly Language Program to
transfer a block of data from a series of
locations to other.
MVI C, 0AH
ten
; Initialize counter i.e no. of bytes
Store the count in Register C, ie
LXI H, 2200H
; Initialize source memory pointer
LXI D, 2300H
; Initialize destination memory pointer
Data Starts from
2200 location
BK: MOV A, M
; Get byte from source memory
block i.e 2200 to
accumulator.
STAX D
; Store byte in the destination memory
block i.e 2300 as
stored in D-E pair
Program
INX H
pointer
INX D
pointer
DCR C
of bytes
JNZ BK
HLT
; Increment source memory
; Increment destination memory
; Decrement counter to keep track
moved
; If counter 0 repeat steps
; Terminate program
Largest Number
Write an Assembly Language Program
to find a largest number.
LXI H, 4500
MOV A, M
INX H
CMP M
JNC
LOOP 1
JMP
LOOP 2
LOOP1
STA 4500
LOOP2
MOV A, M
STA 4500
HLT
Smallest Number
Write an Assembly Language Program
to find a smallest number.
LXI H, 4500
MOV A, M
INX H
CMP M
JC
LOOP 1
JMP
LOOP 2
LOOP1
STA 4500
LOOP2
MOV A, M
STA 4500
HLT
Occurrence Counting
Write an Assembly Language Program
to count the repetition of a number.
UP Counting
Write an Assembly Language Program
to count up to 7F
UP Counting
Write an Assembly Language Program
to count from &F to 00 , downwards
9/8/14
STACK AND SUBROUTINE
DEEPAK.P
63
STACK
The stack is an area of memory identified
by the programmer for temporary storage of
information.
The stack is a LIFO structure.
The stack normally grows backwards into
memory.
Programmer can defines the bottom of
(SP) the stack and the stack grows up into
reducing address range.
STACK
Stack is defined by setting the SP (Stack
Pointer) register.
LXI SP, FFFFH ,This sets SP to location FFFFH
(end of memory for 8085).
STACK
Save information by PUSHing onto STACK
Retrieved from STACK by POPing it off.
PUSH and POP work with register pairs only.
Example PUSH B
Decrement SP, Copy B to (SP-1)
Decrement SP, Copy C to (SP-1)
Example POP B
Copy (SP+1) to C, Increment SP
Copy (SP+1) to B, Increment SP
SUBROUTINE
A subroutine is a group of instructions
that is used repeatedly in different places
of the program.
It can be grouped into a subroutine and call
from the different locations.
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.
SUBROUTINE
You must set the SP correctly before using
CALL
CALL 5000H
Push the PC value onto the stack
Load PC with 16bit address supplied CALL
ins.
RET : Load PC with stack top; POP PC
SUBROUTINE
SUBROUTINE
SUBRTN:
PUSH PSW
PUSH B
PUSH D
PUSH H
subroutine coding
POP H
POP D
POP B
POP PSW
RETURN
9/8/14
SERIAL INPUT / OUTPUT
OPERATION
DEEPAK.P
71
Serial Input /Out put
8085 Microprocessor has two Serial
Input/output pins that are used to read/write
one bit data to and from peripheral devices.
SID (Serial Input Data line)
There is an One bit Input line inside the 8085
CPU (SID line ,Pin number 5)
-The data that is read is stored in the A7th bit
of the Accumulator
-RIM instruction is used to read the SID line
Serial Input
Serial Input
Example Pseudocode:
1) RIM
2) A7 (SID)
As seen from the figure 1, if the SID line is
connected with +5V and RIM instruction is
executed, then the Accumulators MSB bit will be
loaded with a Logic 1
Serial Input
Serial Input
RIM
Line
-There is a One bit Output port inside the 8085
CPU (Pin number 4
-1 bit data can be externally written in this
port.
-To write data into this port, SIM instruction is
used.
-The data that is to be written in this port must be
stored in the A7th bit of the Accumulator.
Bit A6 of the Accumulator is known as SOE
(Serial output Enable).
This bit Must be set to 1 to enable Serial data output.
Line
Line
Line
Pseudocode:
A 40H
SIM
SOD (A7)
Line
SIM
Problem
The SID Pin of an 8085 microprocessor is
connected with a 0V/+5V source and the SOD Pin
is connected with a LED. Write down the
Pseudocode that will read the SID pin of the
microprocessor and glow the LED if the SID pin is
connected with a +5V source otherwise Turn the
Led off if the SID Pin is connected with GND (0V)
INSTRUCTION SUMMARY
INSTRUCTION SUMMARY
INSTRUCTION SUMMARY
INSTRUCTION SUMMARY
INSTRUCTION SUMMARY