Leer Cadena de Caracteres

Iniciado por muyayodeoz, 10 Enero 2014, 11:59 AM

0 Miembros y 1 Visitante están viendo este tema.

muyayodeoz

Hola me dan este ejercicio:

Desarrollar un código compuesto por un programa principal y una única subrutina que sirva para leer de consola una cadena de caracteres.  El programa principal hará uso en dos ocasiones de dichas subrutinas para almacenar en memoria dos cadenas diferentes, de tamaño 10 y 20 respectivamente, las cuales serán almacenadas a partir de las posiciones 0x10010000 y 0x10020000.

Tengo esto pero creo que esta mal:
.data
string_10: .asciiz "Caracteres"
string_20: .asciiz "AquiVeinteCaracteres"
string_pideString_10: .ascizz "Introduce una cadena de 10 caracteres"
string_pideString_20: ,ascizz "Introduce una cadena de 20 caracteres"




.text
.globl __start
__start
la $a0,string_pideString_10
la $4,string_10
la $5,10
jal read_string_10

la $a0,string_pideString_20
la $4,string_20
la $5,20
jal read_string_20

jal fin
#---------------------------Subrutinas----------------------------------#

read_string_10:
li $v0,8 # función de syscall: read_string
la $a0,string_10 # direc. base del buffer donde se escribe
# la cadena introducida por consola (teclado)
li $a1,10 # tamaño del buffer: 10 caracteres
syscall # Lectura de cadena





read_string_20:
li $v0,8 # función de syscall: read_string
la $a0,string_20 # direc. base del buffer donde se escribe
# la cadena introducida por consola (teclado)
li $a1,10 # tamaño del buffer: 10 caracteres
syscall # Lectura de cadena


fin:
li $v0,10 #Cierra consola y finaliza programa.
syscall


Creo que esta mal a ver si me ayudais gracias

muyayodeoz

Ya lo he arreglado, he aqui el bueno
.data
string_10: .asciiz "Caracteres"
string_20: .asciiz "AquiVeinteCaracteres"
string_pideString_10: .ascizz "Introduce una cadena de 10 caracteres"
string_pideString_20: .ascizz "Introduce una cadena de 20 caracteres"




.text
.globl __start
__start

la $a0,string_pideString_10 #Pide una cadena de 10
jal put_str

la $4,string_10 #Lee la cadena que se ha introducido
la $5,10
jal read_string_10



la $a0,string_pideString_20 #Pide una cadena de 20
jal put_str

la $4,string_20 #Lee la cadena que se ha introducido
la $5,20
jal read_string_20





jal fin
#---------------------------Subrutinas----------------------------------#

read_string_10:
li $v0,8 # función de syscall: read_string
la $a0,0x10010000 # direc. base del buffer donde se escribe
# la cadena introducida por consola (teclado)
li $a1,10 # tamaño del buffer: 10 caracteres
syscall # Lectura de cadena





read_string_20:
li $v0,8 # función de syscall: read_string
la $a0,0x10020000' # direc. base del buffer donde se escribe
# la cadena introducida por consola (teclado)
li $a1,10 # tamaño del buffer: 10 caracteres
syscall # Lectura de cadena


fin:
li $v0,10 #Cierra consola y finaliza programa.
syscall