Programación General > ASM (Ensamblador)
imprimir el tamaño de una cadena
(1/1)
myste89:
Hola, soy nueva en el foro... y también soy bastante novata con la programación en ensamblador.... os cuento: tengo que hacer un programa que lea por teclado una cadena y que imprima por pantalla el tamaño de la cadena. Luego tiene que hacer otras cosas, pero empiezo por el principio...
no sé como haceis eso de meter el código en un cuadro asi que lo pego directamente:
--- Código: Text --- .datalongitud: .asciiz "La longitud de la cadena introducida es "caracteres: .asciiz "Los caracteres de la cadena son: n"cadena: .aciiz "Introduzca la cadena deseada:"memoria: .byte 32 .text .globl main main: li $v0, 4 la $a0, cadena #imprime la cadena 'cadena' syscall move $a0, $v0 la $a1, memoria #reserva 32 bytes de espacio para almacenar cadenas jal longitud_cadena move $a0, $t2 #guarda en $a0 la variable 'contadorLetras' li $v0, 1 syscall li $v0 , 10 # Finalizar programa syscall longitud_cadena: li $t1, 0 #int i = 0 li $t2, 0 #contadorLetras = 0 bucle: lw $t0, ($a0) # metemos en $t0 el contenido de la primera posicion de la cadena beq $t0, 0, finbucle #si la casilla está vacia salimos del bucle addi $t2, 1 #contadorLetras ++ addi $t1, 1 #i++ addi $a0, 1 #incrementamos el puntero b bucle finbucle: jr $ra
Me podeis echar una mano?? Gracias
Eternal Idol:
Es un codigo para procesadores MIPS, no entiendo muy bien la parte del codigo para el strlen que tenes:
Si la cadena esta en $a0 no es mas simple hacerlo asi (en $t2 queda el resultado):
--- Código: Text --- lui $t2, 0nbucle:lb $t0, 0($a0)beq $t0,0,longitud addi $t2,$t2,1addi $a0,$a0,1j nbucle
Con el PCSpim se puede ver un bucle infinito ...
Navegación
Ir a la versión completa