# 8086 program to find the square root of a perfect square root number | Set-2

Prerequisite – 8086 program to find Square Root of a number**Problem –** Write a program to find the square root of a perfect number where starting address for code is **2000** and number is stored at **3000** memory address and store result into **3002** memory address.

**Example –**

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.

**Algorithm –**

- Move 0000 to register CX immediately
- Move value of memory 3000 into register BX
- Move CX into AX
- Multiply value of accumulator with CX
- Compare AX with BX
- Jump if zero to step
- Increase CX register by 1
- Jump if no zero to step 3
- Move content of register CX into memory 3002
- Stop

**Program –**

Memory | Mnemonics | Operands | Comment |
---|---|---|---|

2000 | MOV | CX, 0000 | [CX] <- 0000 |

2003 | MOV | BX, [3000] | [BX] <- [3000] |

2007 | MOV | AX, CX | [AX] <- [CX] |

2009 | MUL | CX | [AX] <- [AX] * [CX] |

200B | CMP | AX, BX | [AX] – [BX] |

200D | JZ | 2015 | Jump if zero |

2010 | INC | CX | [CX] <- [CX] + 1 |

2012 | JNZ | 2007 | Jump if not zero |

2015 | MOV | [3002], CX | [3002] <- CX |

2019 | HLT | Stop |

**Explanation –** Registers AX, BX, CX, are used for general purpose.

**MOV**is used to transfer the data**INC**is used to increase given register by 1**JNZ**is used to jump to the given step if their is no zero**JZ**is used to jump to the given step if their is zero**MUL**is used to multiply value of AX with the given register**CMP**is used to compare the value of two registers**HLT**is used to halt the program