我正在尝试创建一个循环遍历数组的程序,以达到最终值0。
在遍历数组中的每个元素时,我需要将值递增2并将最终结果存储在$ v0中。 (我不知道该怎么做)
到目前为止,这是我的代码:
.data
list: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
.text
li $s0, 0x10010000
increment:
beq $s0, $zero, EndLoop
lw $s1, 0($s2)
sw $s1, 0($s2)
la $s2, list
la $s1, list
lb $s2, 0($s1)
addi $s2, $s2, 2
sb $s2, 0($s1)
addi $s1, $s1, 1
j increment
EndLoop:
我的问题是:
我继续收到错误说运行时异常,地址超出范围。 知道为什么吗?
有人能指出我将最终值存储在$ v0中的正确方向吗?
答案 0 :(得分:1)
我继续收到错误说运行时异常,地址超出范围。知道为什么吗?
当然,在这里:
.text
li $s0, 0x10010000
increment:
beq $s0, $zero, EndLoop
lw $s1, 0($s2)
问题:
您似乎没有定义程序应该从哪里开始执行。我希望在代码的开头有一些标签,但我什么都没看到。相关部分是否未在问题中显示?
您的代码正在尝试从地址包含在寄存器s2
中的内存位置进行读取,但您的代码不会初始化此寄存器。
此外,您永远不会修改s0
,因此循环无穷无尽。
有人能指出我关于将最终值存储在$ v0中的正确方向吗?
我认为在v0
中存储任何内容都没有问题。