Arrays MIPS中的数组字符串-循环问题

Arrays MIPS中的数组字符串-循环问题,arrays,string,mips,Arrays,String,Mips,我正在编写一个代码来显示包含多个字符串的数组。因此我使用了一个循环。但是,我的计数器工作不正常,我收到一条错误消息和数组的第一个元素字符串。有人能帮我吗 '# $s0=count, $s1=total, $s3=data $s7=index .data Mssg1:.asciiz您好\n 第1行:。asciiz aab\n 第2行:。asciiz ggdhj\n 第3行:。asciiz uio\n 数组:。字行1、行2、行3 .globl main .text 主要内容: li$s1,0总

我正在编写一个代码来显示包含多个字符串的数组。因此我使用了一个循环。但是,我的计数器工作不正常,我收到一条错误消息和数组的第一个元素字符串。有人能帮我吗

'# $s0=count, $s1=total, $s3=data $s7=index

.data
Mssg1:.asciiz您好\n

第1行:。asciiz aab\n

第2行:。asciiz ggdhj\n

第3行:。asciiz uio\n

数组:。字行1、行2、行3

.globl main
.text
主要内容: li$s1,0总计=0 李$s0,3个计数=3 la$s7,数组索引

li $v0, 4       # print_str "Hello"
la $a0, Mssg1       
syscall
l1: lw$s3,0$s7数据=总和[指数]

add $s1, $s1, $s3   # total=total+data

addi $s7, $s7, 4    # increment
addi $s0, $s0, -1   # decrement

bne $s0, $0, l1     # if not equal 0 go back onto the loop 


add $t0, $0, $s0    # t0=s0

li $v0, 4
move $a0, $t0
lw $a0, array       # print_str 
syscall'

$t1的值在循环中不会改变,因此$t7会增加,您会得到不存在的数组索引:

lw $t2,0($t7)    # data=array[index]

好的,我已经添加了减量操作使用s0之前t2-对不起,我有两个相同代码的不同版本,我偶然插入了不太透明的一个,但效果仍然是一样的。我做错了什么?现在您的代码没有在字符串l1:lw$s3,0$s7之前定义寄存器$t7的内容…在它进入循环之前声明为la$s7数组索引还不够吗?我应该在循环中定义它吗?所以我假设我应该把它赋值给0?我说得对吗?