Tutorialspoint.dev

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[2050]
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[3050]
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

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter