#Laboratorio 3 - esercizio 8 #Scrivere un programma assembly che scriva in memoria una stringa arbitraria che termini con ‘\0’ (utilizzando la direttiva .ascii e/o .asciiz). #Convertire poi tutte le ‘a’ presenti nella stringa in ‘e’, utilizzando un ciclo che scorra la stringa e che termini quando trova il carattere ‘\0’. .data start: .ascii "Laboratorio " .ascii "architetture\n" #se usiamo la direttiva ascii, dobbiamo aggiungere il carattere di fine stringa #in alternativa era possibile usare .asciiz "architetture" .text main: la $a0, start #metto nel registro $a0, l'indirizzo d'inizio della stringa li $s0, 0x61 #metto nel registro $s0, il valore della codifica ASCII del carattere a li $s1, 0x65 #metto nel registro $s0, il valore della codifica ASCII del carattere e ciclo: lb $t0, 0($a0) #metto nel registro $t0, il byte che si trova all'indirizzo scritto nel registro $a0 beqz $t0, fine #vado ad eseguire il codice che si trova all'etichetta fine, se il contenuto di $t0 e' 0 beq $t0, $s0, cambia #vado ad eseguire il codice che si trova all'etichetta cambia, se il contenuto di $t0 e $s0 sono uguali (ho trovato una a) j continua cambia: sb $s1, 0($a0) #scrivo in memoria all'indirizzo corrispondente al contenuto di $s0, il byte contenuto in $s1 (ovvero la codifica ASCII di e) j continua continua: addi, $a0, 1 #mi sposto sul carattere successivo, incrementando il contenuto di $a0 j ciclo fine: li $v0, 10 syscall