为什么数组的总和不正确?
Why is the sum of array incorrect?
数组中的第一个数字 (5) 给出了数组的大小。其余数字是数组中的元素。
预期答案是 10
实际答案是 11
对此很陌生,所以我不确定为什么它会给我错误的答案。
代码:
.data
array:
.word 5
.word 0, 1, 2, 3, 4
.text
.globl main
main:
la $t2, array
add $t0, [=10=], 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, [=10=], $t1
li $v0, 1
syscall
li $v0, 10
syscall
感谢任何帮助。
在您的代码中:
lw $t4, 0($t2)
上面的代码:T2 是数组。 lw 获取第一个数组值并放入 t4,这没问题。
addi $t5, $t4, 1 # $t5 = 6
上面的代码:将数组限制设置为 arraysize + 1,没问题。
lw $t4, ($t2) # $t4 = array[i]
上面的代码正在获取 array[i],但这不是您想要的 - 您想要 array[i+1](即:不包括 array[0])
也许最简单的方法是将 t2 递增到数组[1],然后执行循环:
addi $t2, $t2, 4 # set address to &array[1]
loop:
数组中的第一个数字 (5) 给出了数组的大小。其余数字是数组中的元素。
预期答案是 10
实际答案是 11
对此很陌生,所以我不确定为什么它会给我错误的答案。
代码:
.data
array:
.word 5
.word 0, 1, 2, 3, 4
.text
.globl main
main:
la $t2, array
add $t0, [=10=], 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, [=10=], $t1
li $v0, 1
syscall
li $v0, 10
syscall
感谢任何帮助。
在您的代码中:
lw $t4, 0($t2)
上面的代码:T2 是数组。 lw 获取第一个数组值并放入 t4,这没问题。
addi $t5, $t4, 1 # $t5 = 6
上面的代码:将数组限制设置为 arraysize + 1,没问题。
lw $t4, ($t2) # $t4 = array[i]
上面的代码正在获取 array[i],但这不是您想要的 - 您想要 array[i+1](即:不包括 array[0])
也许最简单的方法是将 t2 递增到数组[1],然后执行循环:
addi $t2, $t2, 4 # set address to &array[1]
loop: