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

[0] Índice de Mensajes

Ir a la versión completa