# 8085 program to find square root of a number

Problem – Write an assembly language program in 8085 microprocessor to find square root of a number.

Example – Assumptions –
Number, whose square root we need to find is stored at memory location 2050 and store the final result in memory location 3050.

Algorithm –

1. Assign 01 to register D and E
2. Load the value, stored at memory location 2050 in accumulator A
3. Subtract value stored at accumulator A from register D
4. Check if accumulator holds 0, if true then jump to step 8
5. Increment value of register D by 2
6. Increment value of register E by 1
7. Jump to step 3
8. Move value stored at register E in A
9. Store the value of A in memory location 3050

Program –

MEMORY ADDRESS MNEMONICS COMMENT
2000 MVI D, 01 D <- 01
2002 MVI E, 01 E <- 01
2004 LDA 2050 A <- M
2007 SUB D A <- A – D
2008 JZ 2011 Jump if ZF = 0 to memory location 2011
200B INC D D <- D + 1
200C INC D D <- D + 1
200D INC E E <- E + 1
200E JMP 2007 Jump to memory location 2007
2011 MOV A, E A <- E
2012 STA 3050 A -> M
2015 HLT END

Explanation – Registers used A, D, E:

1. MVI D, 01 – initialize register D with 01
2. MVI E, 01 – initialize register E with 01
3. LDA 2050 – loads the content of memory location 2050 in accumulator A
4. SUB D – subtract value of D from A
5. JZ 2011 – make jump to memory location 2011 if zero flag is set
6. INR D – increments value of register D by 1. Since it is used two times, therefore value of D is incremented by 2
7. INR E – increments value of register E by 1
8. JMP 2007 – make jump to memory location 2007
9. MOV A, E – moves the value of register E in accumulator A
10. STA 3050 – stores value of A in 3050
11. HLT – stops executing the program and halts any further execution

This article is attributed to GeeksforGeeks.org

code

load comments