Square Root in 8085 Assembly

Square Root in 8085 Assembly

Published by Arun Isaac on

Tags: 8085, assembly

An 8085 assembly program to compute the square root of an integer. The algorithm is based on the fact that the sum of the first n odd natural numbers is equal to the square of n

I was asked to write 8085 assembly to calculate the square root of a given number in my microprocessors and microcontrollers laboratory exam. Interestingly, I had been thinking of nothing but square root algorithms the entire day and mysteriously enough, I got just what I was thinking about. Some resonance in the universe, I guess! I pulled off a simple iterative search algorithm in the exam, but later got this much more ingenious technique from one of my classmates.

This algorithm is based on the fact that the sum of the first n odd numbers is n^2. So, we keep adding odd numbers together, and thus consequently producing 1^2, 2^2, 3^2, 4^2, etc. Then, we compare our produced squares with the given number and if they match or are reasonably close, we may conclude that we have found the square root.

main:           LXI B, 0019h    ;given 16 bit number
                LXI D, 0000h    ;n
                LXI H, 0000h    ;sum of first n odd numbers

loop:           DAD D
                DAD D
                INX H
                INX D
                CALL compare16bit
                JM loop
                MOV A, E
                STA 4300h
                HLT

compare16bit:   MOV A, H
                CMP B
                RNZ
                MOV A, L
                CMP C
                RET