Ciao a tutti,
vorrei chiedervi se gentilmente poteste dirmi cosa sbaglio in questo codice, visto che non riesco proprio a capire dove sia il problema.
Il programma in questione dati un array di caratteri deve contare e alla fine stampare quante volte una determinata lettera appare.
L'emulatore che uso è spim.
codice:
# Il programma deve, data una stringa di n caratteri contare il numero di occorrenze
# di una determinata lettera
.data
stringa: .asciiz "ciao a tutti" #13 char
car: .ascii "t"
.text
.globl main
main:
li $t0, 12 # numero di caratteri della stringa, terminatore escluso
la $t1,stringa
la $t2,car
lb $t1,($t1) # t1 contiene il primo carattere della stringa
lb $t2,($t2) # t2 contiene il carattere da cercare
li $a0, 0 # contatore
while:
bgt $t0,0,stampa_risultato #controllo in testa
beq $t1,$t2,contatore
torna_while:
sub $t0,$t0,1 # decremento il contatore di 1
add $t1,$t1,1 # punto al successivo carattere della stringa
j while
esci:
li $v0,10
syscall
contatore:
add $a0,$a0,1
j torna_while
stampa_risultato:
li $v0,1
syscall
j esci
Grazie