CS0447 Project 2 Due Wednesday March 1st midnight The purpose of this assignment is to write your first assembly language procedures (including recursive procedures) and to write your first loops. WHAT TO SUBMIT: You will submit one file with the extension .s (an assembly language program). You should submit it to the /afs/cs.pitt.edu/usr0/moir/public/447/submission_2 directory. PROJECT: Implement a small "Calculator" in MIPS assembly language. The calculator should repeatedly display a menu, allow the user to choose a function and inputs, and display the results of the calculation. The functions you should implement are multiply, factorial, and exponent. These functions are defined as follows: Multiply: M(n,0) = 0 For m>0, M(n,m) = M(n,m-1)+n Factorial: F(0)=1 For n>0, F(n)=M(n,F(n-1)) Exponent: E(n,m)= n^m (n "to the power" m) You should implement each of the above functions as a procedure. Use iteration (a loop) to implement exponent, and recursion to implement multiply and factorial. To help you get started with recursive procedures, there's an example factorial procedure on p. 137 of the book. However, in this project, you are not allowed to use any of the "multiply" instructions. Thus, your factorial and exponent procedures will have to call your multiply procedure. Important note: these are very inefficient ways to calculate these values - this is an exercise! Your program should look like the following example (make sure you assign the options in the same order as shown here). Press 1 for multiply Press 2 for factorial Press 3 for exponent Press 4 to quit Your choice? ===> 1 Enter n ========> 2 Enter m ========> 5 The answer is 10 The program should repeatedly process options until the quit option is selected. If the user types an option outside the range of options, they should get an error message and the menu should be displayed again. You can assume that all inputs will be positive integers.