# 8085 program to add 2-BCD numbers

Last Updated : 11 Apr, 2023

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 â€“

1. Load 00H in a register (for carry)
2. Load content from memory into register pair
3. Move content from L register to accumulator
4. Add content of H register with accumulator
5. Add 06H if sum is greater than 9 or Auxiliary Carry is not zero
6. If carry flag is not equal to 1, go to step 8
7. Increment carry register by 1
8. Store content of accumulator into memory
9. Move content from carry register to accumulator
10. Store content of accumulator into memory
11. Stop

Program â€“

Explanation â€“ Registers A, C, H, L are used for general purpose

1. MVI is used to move data immediately into any of registers (2 Byte)
2. LHLD is used to load register pair direct using 16-bit address (3 Byte instruction)
3. MOV is used to transfer the data from memory to accumulator (1 Byte)
4. ADD is used to add accumulator with any of register (1 Byte instruction)
5. STA is used to store data from accumulator into memory address (3 Byte instruction)
6. DAA is used to check if sum > 9 or AC = 1 add 06 (1 Byte instruction)
7. JNC is used jump if no carry to given memory location (3 Byte instruction)
8. INR is used to increase given register by 1 (1 Byte instruction)
9. HLT is used to halt the program

• 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.

• 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.

Previous
Next