##output the contents of an "array" which you initialize via .byte, .word, .half
#then, input a string and output the string backwards
.data
string_array:
.space 1000 #define an array 1000 bytes big
reverse_array:
.space 1000 #define the array that will hold the reverse
.globl main
.text
main:
la $a0, user_input #user input
li $v0, 4
syscall
la $a0, string_array #prepare for user input into the string array
li $a1, 1000 #telling it to feed it into those 1000 bytes of memory + 1(why +1?)
li $v0, 8 #the actual syscall code
syscall
la $t0, string_array #set t1 to store an address of our string array
la $t2, reverse_array #set t2 to be the address of our reverse array
repeat:
lb $t1, ($t0) #store the BYTE indicated by the address in t0
beqz $t1, finish #if the address becomes 0, terminate
##get the maximium of the reverse array and feed byte by byte from the back-to-front
addi $t0, $t0, 4 #increase the address by 4, which moves us to the next byte
finish:
la $a0, terminate
li $v0, 4
syscall
li $v0, 10
syscall
.data
user_input:
.asciiz "Input your string: "
terminate:
.asciiz "Terminating the program."
#DO: hybrid assignment 7
#http://courses.cs.vt.edu/~cs2505/summer2011/Notes/pdf/T23.MIPSArrays.pdf
#https://rosettacode.org/wiki/Reverse_a_string#MIPS_Assembly
Comments