Si scriva un programma in assembler MIPS che, data una stringa A di caratteri in memoria, copi in una stringa B solo le parole di posizione pari. Il programma deve scrivere su console la stringa B e il numero di parole copiate. Esempio: Stringa A: "Questo non è un esercizio facile devo fare molta attenzione altrimenti posso sbagliare" Stringa B: "non un facile fare attenzione posso" .data stringaA: .asciiz "Questo non è un esercizio facile devo fare molta attenzione altrimenti posso sbagliare" stringaB: .word 0:150 #prealloco spazio in memoria per memorizzare la stringa b spazio: .ascii " " .text .globl main main: li $s4,2 #serve per il controllo della parità li $t0,1 #contatore di parole lb $s0,spazio li $t1,0 #posizione cursore nella stringa A lb $s2,stringaA($t1) #carattere corrente li $t5,0 #posizione cursore nella stringa B li $t4,0 #contatore numero di parole copiate ciclo: #lettura della stringa A e conteggio dei caratteri in $t1 beqz $s2,fine #la stringa finisce quando si legge il carattere con codice ASCII zero addi $t1,$t1,1 #aggiorno la posizione del cursore per la prossima lettura lb $s2, stringaA($t1) beq $s0,$s2,fineparola #la parola finisce quando si incontra uno spazio j ciclo fineparola: addi $t0,$t0,1 #incremento il contatore di parole rem $s5,$t0,$s4 #valuto se la parola considerata è in posizione pari o dispari beqz $s5,copiaparola #se la parola è in posizione pari la copio j ciclo copiaparola: addi $t4,$t4,1 #aggiorno il numero di parole copiate ciclocopia: addi $t1,$t1,1 #puntatore nella stringa A lb $s2 stringaA($t1) sb $s2,stringaB($t5) addi $t5, $t5,1 #puntatore nella stringa B beq $s0,$s2, fineparola j ciclocopia fine: la $a0, stringaB li $v0,4 syscall #stampa la stringa B move $a0,$t4 li $v0,1 syscall #stampa il numero di parole copiate li $v0,10 syscall #esce