salve sto facendo il seguente programma: inserire in un array n numeri e fare la somma di tutti i numeri pari e stampare il risultato, e fare la somma di tutti i numeri dispari e stampare il risultato.
Questo è il mio codice , ma non mi da i risultati giusti, dove è che sbaglio?
# Title: Somma numeri pari e dispari
# Description: Digitare 10 interi e come risultato voglio la somma di tutti i numeri pari e la somma
# di tutti i numeri dispari
# Input: Inserire 10 numeri da tastiera
# Output: Risultato della somma dei numeri pari e dei numeri dispari
################# Data segment #####################
.data
stringa1: .asciiz "\nLa somma dei numeri pari è: "
stringa2: .asciiz "\nLa somma dei numeri dispari è: "
prompt: .asciiz "Digita l'intero"
################# Code segment #####################
.text
.globl main
main:
li $s0,0 # inizializzo $s0=0 per il risultato dei pari
li $s3,0 # inizializzo $s3=0 per il risultato dei dispari
li $t2,2 # $t2=2 lo utilizziamo per la divisione per controllare se l'intero è pari
li $t0,0 # conta le iterazioni che devono essere 10
loop:
la $a0,prompt
li $v0,4
syscall
li $v0,5
syscall
move $t1,$v0 # $t1 contiene il numero digitato
div $t3,$t1,$t2 # numero digitato/2
mfhi $t3 # metto il resto della divisione in $t3
beqz $t3,pari
beq $t3,1,dispari
pari:
move $s1,$t1 # sposto in $s1 il valore dell'intero digitato
add $s0,$s0,$s1 # in $s0 ho la somma di tutti i numeri pari
add $t0,$t0,1 # incremento l'iterazione
bne $t0,10,loop # se $t0 e' diverso da 10 ripete l'iterazione
j exit
dispari:
move $s2,$t1 # sposto il numero dispari in $s2
add $s3,$s3,$s2 # in $s3 ho la somma totale dei dispari
add $t0,$t0,1 # incremento l'iterazione
bne $t0,10,loop # se $t0 e' diverso da 10 ripete l'iterazione
la $a0,stringa2
li $v0,4
syscall
move $a0,$s3
li $v0,1
syscall
la $a0,stringa1
li $v0,4
syscall
move $a0,$s0
li $v0,1
syscall
li $v0,10
syscall