your tasks the assignment can be broken down into the following tasks: 1. the code template you have already been given sets up the stack and calls the main subroutine. you will write code in the main subroutine which calls a subroutine that asks the user for a string, and then calls another subroutine that counts the number of characters in the zero-terminated string. once you have the string from the user and its length, you will call the recursive subroutine that determines if the string is a palindrome. you will write each of the subroutines mentioned above. 2. write a subroutine that takes an address to a string that will prompt the user, and the address where that string should be stored. it returns nothing, since the user-entered string will be stored at the address of the second parameter to the subroutine. as the user enters the characters of the string, your subroutine should echo them to the screen. once the user presses the enter key, the user input is done, and the word after the last character should be zero. 3. write a subroutine that takes an address to a zero terminated string and returns the number of characters in that string, excluding the zero terminator. remember to follow the subroutine protocol outlined in lab 7, by putting the returned count in r0. 4. write a subroutine that takes two addresses as input parameters. the first address points to the first character of the string. the second address points to the last character. the subroutine then determines if the addresses are equal, returns true if they are, and then determines if the character values at the two addresses are different, returning false if they are. these two conditions are known as the base case (or stop conditions) for the recursive algorithm. finally, if neither of the previous conditions are true, the subroutine should call itself (recurse) passing in the first address incremented by one, and the second address decremented by one. hints and