Monday, May 21, 2012

MICROPROCESSORS & APPLICATIONS LAB MANUAL (first half set))


 1. INTRODUCTION TO 8085


INTEL 8085 is one of the most popular 8-bit microprocessor capable of addressing 64 KB of memory and its architecture is simple. The device has 40 pins, requires +5 V power supply and can operate with 3MHz single phase clock.

ALU (Arithmetic Logic Unit):
The 8085A has a simple 8-bit ALU and it works in coordination with the accumulator, temporary registers, 5 flags and arithmetic and logic circuits. ALU has the capability of performing several mathematical and logical operations. The temporary registers are used to hold the data during an arithmetic and logic operation. The result is stored in the accumulator and the flags are set or reset according to the result of the operation. The flags are affected by the arithmetic and logic operation. They are as follows:
·         Sign flag
After the execution of the arithmetic - logic operation if the bit D7 of the result is 1, the sign flag is set. This flag is used with signed numbers. If it is 1, it is a negative number and if it is 0, it is a positive number.
·         Zero flag
The zero flag is set if the ALU operation results in zero. This flag is modified by the result in the accumulator as well as in other registers.
·         Auxillary carry flag
In an arithmetic operation when a carry is generated by digit D3 and passed on to D4, the auxillary flag is set.
·         Parity flag
After arithmetic – logic operation, if the result has an even number of 1’s the flag is set. If it has odd number of 1’s it is reset.
·         Carry flag
If an arithmetic operation results in a carry, the carry flag is set. The carry flag also serves as a borrow flag for subtraction.

Timing and control unit
      This unit synchronizes all the microprocessor operation with a clock and generates the control signals necessary for communication between the microprocessor and peripherals. The control signals RD (read) and WR (write) indicate the availability of data on the data bus.

Instruction register and decoder
      The instruction register and decoder are part of the ALU. When an instruction is fetched from memory it is loaded in the instruction register. The decoder decodes the instruction and establishes the sequence of events to follow.

Register array
      The 8085 has six general purpose registers to store 8-bit data during program execution. These registers are identified as B, C, D, E, H and L. they can be combined as BC, DE and HL to perform 16-bit operation.

Accumulator
      Accumulator is an 8-bit register that is part of the ALU. This register is used to store 8-bit data and to perform arithmetic and logic operation. The result of an operation is stored in the accumulator.

Program counter
The program counter is a 16-bit register used to point to the memory address of the next instruction to be executed.

Stack pointer
It is a 16-bit register which points to the memory location in R/W memory, called the Stack.




Communication lines
8085 microprocessor performs data transfer operations using three communication lines called buses. They are address bus, data bus and control bus.
·         Address bus – it is a group of 16-bit lines generally identified as A0 – A15.  The address bus is unidirectional i.e., the bits flow in one direction from microprocessor to the peripheral devices. It is capable of addressing 216 memory locations.
·         Data bus – it is a group of 8 lines used for data flow and it is bidirectional. The data ranges from 00 – FF.
·         Control bus – it consist of various single lines that carry synchronizing signals. The microprocessor uses such signals for timing purpose.


 

2(A). 8 BIT DATA ADDITION


AIM:

             To add two 8 bit numbers stored at consecutive memory locations.

ALGORITHM:

1.      Initialize memory pointer to data location.
2.      Get the first number from memory in accumulator.
3.      Get the second number and add it to the accumulator.
4.      Store the answer at another memory location.


RESULT:

Thus the 8 bit numbers stored at 4500 &4501 are added and the result stored at 4502 & 4503.






PROGRAM:

ADDRESS
OPCODE
LABEL
MNEMONICS
OPERAND
COMMENT
4100

START
MVI
C, 00
Clear C reg.
4101         




4102


LXI
H, 4500
Initialize HL reg. to
4500
4103




4104




4105


MOV
A, M
Transfer first data to accumulator
4106


INX
H
Increment HL reg.  to point next memory    Location.
4107


ADD
M
Add first number to acc. Content.
4108


JNC
L1
Jump to location if result does not yield carry.
4109




410A




410B


INR
C
Increment C reg.
410C

L1
INX
H
Increment HL reg.  to point next memory Location.
410D


MOV
M, A
Transfer the result from acc. to memory.
410E


INX
H
Increment HL reg. to point next memory Location.
410F


MOV
M, C
Move carry to memory
4110


HLT

Stop the program


OBSERVATION:


INPUT
OUTPUT
4500

4502

4501

4503

                                                             



2(B). 8 BIT DATA SUBTRACTION



