A good answer might be:

See below.

Final Phase

        . . . . .
        
        # pop chars from stack back into the buffer
stend:  li      $t1,0          # index of first byte of str buffer 
popl:
        lw      $t0,($sp)      # pop a char off the stack
        addu    $sp,$sp,4
        beqz    $t0,done       # null means empty stack
        
        sb      $t0,str($t1)   # store at string[$t1]
        addu    $t1,1          # inc the index
        j       popl           # loop

        # print the reversed string
done:   li      $v0,4          # service code          
        la      $a1,str        # address of string
        syscall
        li      $v0,10         # exit
        syscall   
              
        .data
str:    .space  128            # character buffer 

The last phase of the program prints out the result string. There is nothing new here. If you want to see the complete program, copy and paste the several above sections into a text file.

QUESTION 15:

Would it be easier to do this program with arrays?