**Problem –** Write an assembly language program for calculating the sum of first n natural numbers using 8085 microprocessor.

**Example –**

Input : 04H Output : 0AH as 01+02+03+04 = 10 in decimal => 0AH

The formula for calculating the sum of first n natural numbers is .

**Algorithm –**

- With n as the input, increment it to obtain n+1.
- Multiply n with n+1.
- Divide the product obtained by 2.

In 8085 microprocessor, no direct instruction exists to multiply two numbers, so multiplication is done by repeated addition as 4×5 is equivalent to 4+4+4+4+4 (i.e., 5 times).

Input: 04H

Add 04H 5 times

Product: 14H(20_{10})

Similarly, in 8085 microprocessor, no direct instruction exists to divide two numbers, so division is done by repeated subtraction.

Input: 14H

Keep subtracting 2 from the input till it reduces to 0.

Since subtraction has to be performed 10_{10} times before 14H becomes 0, the quotient is 10_{10} => 0AH.

**Steps –**

- Load the data from the memory location (201BH, arbitrary choice) into the accumulator
- Move this data into B
- Increment the value in the accumulator by one and move it to the register C
- Initialise the accumulator with 0
- Multiplcation: Keep adding B to accumulator. The number of times B has to be added is equal to the value of C
- Initialise B with 00H. B will store the quotient of the division
- Initialise C with 02H. This is the divisor for the division
- Division: Keep subtracting C from A till A becomes 0. For each subtraction, increment B by one
- The final answer is in B. Move it to A. Then store the value of A in 201CH (arbitrary choice again)

201CH contains the final answer.

ADDRESS | LABEL | MNEMONIC |
---|---|---|

2000H | LDA 201BH | |

2001H | ||

2002H | ||

2003H | MOV B, A | |

2004H | INR A | |

2005H | MOV C, A | |

2006H | MVI A, 00H | |

2007H | ||

2008H | LOOP1 | ADD B |

2009H | DCR C | |

200AH | JNZ LOOP1 | |

200BH | ||

200CH | ||

200DH | MVI C, 02H | |

200EH | ||

200FH | MVI B, 00H | |

2010H | ||

2011H | LOOP2 | INR B |

2012H | SUB C | |

2013H | JNZ LOOP2 | |

2014H | ||

2015H | ||

2016H | MOV A, B | |

2017H | STA 201CH | |

2018H | ||

2019H | ||

201AH | HLT |

Store the value of n in 201BH. The sum can be found at 201CH.

## leave a comment

## 0 Comments