#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
#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