Square Root
Instructions
Write a program in RISCV assembly language that computes the approximated square root of integers.
To perform read and write of data from/to the terminal, you must use the read and write syscalls (similarly to exercise 4.1, but now in assembly language)
read syscall example:
li a0, 0 # file descriptor = 0 (stdin)
la a1, input_address # buffer to write the data
li a2, 1 # size (reads only 1 byte)
li a7, 63 # syscall read (63)
ecall
input_address: .skip 0x10 # buffer
write syscall example:
li a0, 1 # file descriptor = 1 (stdout)
la a1, string # buffer
li a2, 19 # size
li a7, 64 # syscall write (64)
ecall
string: .asciz "Hello! It works!!!\n"
Input
 Four 4digit decimal numbers separated by spaces (' '), followed by a newline character ('\n'). The whole input takes up 20 bytes.
 String Format  "DDDD DDDD DDDD DDDD\n"
 D: a decimal digit, (09)
Output
For each 4digit number read, you must compute its approximate square root and write its value to STDOUT using 4digits and each square root must be separated by a space (' ') and the last one is followed by a newline character ('\n'), so the output will also take up 20 bytes.
 String Format  "DDDD DDDD DDDD DDDD\n"
 D: a decimal digit, (09)
Examples
Test Case  Input  Output 

1  0400 5337 2240 9166  0020 0073 0047 0095 
Notes and Tips

The usage of Babylonian method with 10 iterations is recommended. Considering that we want to compute the square root of a number y, the basic idea of this method is:

Compute an initial guess for the square root: $$ k=\frac{y}{2} $$

Approximate your estimative, k, to the real value of the square root by applying the following equation:
$$ k'=\frac{k+\frac{y}{k}}{2} $$

Each time the above equation is applied is considered "one iteration". For this exercise, use 10 iterations.


For this exercise, approximate solutions are accepted.
 Solutions with an absolute error smaller than 10 will be considered correct.

Other methods to square root approximation can be used, as long as:
 It used only integers. Floating point numbers or the RISCV square root instruction cannot be used.
 The approximation is as or more precise than the suggested method.

You can test your code using the simulator's assistant from this link.