Я пытаюсь получить в среднем десять чисел, введенных в массив. Я получаю арифметическое переполнение на 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)