0% found this document useful (0 votes)
60 views22 pages

Microprocessor Addition and Subtraction Lab

The document describes an experiment to write programs for addition, subtraction, and multiplication of hexadecimal, decimal, and BCD numbers using an 8085 microprocessor. It provides the objective, required equipment, descriptions of algorithms and programs for adding and subtracting hexadecimal and decimal numbers, and adding and subtracting BCD numbers. It also provides pre-experiment and post-experiment questions related to the topics covered.

Uploaded by

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

Microprocessor Addition and Subtraction Lab

The document describes an experiment to write programs for addition, subtraction, and multiplication of hexadecimal, decimal, and BCD numbers using an 8085 microprocessor. It provides the objective, required equipment, descriptions of algorithms and programs for adding and subtracting hexadecimal and decimal numbers, and adding and subtracting BCD numbers. It also provides pre-experiment and post-experiment questions related to the topics covered.

Uploaded by

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

EXPERIMENT NO.

– 1(a)

OBJECTIVE:
Write a program to add two hexadecimal & decimal numbers.

APPARATUS REQUIRED: -

Sr. Name of Specification/range/rating/versi Quantity


no. equipments/components/software on
1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

Hexadecimal Addition: The program takes the content of 2009, adds it to 200B & stores the result
back at 200C.
Steps: 1. Initialize HL Reg. pair with address where the first number is lying.
2. Store the number in accumulator.
3. Get the second number.
4. Add the two numbers and store the result in 200B.
5. Go back to Monitor
Let: (2009 H) = 80 H
(200B H) = 15 H
Result = 80 H + 15 H = 95 H
(2009 H) A
A B
(200B H) A
A + B A
A (200C H)

FLOWCHART : -
Start

Get the 1st no.

Get the 2nd no.

Add two no.

Store the result

End

1
PROGRAM:-

LXI H, 2009 ; Point 1st no.


MOV A, M ; Load the acc.
INX H ; Adv Pointer
ADD M ; ADD 2nd NO.
INX H ; Adv Pointer
MOV M, A ; Store Result
RST 5

Decimal Addition:

Steps: 1. Initialize HL Reg. pair with address where the first number is lying.
2. Store the number in accumulator.
3. Get the second number.
4. Add the two numbers and store the result in 200B.
5. Go back to Monitor

FLOWCHART:-
Start

Get the 1st no.

Get the 2nd no.

Add two no.

Adjust the decimal

Store the result

End

2
PROGRAM:-

LXI H, 2009 ; Point 1st no.


MOV A, M ; Load the acc.
INX H ; Adv Pointer
ADD M ; ADD 2nd NO.
DAA ; Adjust the decimal
INX H ; Adv Pointer
MOV M, A ; Store Result
RST 5

REULTS:-
Thus the numbers at 2009H and at memory are added.

CONCLUSION:-
Thus the program to add two 8-bit numbers was executed.

PRECAUTION:-

3
EXPERIMENT NO. – 1 (b)
OBJECTIVE:- Write a program to subtract two hexadecimal & decimal numbers

APPARATUS REQUIRED: -

Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity


1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

Hexadecimal Subtraction : The program takes the content of 2009, subtracts it to 200B & stores
the result back at 200C.

Steps:-

1. Initialize HL Reg. pair with address where the first number is lying.
2. Store the number in accumulator.
3. Get the second number.
4. Subtract second no from acc and store the result in 200B.
5. Go back to Monitor

FLOWCHART:-

Start

Get the 1st no.


Get the 2nd no.

Sub. second no.

Store the result

End

PROGRAM:-

LXI H, 2009 ; Point 1st no.


MOV A, M ; Load the acc.
INX H ; Adv Pointer
SUB M ; Subtract IIND
NO. INX H ; Adv Pointer
MOV M, A ; Store Result
RST 5

4
Decimal Subtraction :

Steps:-

1. Initialize HL Reg. pair with address where the first number is lying.
2. Store the number in accumulator.
3. Get the second number.
4. Subtract second no from acc and store the result in 200B.
5. Adjust the decimal
6. Go back to Monitor

FLOWCHART:-

Start

Get the 1st no.

Get the 2nd no.

Sub two no.

Adjust the decimal

Store the result

End

PROGRAM:-

LXI H, 2009 ; Point 1st no.


MOV A, M ; Load the acc.
INX H ; Adv Pointer
SUB M ; Subtract IIND
NO. DAA ; Adjust the decimal
INX H ; Adv Pointer
MOV M, A ; Store Result
RST 5
REULTS:-
Numbers at 2009H and in HL pairs (Memory) are subtracted

