• Lunes 6 de Mayo de 2024, 16:19

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - myste89

Páginas: [1]
1
ASM (Ensamblador) / imprimir el tamaño de una cadena
« en: Martes 30 de Marzo de 2010, 22:57 »
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
  1.  
  2. .data
  3. longitud: .asciiz "La longitud de la cadena introducida es "
  4. caracteres: .asciiz "Los caracteres de la cadena son: n"
  5. cadena: .aciiz "Introduzca la cadena deseada:"
  6. memoria: .byte 32
  7.  
  8. .text
  9.  
  10. .globl main
  11.  
  12. main:
  13.     li $v0, 4
  14.     la $a0, cadena  #imprime la cadena 'cadena'
  15.     syscall
  16.  
  17.     move $a0, $v0
  18.     la $a1, memoria #reserva 32 bytes de espacio para almacenar cadenas
  19.     jal longitud_cadena
  20.  
  21.     move $a0, $t2   #guarda en $a0 la variable 'contadorLetras'
  22.     li $v0, 1
  23.     syscall
  24.  
  25.     li $v0 , 10     # Finalizar programa
  26.     syscall
  27.  
  28. longitud_cadena:
  29.     li $t1, 0   #int i = 0
  30.     li $t2, 0   #contadorLetras = 0
  31.  
  32.     bucle:
  33.         lw $t0, ($a0)   # metemos en $t0 el contenido de la primera posicion de la cadena
  34.         beq  $t0, 0, finbucle   #si la casilla está vacia salimos del bucle
  35.    
  36.         addi $t2, 1 #contadorLetras ++
  37.         addi $t1, 1 #i++
  38.         addi $a0, 1 #incrementamos el puntero
  39.        
  40.         b bucle
  41.  
  42.     finbucle:
  43.         jr $ra
  44.  
  45.  

Me podeis echar una mano?? Gracias

Páginas: [1]