AIM:

             To Subtract two 8 bit numbers stored at consecutive memory locations.

ALGORITHM:

1.      Initialize memory pointer to data location.
2.      Get the first number from memory in accumulator.
3.      Get the second number and subtract from the accumulator.
4.      If the result yields a borrow, the content of the acc. is complemented and 01H is added to it (2’s complement). A register is cleared and the content of that reg. is incremented in case there is a borrow. If there is no borrow the content of the acc. is directly taken as the result.
5.      Store the answer at next memory location.


RESULT:

Thus the 8 bit numbers stored at 4500 &4501 are subtracted and the result stored at 4502 & 4503.





PROGRAM:

ADDRESS
OPCODE
LABEL
MNEMONICS
OPERAND
COMMENT
4100

START
MVI
C, 00
Clear C reg.
4101         




4102


LXI
H, 4500
Initialize HL reg. to
4500
4103




4104




4105


MOV
A, M
Transfer first data to accumulator
4106


INX
H
Increment HL reg. to point next mem. Location.
4107


SUB
M
Subtract first number from acc. Content.
4108


JNC
L1
Jump to location if result does not yield borrow.
4109




410A




410B


INR
C
Increment C reg.
410C


CMA

Complement the Acc. content
410D


ADI
01H
Add 01H to content of  acc.
410E




410F

L1
INX
H
Increment HL reg. to point next mem. Location.
4110


MOV
M, A
Transfer the result from acc. to memory.
4111


INX
H
Increment HL reg. to point next mem. Location.
4112


MOV
M, C
Move carry to mem.
4113


HLT

Stop the program

OBSERVATION:


INPUT
OUTPUT
4500

4502

4501

4503

 

3(A).  8 BIT DATA MULTIPLICATION


AIM:

             To multiply two 8 bit numbers stored at consecutive memory locations and store the result in memory.

ALGORITHM:

LOGIC: Multiplication can be done by repeated addition.

1.      Initialize memory pointer to data location.
2.      Move multiplicand to a register.
3.      Move the multiplier to another register.
4.      Clear the accumulator.
5.      Add multiplicand to accumulator
6.      Decrement multiplier
7.      Repeat step 5 till multiplier comes to zero.
8.      The result, which is in the accumulator, is stored in a memory location.

RESULT:

Thus the 8-bit multiplication was done in 8085mp using repeated addition method.



PROGRAM:

ADDRESS
OPCODE
LABEL
MNEMONICS
OPERAND
COMMENT
4100

START
LXI
H, 4500
Initialize HL reg. to
4500

Transfer first data to reg. B
4101




4102




4103


MOV
B, M
4104


INX
H
Increment HL reg.  to point next mem. Location.
4105


MVI
A, 00H
Clear the acc.

4106




4107


MVI
C, 00H
Clear C reg for carry


4108




4109

L1
ADD
M
Add multiplicand  multiplier times.
410A


JNC
NEXT
Jump to NEXT if there is no carry
410B




410C




410D


INR
C
Increment C reg
410E

NEXT
DCR
B
Decrement B reg
410F


JNZ
L1
Jump to L1 if B is not zero.
4110




4111




4112


INX
H
Increment HL reg. to point next mem. Location.
4113


MOV
M, A
Transfer the result from acc. to memory.
4114


INX
H
Increment HL reg. to point next mem. Location.
4115


MOV
M, C
Transfer the result from C reg. to memory.
4116


HLT

Stop the program


OBSERVATION:


INPUT
OUTPUT
4500

4502

4501

4503




3(B). 8 BIT DIVISION


AIM:

            To divide two 8-bit numbers and store the result in memory.

ALGORITHM:

LOGIC: Division is done using the method Repeated subtraction.
1.      Load Divisor and Dividend
2.      Subtract divisor from dividend
3.      Count the number of times of subtraction which equals the quotient
4.      Stop subtraction when the dividend is less than the divisor .The dividend now becomes the remainder. Otherwise go to step 2.
5.      stop the program execution.


RESULT:

            Thus an ALP was written for 8-bit division using repeated subtraction method and executed using 8085m p kits




PROGRAM:

ADDRESS
OPCODE
LABEL
MNEMONICS
OPERAND
COMMENTS
4100


MVI
B,00
Clear B reg for quotient
4101




4102


LXI
H,4500
Initialize HL reg. to
4500H
4103




4104




4105


MOV
A,M
Transfer dividend to acc.
4106


INX
H
Increment HL reg.  to point next mem. Location.
4107