CONCLUSION:-
Thus the subtraction operation is taken out using assembly language.

5
PRECAUTION:-

PRE EXPERIMENT QUESTION BANK:-

Study how to operate the microprocessor in single stepping. It is very useful in debugging.
Identify the clock crystal and record its frequency. Calculate the time for opcode fetch.
Identify 8255 programmable peripheral enter face. Find out the address of parts from manual.
Identify the ROM & RAM and show in the memory map.

POST EXPERIMENT QUESTION BANK:-

Write a small program to enter a data to accumulator and move it to all registers.
Find out how to read the contents of registers and flags. Read the content of PC, SP.
Why DAA instruction is to be written just after ADD instruction.
In above program why MOV A,M instruction is used if direct instruction LDA, address is available.

6
EXPERIMENT NO. –0 2
OBJECTIVE:- Write a program using 8085 Microprocessor for addition and subtraction of two BCD
numbers.

APPARATUS REQUIRED: -

Sr. Name of Specification/range/rating/versi Quantity


no. equipments/components/software on
1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

Steps: 1. Initialize HL Reg. pair with address where the first number is lying.
2. Store the number in accumulator.
3. Get the second number.
4. Add the two numbers and store the result in 200B.
5. Go back to Monitor

FLOWCHART:-

Start

Get the 1st no.

Get the 2nd no.

Add two no.

Adjust the decimal

Store the result

End

7
Steps:-

7. Initialize HL Reg. pair with address where the first number is lying.
8. Store the number in accumulator.
9. Get the second number.
10. Subtract second no from acc and store the result in 200B.
11. Adjust the decimal
12. Go back to Monitor

FLOWCHART:-

Start

Get the 1st no.

Get the 2nd no.

Sub two no.

Adjust the decimal

Store the result

End

PROGRAM:-

LXI H, 2009 ; Point 1st no.


MOV A, M ; Load the acc.
INX H ; Adv Pointer
SUB M ; Subtract IIND NO.
DAA ; Adjust the decimal
INX H ; Adv Pointer
MOV M, A ; Store Result
RST 5

REULTS:-
The BCD numbers at 2009H and memory are added or substracted.

CONCLUSION:-
Thus the substracttion operation is taken out using assembly language.

8
PRE EXPERIMENT QUESTION BANK:-

1. Explain the following instructions with addressing modes & no of


byte. (a). LHLD 8050
(b). XTHL
(c). DADH.
2. What is the necessity to have two status lines S1 & S0 in 8085 ?

POST EXPERIMENT QUESTION BANK:-

3. Write a program to exchange the contents of memory location 1000H and 2000H.
4. Why AD0 – AD7 lines are multiplexed ?
5. Give the difference between machine language, assembly language and high level language.

9
EXPRIMENT NO. – 3 (a)
OBJECTIVE: - Write a program to perform multiplication of two 8 bit numbers using bit addition
method
APPARATUS REQUIRED: -
Sr. no. Name of equipments/ components/ software Specification/range/rating/ Quantity
version
1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)
DESCRIPTION/ALGORITHM:-
1) Start the program by loading HL register pair with address of memory location.
2) Move the data to a register (B register).
3) Get the second data and load into Accumulator.
4) Add the two register contents.
5) Check for carry.
6) Increment the value of carry.
7) Check whether repeated addition is over and store the value of product and carry in memory location.
FLOWCHART:
START

Initialize register A & D reg. to zero

Get 1st no.

Get 2nd no.

Add 1st no. to content of A reg.

Is Carry?

Yes
Increment D register N
No

Decrement 2nd no.

Is zero?

If Yes

Store the result

15 END
PROGRAM:

MVI D, 00 ; Initialize register D to 00


MVI A, 00 ; Initialize Accumulator content to 00
LXI H, 4150 ; HL Points 4150
MOV B, M ; Get the first number in B - register
INX H ; HL Points 4151
MOV C, M ; Get the second number in C- reg.
LOOP : ADD B ; Add content of A - reg to register B.
JNC NEXT ; Jump on no carry to NEXT.
INR D ; Increment content of register D
NEXT : DCR C ; Decrement content of register C.
JNZ LOOP ; Jump on no zero to address
STA 4152 ; Store the result in Memory
MOV A, D ; Get the carry in Accumulator
STA 4153 ; Store the MSB of result in Memory
HLT ; Terminate the program.

REULTS:-
Input: FF (4150)
FF (4151)
Output: 01 (4152)
FE (4153)

