在过去的五个小时里,我一直在尝试解决这个问题。我必须将第一个索引与最后一个索引进行比较。如果第一个 < 最后一个,它们将被交换。如果我的数组有五个或更少的元素,这很好用。任何更大的东西,两次迭代后交换停止。我究竟做错了什么?
我的反转数组的子程序:
ReverseArray:
add $s0, $a0, $0
li $t2, 1
la $s0, array
li $s1, 4
sub $s2, $t0, 1 #lines 177 - 180 finds the last index of the array
mult $s2, $s1
mflo $s2
add $t3, $s2, $s0
swap:
lw $t5, 0($s0)
lw $t4, 0($t3) #stores the element of last index into $t4
sle $t1, $t5, $t4
beq $t1, $0, finish
li $v0, 1 #only in the loop for debug purposes
add $a0, $t1, $0
syscall
add $t6, $t5, $0
sw $t4, 0($s0)
sw $t6, 0($t3)
sub $s2, $s2, 4
add $t3, $s2, $s0
add $s0, $s0, 4
j swap
finish:
add $v1, $s0, $0
jr $ra
假设我将这些数字输入到我的数组中:
3 6 9 12 15 18
我得到的是:
18 15 9 12 6 3