Si scriva un programma in assembler MIPS che chieda all'utente di scrivere un elenco di numeri interi terminante con lo zero, memorizzi tali elementi in un vettore. Il programma deve scrivere su console l'elenco degli elementi di posizione pari e la loro somma. .data vettore: .word 0:100 stringa_I: .asciiz "Scrivi un intero: \n" stringa_O: .asciiz "\n La somma degli elementi di posizione pari è: \n" .text .globl main main: #ciclo di lettura li $t0, 0 #contatore elementi letti li $t1,0 #posizione nel vettore ciclolettura: #ciclo di lettura degli elementi del vettore add $t0, $t0, 1 la $a0,stringa_I li $v0, 4 syscall #stampa stringa di richiesta di un elemento intero da console li $v0,5 syscall #input dell'elemento sw $v0, vettore($t1) #memorizzazione dell'elemento letto add $t1,$t1, 4 #incremento il puntatore alla posizione del nuovo elemento nel vettore bne $v0, $0, ciclolettura li $t1,0 #inizializzo il puntatore alla posizione nel vettore, #non tocco $t0 che ora contiene il numero di elementi #presenti nel vettore compreso lo 0. li $t2,0 #contatore di elementi che vengono letti dal vettore li $t3,0 #somma degli elementi di posizione pari ciclodiconteggio: # ciclo in cui vengono stampati gli elementi di posizione # pari e ne vengono sommati i valori bge $t2, $t0, fineconta lw $t4, vettore($t1) add $t3, $t3, $t4 move $a0, $t4 li $v0, 1 syscall add $t1, $t1, 8 #scorro di 8 byte il vettore per trovare il prossimo elemento di posizione pari add $t2, $t2, 2 #incremento di due il numero di elementi letti j ciclodiconteggio fineconta: #stampa dei risultati la $a0, stringa_O li $v0, 4 syscall li $v0, 1 move $a0, $t3 syscall li $v0, 10 #il programma termina syscall