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

Rispondi quotando