LOOP
SUB
M
Subtract divisor from dividend
4108


INR
B
Increment B reg
4109


JNC
LOOP
Jump to LOOP  if result does not yield borrow
410A




410B




410C


ADD
M
Add divisor to acc.
410D


DCR
B
Decrement B reg
410E


INX
H
Increment HL reg. to point next mem. Location.
410F


MOV
M,A
Transfer the remainder from acc. to memory.
4110


INX
H
Increment HL reg. to point next mem. Location.
4111


MOV
M,B
Transfer the quotient from B reg. to memory.
4112


HLT

Stop the program


OBSERVATION:


S.NO
INPUT
OUTPUT
ADDRESS
DATA
ADDRESS
DATA
1
4500

4502

4501

4503

2
4500

4502


4501

4503






4(A).  16 BIT DATA ADDITION


AIM:

            To add two 16-bit numbers stored at consecutive memory locations.

ALGORITHM:

1.      Initialize memory pointer to data location.
2.      Get the first number from memory and store in Register pair.
3.      Get the second number in memory and add it to the Register pair.
4.      Store the sum & carry in separate memory locations.


RESULT:

Thus an ALP program for 16-bit addition was written and executed in 8085mp using special instructions.





PROGRAM:

ADDRESS
OPCODE
LABEL
MNEMONICS
OPERAND
COMMENT
8000

START
LHLD
8050H
Load the augend in DE pair through HL pair.
8001




8002




8003


XCHG

8004


LHLD
8052H
Load the addend in HL pair.
8005




8006




8007


MVI
A, 00H
Initialize reg. A for carry
8008




8009


DAD
D
Add the contents of HL
Pair with that of DE pair.
800A


JNC
LOOP
If there is no carry, go to the instruction labeled LOOP.
800B




800C




800D


INR
A
Otherwise increment  reg. A
800E

LOOP
SHLD
8054H
Store the content of HL Pair in 8054H(LSB of sum)
800F




8010




8011


STA
8056H
Store the carry in 8056H through Acc.
(MSB of sum).
8012




8013




8014


HLT

Stop the program.



OBSERVATION:


INPUT
OUTPUT
ADDRESS
DATA
ADDRESS
DATA
8050H

8054H

8051H

8055H

8052H

8056H

8053H


                                                             

 

4(B). 16 BIT DATA SUBTRACTION


AIM:

             To subtract two 16-bit numbers stored at consecutive memory locations.

ALGORITHM:

1.      Initialize memory pointer to data location.
2.      Get the subtrahend from memory and transfer it to register pair.
3.      Get the minuend from memory and store it in another register pair.
4.      Subtract subtrahend from minuend.
5.      Store the difference and borrow in different memory locations.

RESULT:

Thus an ALP program for subtracting two 16-bit numbers was written and executed.

   




PROGRAM:
ADDRESS
OPCODE
LABEL
MNEMO
NICS
OPER
AND
COMMENTS
8000

START
MVI
C, 00
Initialize C reg.
8001




8002


LHLD
8050H
Load the subtrahend in DE reg. Pair through HL reg. pair.
8003




8004




8005


XCHG

8006


LHLD
8052H
Load the minuend in HL reg. Pair.
8007




8008




8009


MOV
A, L
Move the content of reg. L to Acc.
800A


SUB
E
Subtract the content of  reg. E from that of acc.
800B


MOV
L, A
Move the content of Acc. to reg. L
800C


MOV
A, H
Move the content of reg. H to Acc.
800D


SBB
D
Subtract content of reg. D with that of Acc.
800E


MOV
H, A
Transfer content of acc. to reg. H
800F


SHLD
8054H
Store the content of HL pair in memory location 8504H.
8010




8011




8012


JNC
NEXT
If there is borrow, go to the instruction labeled NEXT.
8013




8014




8015


INR
C
Increment reg. C
8016

NEXT
MOV
A, C
Transfer the content of reg. C to Acc.
8017


STA
8056H
Store the content of acc. to the memory location 8506H
8018




8019




801A


HLT

Stop the program execution.

OBSERVATION:
INPUT
OUTPUT
ADDRESS
DATA
ADDRESS
DATA
8050H

8054H

8051H

8055H

8052H

8056H

8053H







 

5(A). 16 BIT MULTIPLICATION


AIM:

                To multiply two 16 bit numbers and store the result in memory.

ALGORITHM:

  1. Get the multiplier and multiplicand.
  2. Initialize a register to store partial product.
  3. Add multiplicand, multiplier times.
  4. Store the result in consecutive memory locations.

