srl $t1 $t0 1 will result in n/2 being placed in register $t1. Also you can check if a number is even by checking the value of its least significant bit. The least significant bit can be isolated by using the immediate instruction with . That is andi $t1 $t0 1 will result in $t1 containing 1 (i.e. a string of 31 zeros followed by a 1) if the least significant bit of $t0 is 1 and 0 (i.e. a string of 32 zeros) otherwise. If this procedure were written in a highlevel programming language it might look something like this: pow(int x int n) { if( n == 0 ) { return 1; } else if( n == 1 ) { return x; } else if( (n % 2) == 0 ) { int temp = pow(xn/2); return temp*temp; } else { return x*pow(x n} } Your program should prompt the user to input x and n and then it should print the result. You may use the with the comments