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?我说得对吗?