我试图将十个数字平均输入到一个数组中。我在add $a2, $a2, $a1
.
不知道我做错了什么。帮助将不胜感激。
另外,我尝试将限制切换为 2 个整数,因为它不会很快溢出。它将地址加在一起,而不是整数。这是我对为什么它不断溢出的猜测。不过,我如何将地址更改为整数?
这是我的代码。
.data
nums:
.word 0,0,0,0,0,0,0,0,0,0
prompt:
.asciiz "Please enter 10 positive integers:\n"
avg:
.asciiz "Avg = "
result:
.asciiz " "
.text
.globl main
main:
li $v0, 4
la $a0, prompt
syscall
li $t1, 10
la $a1, nums
getnums:
addi $t1, $t1, -1
li $v0, 5
syscall
sw $v0, ($a1)
addi $a1, $a1, 4
bnez $t1, getnums
#avg
move $a2, $zero
move $t0, $zero
addi $a1, $a1, -4
getavg:
lw $t0, 0($a1)
addi $t1, $t1, 1
add $a2, $a2, $t0 #arithmetic overflow
addi $a1, $a1, -4
bne $t1, 10, getavg
li $v0, 4
la $a0, avg
div $a2, $a2, 10
syscall
la $a0, ($a2)
li $v0, 1
syscall
li $v0, 10
syscall
(编辑以修复代码格式 - RobertB)