为什么数组的总和不正确?

A0sXc950

数组 (5) 中的第一个数字给出了数组的大小。剩下的数字是数组中的元素。

预期答案为 10
实际答案为 11

对此非常陌生,所以我不确定为什么它给了我错误的答案。

代码:

.data
array: 
.word 5 
.word 0, 1, 2, 3, 4

.text
.globl main
main:

la $t2, array
add $t0, $0, 1 # i = 1
lw  $t4, 0($t2) # $t4 = 5 array[0] = 5
add $t1, $zero, $zero   # sum
addi $t5, $t4, 1  # $t5 = 6

loop:

slt $t3, $t0, $t5 # i > 6?
beq $t3, $zero, done

lw  $t4, ($t2)  # $t4 = array[i]
addi    $t2, $t2, 4

add $t1, $t1, $t4 
addi    $t0, $t0, 1 # i++
j loop
done:

add $a0, $0, $t1     

li  $v0, 1
syscall

li  $v0, 10
syscall

任何帮助表示赞赏。

迷失巴德

在您的代码中:

lw  $t4, 0($t2) 

上面的代码: T2 是数组。lw 获取第一个数组值并放入 t4,这是可以的。

addi $t5, $t4, 1  # $t5 = 6

上面的代码:正在设置您的数组限制数组大小 + 1,这是可以的。

lw  $t4, ($t2)  # $t4 = array[i]

上面的代码正在获取数组 [i],但是这不是您想要的 - 您想要数组 [i+1](即:不包含数组 [0])

也许最简单的方法是将 t2 增加到数组[1],然后执行循环:

  addi $t2, $t2, 4 # set address to &array[1]
loop:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章