Creo que tienes problemas con la sintaxis en las llamadas al sistema. Pero bueno, vamos primero a pensar en el algoritmo.
Tienes una cadena. Para calcular el tamaño de la misma, se puede realizar un bucle while desde el inicio de la misma, e ir comparando cada carácter con un nulo. Si estas programando en MIPS lo más probable es que ya hayas tenido que hacer algo parecido en otro lenguaje de programación como C. En MIPS, un bucle while se puede emular fácilmente con saltos entre etiquetas como has intentado hacer. Ahora la idea seria la siguiente:
1º Cargar la cadena en un registro
2º Entrar en el bucle, y comparar el primer con un nulo
2.1º Si coincide salir del bucle e imprimir el resultado
2.2º Si no coincide, incrementar en una unidad tanto el contador como el índice de la cadena.
Lo que se traduce a lo siguiente:
Código Assembly:
Ver original.data
CADENA: .asciiz "Cadena de ejemplo"
.text
# $t0 = nº de caracteres (inicialmente a 0)
# $t1 = cadena
# $t2 = caracter
main:
li $t0, 0 #Iniciamos los registros
la $t1, CADENA #Ojo! cargamos la dirección
while:
lb $t2, 0($t1) #Cargamos el primer caracter (cada elemento de una cadena tiene una longitud de 1Byte)
blez $t2, finwhile #Si el caracter es igual a nulo salimos
addi $t0, $t0, 1 #Incrementamos el nº de caracters
addi $t1, $t1, 1 #Apuntamos al siguiente caracter de la cadena
j while #Repetimos el proceso
finwhile:
li $v0, 1 #Mostrar por pantalla entero
la $a0, ($t0)
syscall
li $v0, 10 #Salida
syscall
Saludos