stasera mi sono avventurato nell assembly...praticamente devo scrivere un programma che sommi n numeri,ogni volta immesso un numero il programma chiede se l utente intende fermarsi:se si il programma restituisce la somma dei numeri immessi fino a questo momento se no si continua a immettere numeri fino a che non si decide di fermarsi.Naturalmente come ho gia scritto nel momento in cui ti fermi devi ricevere la somma....bene...il mio problema è che mi somma solo i primi due numeri gli altri no....vi posto il codice....ripeto ho cominciato stasera a scrivere qualcosa quindi potrebbero esserci scritte delle cazzate...
codice:
.data
mex:.asciiz "immetti il numer "
mex1:.asciiz "vuoi aggiungerne altri?premi 1 se si o 2 se no "
mex2:.asciiz "immettilo "
.text
.globl main
main:
la $a0,mex
li $v0,4 #messaggio1
syscall
add $v0,$zero,5
syscall #leggo 1 numero
add $t0,$zero,$v0 #metto il numero letto in t0
addi $t1,$zero,0 #inizializzo a zero t1
if1:
la $a0,mex1
li $v0,4 #legge messaggio 2
syscall
add $v0,$zero,5
syscall #legge si o no(1 o 2)
add $t3,$zero,$v0 #mette in t3 il risultato della lettura
bne $t3,1,else #confronta con 1,se è diverso da 1 va in else
la $a0,mex2
li $v0,4 #legge terzo messaggio
syscall
add $v0,$zero,5 #legge numero
syscall
add $t1,$zero,$v0 #mette numero letto in t1
add $s0,$s0,$t1
j if1
else:
add $s0,$t0,$t1 #somma
fine:
add $a0,$zero,$s0
li $v0,1 #stampa risultato
syscall