# Program to reverse a string input by the user. Please help me out where am i going wrong? This code is giving the same output string that has been input by the user

.data
.align 2
array: .space 50
input: .asciiz "Enter a string: "
output: .asciiz "\nThe reversed string is: "
.text
.globl main

main:
addi $s0, $zero, 50
addi $t0, $zero, 0

la $a0, input
li $v0, 4
syscall

la $a0, array

li $v0, 8
syscall

initiate:
add $t0, $a0, $zero # initial address
add $t1, $zero, $zero # count=0
add $t2, $zero, $zero # i=0
la $t0, array # base address of the array
add $t3, $t0, $t2 # & array[i]

loop:
lb $t3, 0($t3) # fetch array[i]
beqz $t3, EndOfString # loop exits if it is a null character; array[i] !='\0'
bne $t3, $0, continue # otherwise loop continues
add $t1, $t1, 1 # count++

continue:
add $t2, $t2, 1 # i++
j loop

addi $a1, $zero, 50

jal StringReversal

EndOfString:
la $a0, output
li $v0, 4
syscall

la $a0, array
li $v0, 4
syscall

li $v0, 10
syscall

StringReversal:
add $t0, $a0, $zero # initial address
add $t4, $zero, $zero # j = start = 0
addi $t5, $a1, -1 # k = end-1

SwapLoop:
add $t6, $t0, $t4
lb $t7, 0($t6) # load byte array[start]
add $t8, $t0, $t5
lb $t9, 0($t8) # load byte array[end-1]
sb $t7, 0($t8) # array[end-1] = array[start]
sb $t9, 0($t6) # array[start] = array[end-1]
addi $t4, $t4, 1 # j++
addi $t5, $t5, -1 # k--
slt $t9, $t5, $t4
beqz $t9, SwapLoop
jr $ra