CONCLUSION:-
Thus the multiplication process is taken out using assembly language for 8085 microprocessor

16
EXPRIMENT NO. – 3 (b)

OBJECTIVE: - Write a program to perform multiplication of two 8 bit numbers using bit rotation method

APPARATUS REQUIRED: -

Sr. no. Name of Specification/range/rating/versi Quantity


equipments/components/software on
1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

1) Start the program by loading HL register pair with address of memory location.
2) Move the data to a register (E register).
3) Get the second data and load into Accumulator.
4) Add the two register contents.
5) Check for carry.
6) Increment the value of carry.
7) Check whether repeated addition is over and store the value of product and carry in memory location.
8) Terminate the program.

EXAMPLE :

Steps Product Multiplier Comments

B7 B6 B5 B4 B3 B2 B1 B0 CY B3 B2 B1 B0
0 0 0 0 0 0 0 0 0 0 1 0 1 Initial Stage
Step 1 0 0 0 0 0 0 0 0 0 1 0 1 0 Shift left by 1
0 0 0 0 0 0 0 0 0 1 0 1 0 Don’t add since CY= 0
Step 2 0 0 0 0 0 0 0 0 1 0 1 0 0 Shift
0 0 0 0 1 1 0 0 1 0 1 0 0 Add multiplicand;CY=1
Step 3 0 0 0 1 1 0 0 0 0 1 0 0 0 Shift left by 1
0 0 0 1 1 0 0 0 0 1 0 0 0 Don’t add since CY= 0
Step 4 0 0 1 1 0 0 0 0 1 0 0 0 0 Add multiplicand;CY=1

PROGRAM:

LXI H, 2200 H ; Initialize the memory pointer


MOV E , M ; Get multiplicand
MVI D, 00 H ; Extend to 16 bits
INX H ; Increment memory pointer
MOV A , M ; Get Multiplier
LXI H , 0000 H ; Product = 0
MVI B, 08 H ; Initialize counter with count 8
LOOP: DAD H ; Product = product X 2
17
RAL
JNC XYZ ; Is carry from multiplier 1?
DAD D ; Yes, product = product + multiplicand
XYZ: DCR B ; Is counter = 0
JNZ LOOP ; No, repeat
SHLD 2300 H ; Store the result
HLT

REULTS:-
Multiplication has been carried out between the data of 2200H and 2201 H.

CONCLUSION:-
Thus the multiplication process for 8 bit binary numbers is taken out in 8085 microprocessor

PRE EXPERIMENT QUESTION BANK:-

1. Define the following terms.


(a) operand (b) opcode
2. What is meant by addressing modes
3. [Link] the addressing modes of the following instructions.
(a) ADI B7H
(b) SUB B
(c) DCX D
(d) RRC
The contents of register (B) and accumulator (A) of 8085 microprocessor are 49H & 39H
respectively. What are the contents of A and the status of carry flag (CY) and sign flag (S) after
exceeding SUB B instructions.
Calculate the time required to execute the following two instructions if the system clock
frequency is 750KHZ.
MOV C, E 4T states
JMP, 2050H 10T states.

18
EXPRIMENT NO. – 4 (a)

OBJECTIVE: - Write a program to perform division of two 8 bit numbers using Repeated Subtraction
method.

APPARATUS REQUIRED: -
Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity
1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

1) Start the program by loading HL register pair with address of memory location.
2) Move the data to a register (B register).
3) Get the second data and load into Accumulator.
4) Compare the two numbers to check for carry.
5) Subtract the two numbers.
6) Increment the value of carry.
7) Check whether repeated subtraction is over and store the value of product
and Carry in memory location.
8) Terminate the program.

PROGRAM:

LXI H, 4150
MOV B , M ; Get the dividend in B – reg.
MVI C, 00 ; Clear C – reg for qoutient
INX H ;
MOV A , M ; Get the divisor in A – reg.
NEXT: CMP B ; Compare A - reg with register B.
JC LOOP ; Jump on carry to LOOP
SUB B ; Subtract A – reg from B- reg.
INR C ; Increment content of register C.
JMP NEXT ; Jump to NEXT
LOOP: STA 4152 ; Store the remainder in Memory
MOV A, C ;
STA 4153 ; Store the quotient in memory
HLT ; Terminate the program.

RESULTS:

Input: FF (4150)
FF (4251)
Output: 01 (4152)-----Remainder
FE (4153)-----Quotient

19
EXPERIMENT NO.- 4 (b)

OBJECTIVE:- Write a program to perform division of two 8 bit numbers using bit rotation method.

