mips中的循环和访问数组

mips中的循环和访问数组,mips,Mips,我试图循环遍历一个数组,找到最大值(int),然后打印出该值。使用下面的代码,我得到一个运行时错误 “在pc=0x00400034时发生异常 指令/数据提取中未对齐的地址:0x10010001 尝试在0x80000180“处执行非指令 感谢所有反馈 怀疑“blt$t2,$t1,结束循环”。当i=6($t1为“i”且$t2在开始时设置为6)时,“blt$t2,$t1,End_loop”不会变白到End_loop,因为6(值$t2)不小于6(值i:$t1)。在下一个语句中,可以访问采购(6),但采购

我试图循环遍历一个数组,找到最大值(int),然后打印出该值。使用下面的代码,我得到一个运行时错误

“在pc=0x00400034时发生异常

指令/数据提取中未对齐的地址:0x10010001

尝试在0x80000180“处执行非指令


感谢所有反馈

怀疑“blt$t2,$t1,结束循环”。当i=6($t1为“i”且$t2在开始时设置为6)时,“blt$t2,$t1,End_loop”不会变白到End_loop,因为6(值$t2)不小于6(值i:$t1)。在下一个语句中,可以访问采购(6),但采购区域为0到5,采购(6)位于.text区域。这会导致访问冲突。将代码更改为'ble$t2,$t1,End_loop'可以解决此问题。
添加$t1,$t1,1
您正在阅读单词,因此需要增加4。在您的帮助下,我解决了此问题:),谢谢!
.globl __start
.data
purchases:  .word 5,10,15,20,25,7
.text

__start:
li $t1, 0 # the "i" variable
li $t2, 6 # amount of elements in the array
lw $t0 , purchases+0  #Read the value of the element [0] into $t0
j For_loop

print_int:
li $v0, 1 
syscall
li $v0, 10 
syscall

For_loop:
blt $t2,$t1,End_loop
lw $t4, purchases($t1)
ble $t0 , $t4, True
add $t1, $t1, 1           #Increment
j For_loop

True:
lw $t0 , purchases($t1)
add $t1, $t1, 1    #Increment
j For_loop         #loop

End_loop:
move $a0, $t0 
j print_int

li $v0, 10
syscall