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