APPARATUS REQUIRED: -

Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity


1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

PROGRAM:

MVI E, 00 H ; Quotient = 0
LHLD 2200 H ; Get Dividend
LDA 2300 H ; Get Divisor
MOV B , A ; Store Divisor
MVI C , 08 H ; Count = 08
NEXT : DAD H ; Dividend = Dividend X 2
MOV A , E
RLC
MOV E , A ; Quotient = X 2
MOV A , H
SUB B ; Is MSB of dividend > divisor
JC SKIP ; No go to next step
MOV H , A ; Yes subtract divisor
INR E ; Quotient = Quotient + 1
SKIP : DCR C ; Count = count – 1
JNZ NEXT ; Is count = 0 repeat
MOV A , E
STA 2401 H ; Store Quotient
MOV A , H
STA 2401 H ; Store Remainder
HLT ; End of program

REULTS:-
Number at 220H is divided from the number at 2300H

CONCLUSION:-
Thus the division process is taken out in 8085 microprocessor

20
PRE EXPERIMENT QUESTION BANK:-

1. If A=47 H, B=98H and the instruction ADD B is executed give the status of flag register after
execution.
2. List out the instructions that clean the accumulator.
3. Explain any two stack related instructions.
4. Compare the action of microprocessor for the following pair of instructions.
(a) NOP & HLT (b) RLC & RAL

21
EXPERIMENT NO.- 5

OBJECTIVE:- Finding the largest and smallest number from an array.

APPARATUS REQUIRED: -

Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity


1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

Write a program to find the largest number in a given array of 16 elements. The array is stored in
memory from 9200H onwards. Store the result at the end of the array.

FLOWCHART:-

22
PROCEDURE:-

To find largest of given no. of a given string we compare all given no. one by one. Suppose given no. is
2, 4, 3, 1, 0 1st we compare 2 & 4 (2 is in register A & 4 is in Register B).
A < B so put B into (A) & Compare with next number i.e. 3 Here A > B so directly compare 4 with 1
then 0.

RESULT AND INFERENCE:-


The largest number from the array of 16 numbers from memory location 9200H is found out and stored
at 9210H

PRECAUTION:- Take memory locations according model of kit.

QUESTIONS:-

1. The following instructions have be executed by an 8085 microprocessor.

ADDRESS (HEX) Instruction

6010H LXI H, 8A79H


6013H MOVA, L
6015H ADDH

2. Suppose HL=ABCD, stack painter = 1234, what happens after SPHL is executed.
3. Explain any instructions in which 8085 uses the registers W & Z.
4. Write a segment of program to exchange of BC register pair with DE register
pair without using MOV instructions.
5. Write two instructions which can be used to initialize stack pointer at FFFFH.

23
EXPERIMENT NO.- 6

AIM:- Finding the smallest number from an array.


Write a program to find smallest number from an array of 16 elements the array is stored in
memory from 9200H onwards. Store the result at memory location 9210H.

REQUIREMENT:- 8085 microprocessor programming kit, instruction coding sheet.

THEORY:- Same as largest no. we compare two number one by one but comparison process is
reverse.

PROCEDURE:-

RESULTS:
Smallest number has been found out from a 16 bit array starting from 9200H and is stored at 9210H.

CONCLUSION:
Thus the smallest number has been found out from the array in assembly language for 8085
microprocessor

24
EXPERIMENT NO.- 7

OBJECTIVE:- Interfacing a program to initiate 8251 and to check transmission and reception of
character

APPARATUS REQUIRED: -

Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity


1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)

DESCRIPTION/ALGORITHM:-

Steps:
1. Intitialize timer IC
2. Move the mode command word to A
3. Output it to port address C2
4. Moce the command instruction word to A reg.
5. Output it to port address C2
6. Move the data to be transferred to A
7. Output it to port address C0
8. Reset the system
9. Get data from input port C0
10. Store the value in memory
11. Reset the system

PROGRAM:

MVI A,36H
Out CEH
MVI A,0AH
Out C8H
LXI H,4200H
MVI A,4EH
Out C2H
MVI A, 37H
Out C2H
MVI A, 42H
Out C0H
RST 1
ORG 4200H
In C0H
STA 4500H
RST 1

RESULT
Output at 4500=1

CONCLUSION
Thus the 8251 was initiated and the transmission and reception character was done successfully.

25
EXPERIMENT NO.- 8

OBJECTIVE:- To interface Programmable Interval timer to 8085 and verify the operation of 8253 in
six different modes

