Calcular longitud de una cadena en MIPS

#Ejercicio
#Realice un programa que lea una cadena por teclado y calcule la longitud de la cadena1.

.data
cad: .asciiz "Introduzca una cadena: "
cadLong: .asciiz "El numero de aes es: "
cadleida: .space 100
cada: .byte 'a'
.globl main
.text
main:
li $v0, 4 #Llamada al sistema para imprimir la cadena
la $a0, cad #indicada por el puntero $a0
syscall

li $v0, 8 #Llamada al sistema para leer una cadeno
la $a0, cadleida #Le indico que me la guarde en la posici??n de memoria cadleida
li $a1,100 #Longitud m?xima de la cadena = 100
syscall

la $t0, cadleida #Inicializo un puntero a la cadena
li $t1, 0 #Inicializo la longitud de la cadena

lb $a2, cada #mover caractera a a2

bucle:
lb $t2, ($t0) #Leo un byte (car?cter) de la cadena

beq $t2, $zero, fin #Compruebo si he llegado al final de la cadena ('\0'=0)
beq $a2, $t2, etiq
addi $t0, $t0, 1 #Actualizo el puntero para que apunte al siguiente car?ter
j bucle #Continuo recorriendo la cadena

etiq:   addi $t1, $t1, 1 #Actualizo el contador
addi $t0, $t0, 1 #Actualizo el puntero para que apunte al siguiente car?ter
j bucle #Continuo recorriendo la cadena

fin: li $v0, 4 #Llamada al sistema para imprimir la cadena
la $a0, cadLong  #indicada por el puntero $a0
syscall

li $v0, 1 #Llamada al sistema para imprimir el resultado (un n??mero entero)
move $a0, $t1
syscall

li $v0, 10 #Llamada al sistema para salir del programa
syscall


DESCARGAR