8085 program to add 2-BCD numbers
Problem – Write a program to add 2-BCD numbers where starting address is 2000 and the numbers is stored at 2500 and 2501 memory addresses and store sum into 2502 and carry into 2503 memory address. Example – Algorithm –
- Load 00H in a register (for carry)
- Load content from memory into register pair
- Move content from L register to accumulator
- Add content of H register with accumulator
- Add 06H if sum is greater than 9 or Auxiliary Carry is not zero
- If carry flag is not equal to 1, go to step 8
- Increment carry register by 1
- Store content of accumulator into memory
- Move content from carry register to accumulator
- Store content of accumulator into memory
- Stop
Program –
Memory |
Mnemonics |
Operands |
Comment |
2000 |
MVI |
C, 00H |
[C] <- 00H, carry |
2002 |
LHLD |
[2500] |
[H-L] <- [2500] |
2005 |
MOV |
A, L |
[A] <- [L] |
2006 |
ADD |
H |
[A] <- [A] + [H] |
2007 |
DAA |
|
Add 06 if sum > 9 or AC = 1 |
2008 |
JNC |
200C |
Jump if no carry |
200B |
INR |
C |
[C] <- [C] + 1 |
200C |
STA |
[2502] |
[A] -> [2502], sum |
200F |
MOV |
A, C |
[A] <- [C] |
2010 |
STA |
[2503] |
[A] -> [2503], carry |
2013 |
HLT |
|
Stop |
Explanation – Registers A, C, H, L are used for general purpose
- MVI is used to move data immediately into any of registers (2 Byte)
- LHLD is used to load register pair direct using 16-bit address (3 Byte instruction)
- MOV is used to transfer the data from memory to accumulator (1 Byte)
- ADD is used to add accumulator with any of register (1 Byte instruction)
- STA is used to store data from accumulator into memory address (3 Byte instruction)
- DAA is used to check if sum > 9 or AC = 1 add 06 (1 Byte instruction)
- JNC is used jump if no carry to given memory location (3 Byte instruction)
- INR is used to increase given register by 1 (1 Byte instruction)
- HLT is used to halt the program
Advantages:
- The 8085 program is a simple and efficient way to add two BCD numbers using a microprocessor.
- The program uses only a few instructions and requires minimal memory space, making it easy to implement in a microcontroller.
- The program produces accurate results since it adjusts the accumulator to BCD format using the DAA (decimal adjust accumulator) instruction.
- The program can be easily modified to add larger BCD numbers by adding more instructions to handle carry.
Disadvantages:
- The program is specific to the 8085 microprocessor and cannot be used directly on other microprocessors.
- The program assumes that the BCD numbers are stored in consecutive memory locations, which may not always be the case in real-world applications.
- The program does not handle overflow or underflow conditions, which may occur if the sum of two BCD numbers exceeds the maximum value that can be represented in BCD format.
- The program does not provide any error checking or reporting mechanism, which may make it difficult to identify errors or faults in the program.
Last Updated :
11 Apr, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...