# CALCOLARE E STAMPARE IL VALORE DELLA SOMMA PER k CHE VA DA 1 A 10 DEI TERMINI k*(k+1) E STAMPARE IL RISULTATO # (il risultato deve venire 440) .data # SEZIONE DATI out_str: .asciiz "Il risultato e': " # dichiara una stringa terminante con zero .text # SEZIONE CODICE main: # indica l'inizio del codice addi $t0, $0, 1 # $t0 e' un contatore inizializzato a 1 (n) addi $t1, $0, 0 # $t1 contiene la somma addi $t2, $0, 10 # $t2 contiene il limite del loop loop_ini: slt $t7, $t2, $t0 bne $t7, $0, loop_end # esce dal loop se $t0 > 10 addi $t3,$t0,1 # da n calcola (n+1) in $t3 mult $t0,$t3 # LO = $t0 * $t3 (non uso Hi...valori piccoli) mflo $t3 # $t3 = LO (= $t0 * $t3) add $t1,$t1,$t3 # $t1 = $t1 + $t3 addi $t0, $t0, 1 # incremento il contatore j loop_ini # salta a loop_ini loop_end: # stampa la stringa di introduzione al risultato addi $v0, $0, 4 # system call per il servizio 4 (stampa stringa) la $a0, out_str # carica l'indirizzo della stringa da stampare in $a0 syscall # chiama il sistema operativo per effettuare il servizio # stampa l'intero che si trova in $t1 addi $v0, $0, 1 # system call per il servizio 1 (stampa un intero) add $a0, $0, $t1 # mette dentro $a0 l'intero che e' in $t1 syscall # chiama il sistema operativo per effettuare il servizio # exit program addi $v0, $0, 10 # system call per il servizio 1 (exit) syscall # chiama il sistema operativo per effettuare il servizio