APPARATUS REQUIRED: -

Sr. no. Name of equipments/components/software Specification/range/rating/version Quantity


1 8085 Microprocessor programming kit, SCIENTECH-8085 1
instruction coding sheet.
2. Power supply A.C (230V Mains)
3. CRO 20MHz 1

DESCRIPTION/ALGORITHM:-

MODE 0- Interrupt On Terminal Count:

At first let us see the channel in mode0. Connect the CLK0 to the debounce circuit and execute the
following program.

Program:

MVI A, 30H
OUT CEH
MVI A, 05H
OUT C8H
MVI A, 00H
OUT C8H
HLT

MODE 1- Programmable One Shot

After loading the count, the output will remain low following the rising edge of the gate [Link]
output will go high on the terminal count.
The program initializes channel 0 of 8253 in Mode 1 and also initializes triggering of gate.

Program:

MVI A, 32H
OUT CEH
MVI A, 05H
OUT C8H
MVI A,00H
OUT C8H
OUT DOH
HLT

MODE 3-Square Generation


In this the output will remain high until one half of the count and goes low for the order half provided
the count is an even number. This mode is used to generate the baud rate of 8251.

26
Program:

MVI A, 36H
OUT CEH
MVI A,
0AH OUT
C8H MVI A,
00H OUT
C8H HLT

RESULT:
Thus the 8253 PIT was interfaced to 8085 and the operations for mode 0, 1 and 3 were verified.

27

Common questions

Powered by AI

Initializing the HL register pair sets the starting memory address where the data is located. This allows programs to access data directly by referencing the memory location stored in the HL register, facilitating data handling by enabling operations to be performed on data stored in specific addresses. It serves as a pointer to streamline memory access.

For decimal subtraction, initialize the HL register with the address where the first number is located, move it to the accumulator, increment HL to point to the second number, perform the SUB M operation to subtract, use DAA to adjust for decimal value corrections, and store the result in memory at 200B. The DAA instruction is crucial after the ADD operation as it corrects the binary result to a valid BCD format.

The 8253 can be used by setting its control word register to configure the mode of operation such as Mode 0, 1, or 3. Connect the appropriate clock signal to the selected channel, set or load the initial count value that the timer will use, and appropriately wire its output to leverage the count for frequency division or pulse generation. Ensure correct mode configuration, as each mode provides specific features such as interrupt on terminal count or one-shot timing.

Considerations include ensuring proper initialization of control words specific to the 8255 setup, using correct timing protocols for data transfer, configuring data direction registers for the intended I/O mode, handling interrupts (if applicable), and correctly addressing the I/O ports specific to the 8255 communication. Proper synchronization and electrical characteristics should also be considered to ensure reliable operations.

Efficient strategies include using combined stack operations where data is pushed from registers to stack and subsequently popped back into different registers, or leveraging accumulator as an intermediary for temporary storage, using logical and arithmetic operations to transfer values indirectly without MOV, ensuring minimal register pollution and efficient use of stack pointer operations for the exchange.

The program requires the following steps: Initialize the HL register pair with the address where the first number is stored (2009H); move the number from memory to the accumulator using MOV A, M; increment the HL pair to point to the second number; add the second number using ADD M; store the result back to memory at 200C using MOV M, A; and finally return to the monitor using RST 5.

To convert hexadecimal subtraction to find the smallest number, initialize HL with starting array address, use MOV A, M to send first number to accumulator, loop through array comparing it with each element. Use SUB M to check if current array element is smaller than the accumulator value, store the smaller one back in accumulator if it is using MOV A, M. Continue looping through all elements, finally storing the smallest found number after the loop.

The original BCD addition program needs to be modified to repeatedly add a number the required times. Start by moving an initial value of zero to the destination, load the first number into the accumulator, and use a loop to add it to the sum stored in the accumulator the number of times equivalent to the second operand. After each addition, decrement a counter initialized with the second operand until zero, checking for carry after each addition.

Critical steps include verifying correct initialization and data loading to registers and memory, using single-stepping to execute programs one instruction at a time to monitor register and flag changes, setting breakpoints to analyze program flows, employing tracing features for larger code blocks, and correcting logic or syntax errors through iteration. Understanding the program counter's behavior and monitoring relevant data and status flags are also crucial for debugging effectively.

MOV A, M is preferred for its simplicity and efficiency in memory-to-register transfer in specific address calculations without needing a direct address, unlike LDA which requires specifying a direct memory address. This can be more efficient in loops or when the memory being accessed changes dynamically.

You might also like