**Problem –** Write an assembly language code for calculating the nth power of a number using 8085 microprocessor.

**Example –**

Input : Base=>02H Exponent=>03H Output :08H

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

Load 02H(base) to register B and 03H(exponent) to register C -> set D register to 02H -> Add 02H B(ie 2) times -> D register now contains 04H -> Add 04H B(ie 2) times -> D register now contains 08H -> Output is 08H.

**Algorithm –**

- Load the base into register B and exponent into register C.
- To start multiplication set D to 01H.
- Jump to step 7.
- Decrements C.
- Jump to step 3 till value of C>0.
- Take memory pointer to next location and store result.
- Load E with contents of B and clear accumulator.
- Repeatedly add contents of D to accumulator E times.
- Store accumulator content to D.
- Go to step 4.

**Program –**

Address | Label | Mnemonic | Comment |
---|---|---|---|

2000H | Base | Data Byte for base | |

2001H | Exponent | Data Byte for exponent | |

2002H | Result | Result of factorial | |

2003H | LXI H, 2000H | Load data from memory | |

2006H | MOV B, M | Load base to B register | |

2007H | INX H | Increment memory | |

2008H | MOV C, M | Load exponent to C register | |

2009H | MVI D, 01H | Set D register to 1 | |

200BH | POWER_LOOP | CALL MULTIPLY | Subroutine call for multiplication |

200EH | DCR C | Decrement C | |

200FH | JNZ POWER_LOOP | Call power_loop till C becomes 0 | |

2012H | INX H | Increment memory | |

2013H | MOV M, D | Store result in memory | |

2014H | HLT | Halt | |

2100H | MULTIPLY | MOV E, B | Transfer contents of B to E |

2101H | MVI A, 00H | Clear accumulator to store result | |

2103H | MULTIPLYLOOP | ADD D | Add contents of D to A |

2104H | DCR E | Decrement E | |

2105H | JNZ MULTIPLYLOOP | Repeated addition | |

2108H | MOV D, A | Transfer contents of A to D | |

2109H | RET | Return from subroutine |

**Explanation –**

- Set register B with base and register C with exponent.
- Set register D with base by calling MULTIPLY subroutine one time.
- Decrement C and add D to itself B times by calling MULTIPLY subroutine.
- Repeat the above step till C reaches 0 and then exit the program.
- The result is obtained in D register which is stored in memory

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

## Recommended Posts:

- 8085 program to find the factorial of a number
- 8085 program to find square root of a number
- 8085 program to find 1's and 2's complement of 8-bit number
- 8085 program to find 1’s and 2’s complement of 16-bit number
- 8085 program to find sum of digits of 8 bit number
- 8085 program to find square of a 8 bit number
- 8085 program to find smallest number between two numbers
- 8085 program to find minimum value of digit in the 8 bit number
- 8085 program to convert an 8 bit number into Grey number
- 8085 program to count number of ones in the given 8-bit number
- 8085 program to convert an 8 bit BCD number into hexadecimal number
- 8085 program to find the element that appears once
- 8085 program to find maximum and minimum of 10 numbers
- 8085 program to find maximum of two 8 bit numbers
- 8085 program to find 2's complement of the contents of Flag Register
- 8085 program to find larger of two 8 bit numbers
- 8085 program to find the sum of a series
- 8085 program to find the sum of first n natural numbers
- 8085 program to find the sum of series of even numbers
- 8085 program to find the set bit of accumulator

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.