Write a MIPS program that reads a string of digits (0-9), and stores the base 10 integer represented by that number in two 32-bit words. You may assume that the integer is small enough to be stored in 64 bits.
Briefly, the algorithm works like this: You process the string from left to right, and with each new digit you multiply the previous result by 10 and add the numerical value of the digit. This is tricky because besides the need to convert ascii codes of 0-9 to values 0-9, you also need to do multiplication and addition on a number stored in *two* words. The multiplication by 10 can be done with shifts and addition (add 8x + 2x). Hence, the only hard part is the addition of two 64-bit numbers. Carry's must be checked and handled to get accurate results.
Write a MIPS program to multiply two 64-bit unsigned numbers. You should use program 1 to read in your numbers. Once you have the numbers stored, you may use the algorithm we went over in class to multiply them, or else you can create your own algorithm. Recall that the algorithm we did in class computes four 32-bit multiplications and combines them in a specific way with appropriate carry's. The 128-bit output can be printed using simple syscalls in four separate decimal pieces.
Must use PCSpim and fully comment both programs.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.