RESULT:

Thus the 16-bit multiplication was done in 8085mp using repeated addition method.





ADDRESS

OPCODE

LABEL

MNEMONICS

OPERAND

COMMENTS

8000         

 

START

LHLD

8050

Load the first No. in stack pointer through HL reg. pair

8001

 

 

 


8002

 

 

 

 

8003

 

 

SPHL

 

8004

 

 

LHLD

8052

Load the second No. in HL reg. pair

& Exchange with DE reg. pair.

8005

 

 

 

 

8006

 

 

 

 

8007

 

 

XCHG

 

8008

 

 

LXI

H, 0000H

 

 

Clear HL & DE reg. pairs.

8009

 

 

 

 

800A

 

 

 

 

800B

 

 

LXI

B, 0000H

800C

 

 

 

 

800D

 

 

 

 

800E

 

LOOP

DAD

SP

Add SP with HL pair.

800F

 

 

JNC

NEXT

If there is no carry, go to the instruction labeled NEXT

8010

 

 

 

 

8011

 

 

 

 

8012

 

 

INX

B

Increment BC reg. pair

8013

 

NEXT

DCX

D

Decrement DE reg. pair.

8014

 

 

MOV

A,E

Move the content of reg. E to Acc.

8015

 

 

ORA

D

OR Acc. with D reg.

8016

 

 

JNZ

LOOP

If there is no zero, go to instruction labeled LOOP

8017

 

 

 

 

8018

 

 

 

 

8019

 

 

SHLD

8054

Store the content of HL pair in memory locations 8054 & 8055.

801A

 

 

 

 

801B

 

 

 

 

801C

 

 

MOV

A, C

Move the content of reg. C to Acc.

801D

 

 

STA

8056

Store the content of Acc. in memory location 8056.

801E

 

 

 

 

801F

 

 

 

 

8020

 

 

MOV

A, B

Move the content of reg. B to Acc.

8021

 

 

STA

8057

Store the content of Acc. in memory location 8056.

8022

 

 

 

 

8023

 

 

 

 

8024

 

 

HLT

 

Stop  program execution

OBSERVATION:
INPUT
OUTPUT
ADDRESS
DATA
ADDRESS
DATA
8050

8054

8051

8055

8052

8056

8053

8057




5(B). 16- BIT DIVISION


AIM:

             To divide two 16-bit numbers and store the result in memory using 8085 mnemonics.

ALGORITHM:

  1. Get the dividend and divisor.
  2. Initialize the register for quotient.
  3. Repeatedly subtract divisor from dividend till dividend becomes less than divisor.
  4. Count the number of subtraction which equals the quotient.
  5. Store the result in memory.

RESULT:

Thus the 16-bit Division was done in 8085mp using repeated subtraction method.


 
PROGRAM:
ADDRESS
OPCODE
LABEL
MNEMONICS
OPERA
ND
COMMENTS
8000

START
LHLD
8052

Load the first No. in stack pointer through HL reg. pair

8001




8002




8003


XCHG

8004


LHLD
8050

Load the second No. in HL reg. pair

& Exchange with DE reg. pair.
8005




8006




8007


LXI
B, 0000H

 

Clear BC reg. pair.

8008




8009




800A

LOOP
MOV
A, L

Move the content of reg. L to Acc.

800B


SUB
E

Subtract reg. E from that of Acc.

800C


MOV
L, A

Move the content of Acc to  L.

800D


MOV
A, H

Move the content of reg. H Acc.

800E


SBB
D
Subtract  reg. D from that of Acc.
800F


MOV
H, A
Move the content of Acc to  H.
8010


INX
B
Increment reg.  Pair BC
8011


JNC
LOOP
If there is no carry, go to the location labeled LOOP.
8012




8013




8014


DCX
B
Decrement BC reg. pair.
8015


DAD
D
Add content of HL and DE reg. pairs.
8016


SHLD
8054
Store the content of HL pair in 8054 & 8055.
8017




8018




8019


MOV
A, C
Move the content of reg. C to Acc.
801A


STA
8056
Store the content of Acc. in memory 8056
801B




801C




801D


MOV
A, B
Move the content of reg. B to Acc.
801E


STA
8057
Store the content of Acc. in memory 8057.
801F




8020




8021


HLT

Stop the program execution.

OBSERVATION:
INPUT
OUTPUT
ADDRESS
DATA
ADDRESS
DATA
8050

8054

8051

8055

8052

8056

8053

8057
 








 





No comments:

Post a Comment