• Jueves 2 de Julio de 2020, 07:33

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

Páginas: [1] 2 3 ... 5
1
PHP / Re: Libreria grafica para usar con php
« en: Lunes 13 de Septiembre de 2010, 20:04 »
Gracias por la respuesta, he buscado y no he encontrado nada al respecto.

Pero he estado mirando esas librerías, y no he visto que se podían dibujar grafos, ¿Es posible con alguna de esas librerias? Gracias.

Me refiero a algo de este estilo:



Salu2

2
PHP / Libreria grafica para usar con php
« en: Lunes 6 de Septiembre de 2010, 20:39 »
Hola,

Necesito una libreria para poder dibujar grafos (con sus nodos y arcos) desde php, ya sea con javascript, flash, html5, o cualquier otro.

Conoceis alguna que me pueda servir? necesitaria que fuera visualmente agradable, y al ser posible personalizable.

A ver si me podeis echar una mano, muchas gracias.

Salu2

3
JSP/Servlets / Duda con AJAX y formulario de STRUTS2
« en: Domingo 30 de Mayo de 2010, 00:26 »
Hola, tengo una dudilla de principiante, a ver si me podéis echar una mano.

Tengo un formulario de struts2, con un select. Tengo que hacer que cuando seleccione, una opción del select, aparezca un select rellenado dependiendo de la opcion que se escogió en el primero.

Lo hago con ajax, y se hacer todo, pero ahora lo que no se, es si tengo que crear el select antes de ejectutar el ajax, o en el mismo ajax.

Si tengo que crearlo antes, la pregunta es como relleno la lista del select de strut2 con ajax. Y si lo creo en el mismo ajax, he provado con crear un div en el formulario, tanto un <div>, como un <s:div> y usando innerHTML, y nada.

A ver si me echáis una mano en esto, y si necesitáis que os explique algo más, me decis. Muchas gracias.

Salu2

4
Java / Re: No se cerrar JFrame desde el JPanel que lo contiene
« en: Jueves 18 de Marzo de 2010, 09:38 »
Gracias tio, al final lo solucione mandando el JFRAME en el contructor del jpanel, y llamando al dispose, pero me vendrá bien saber lo de esa función, sabia que tenia que haber alguna. Muchas gracias.

Un Saludo.

5
Oracle / Re: Echadme una mano con triggers, estoy aprendiendo
« en: Lunes 15 de Marzo de 2010, 11:26 »
Bueno, he leido un tutorial que me he bajado muy chulo, y he hecho lo siguiente:

Código: SQL
  1. CREATE OR REPLACE TRIGGER up_km
  2. AFTER UPDATE OF distancia_k, distancia_m ON distancias
  3. FOR each ROW
  4. BEGIN
  5. IF UPDATING ('distancia_k') THEN UPDATE distancias SET distancia_m=:NEW.distancia_k*0.621371;
  6. ELSIF UPDATING ('distancia_m') THEN UPDATE distancias SET distancia_k=:NEW.distancia_m*1.609344;
  7. END IF;
  8. END up_km;
  9. /
  10.  

Pero al hacer un set, da problemas de tablas mutantes, ahi si que no tengo ni idea de como solucionarlo.

Salu2

6
Oracle / Re: Echadme una mano con triggers, estoy aprendiendo
« en: Lunes 15 de Marzo de 2010, 09:58 »
Muchas gracias, ya entendí todo eso, o eso creo :)

Ahora intento lo siguiente:

Código: SQL
  1. CREATE TABLE distancias(ruta VARCHAR(10),
  2. distancia_k INTEGER,
  3. distancia_m INTEGER,
  4. PRIMARY KEY(ruta));
  5.  
  6. Tabla creada.
  7.  
  8.  
  9. CREATE OR REPLACE TRIGGER up_km
  10. AFTER UPDATE ON distancias ON distancia_k
  11. FOR each ROW
  12. BEGIN
  13. UPDATE transaccion SET distancia_m=:NEW.distancia_k*0.621371;
  14. END up_km;
  15. /
  16.  


Este trigger lo que hace es si se actualiza la distancia en km automaticamente lo pone en millas. Pero no se como acceder en esta linea al altributo de la tabla:

Código: SQL
  1. AFTER UPDATE ON distancias ON distancia_k
  2.  

Se supone que si inserto una nueva fila con km o millas, tiene que actualizar el otro atributo, eso si que no se por donde cogerlo. Muchas gracias.

Salu2

7
MySQL / Re: Como instalar MySQL
« en: Miércoles 10 de Marzo de 2010, 18:53 »
Gracias por tu respuesta.

Salu2

8
Oracle / Echadme una mano con triggers, estoy aprendiendo
« en: Martes 9 de Marzo de 2010, 18:37 »
Pues a ver si alguno de vosotros me echa una mano con esto.

Tengo 2 tablas, y se trata de hacer un trigger que si se actualiza una, tenga que hacer un registro en otra, con la hora de modificación, el valor anterior y el nuevo, y poco más.

Pero he hecho el trigger, y me dice errores de compilación, osea que está mal. Me vuelvo loco con esto, y tiene pinta de ser chorrada, pero no doy con la tecla.

Hasta ahora he hecho esto, pero vamos que parece que no funciona el trigger.

Código: SQL
  1. CREATE TABLE Cuenta (nro_cuenta VARCHAR(10),
  2. balance INTEGER,
  3. PRIMARY KEY(nro_cuenta));
  4.  
  5. CREATE TABLE Transaccion(nro_cuenta VARCHAR(10),
  6. hora_mod DATE,
  7. id_cliente VARCHAR(10),
  8. ant_balance INTEGER,
  9. act_balance INTEGER,
  10. PRIMARY KEY(nro_cuenta,hora_mod));
  11.  
  12. CREATE OR REPLACE TRIGGER actualizar
  13. AFTER UPDATE ON Cuenta
  14. BEGIN
  15.     INSERT INTO Transaccion
  16.     (hora_mod, ant_balance, act_balance)
  17.     VALUES(SYSDATE, OLD.balance, NEW.balance)
  18. END actualizar;
  19.  

Salu2

9
Java / No se cerrar JFrame desde el JPanel que lo contiene
« en: Jueves 4 de Marzo de 2010, 14:00 »
Llevo mucho tiempo mirando esto, y no doy con la tecla, he usado muchas funciones que he encontrado por internet, el dispose, el CLOSE, he pasado como parametro al jpanel el mismo frame, y en el frame puse un metodo que me lo cierra, y desde el jpanel lo llamo, y nada.

Vamos que no se cerrar un Jframe desde el jpanel que lo contiene, creo que debe de ser una chorrada pero no doy con ello, a ver si alguien sabe como hacerlo. Gracias.

Salu2

10
MySQL / Como instalar MySQL
« en: Miércoles 20 de Enero de 2010, 19:22 »
Hola tengo un problemilla o una duda, a ver si me podéis ayudar.

Tengo que crear una base de datos con MySQL, y manejarla desde un programa en java, pero esto es lo de menos, porque se supone que se.

Antiguamente, en windows xp, usaba un programa que era el FoxServ o el EasyPHP, el primero me gustaba más, que tenia PHP, APACHE y MySQL, y era un gestor muy sencillito de usar, arrancaba apache, y me hacia mi base de datos en MySQL y poco más.

Ahora vuelvo a necesitarlo, pero uso Windows7, alguna herramienta parecida, y fácil de configurar?

He estado probando lo siguiente:

Me he descargado mysql-connector-odbc-5.1.6-winx64 y mysql-workbench-oss-5.2.11-beta-win32, pues bien, digamos que no se como linkar una BBDD a ODBC con estas herramientas, que supongo o espero conozcáis, a ver si alguien me explica como funciona, o donde puedo encontrar un tutorial.

Cualquiera de las dos vías me valdrá, necesito algo sencillo y rápido de configurar, tampoco me quiero complicar la vida para lo que es. Gracias por vuestra ayuda.

Salu2

11
Programación Lógica / Lenguaje planer
« en: Lunes 16 de Noviembre de 2009, 18:58 »
Alguien tiene información acerca del lenguaje de programación Planer? es de Inteligencia artificial, si teneis algo me vendrá bien, algo de información, codigo lo que sea. Gracias.

Salu2

PD: lo he puesto aqui, porque no he visto otro sitio mejor donde ponerlo.

12
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Domingo 14 de Junio de 2009, 12:49 »
Cita de: "m0skit0"
Cita de: "manurodri189"
Pues ya funciona perfectamente tio!!!
Me alegro, aunque no estoy muy seguro de si sabes cómo funciona...  :P

Cita de: "manurodri189"
Por cierto no me respondiste si eras de las pedroñeras xDDDDD
Jajajaja, no, qué va, soy marroquí  :lol:

¡Saludos y suerte!

Creo que aunque es la primera vez, le estoy cogiendo la dinámica, y creo que me he enterado de todo. Seguro que si tengo que volver a hacer un programa en MIPS, me costaría menos que esta vez.

Se lo envié ayer al profesor, y dice que esta muy contento con el trabajo, y que si estoy interesado en proyectos de este tipo, una vez que vuelva a España, que podemos trabajar juntos, hacer publicaciones y demás. Pero vamos aunque la idea no me disgusta, cuando vuelva a España tengo muchas cosas que hacer, así que lo rechazaré por el momento, en el futuro quien sabe.

Salu2

13
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Sábado 13 de Junio de 2009, 21:40 »
Dios!!! estoy en la parra.

Pues ya funciona perfectamente tio!!!. Ahora solo me falta traducirlo al ingles y listo.

Te vuelvo a dar las gracias por todo.

Por cierto no me respondiste si eras de las pedroñeras xDDDDD

Venga crack!!! estamos para lo que quieras, si necesitas cualquier cosa ya sabes donde encontrarme.

Salu2

14
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Sábado 13 de Junio de 2009, 21:22 »
Cierto tio, me cuesta aprender, no es que no te haga caso xDDDD ahora lo cambio.

Si le sumo 0x30 a cada numero antes de almacenarlo dices que lo imprime, tiene que ser porque en Hexadecimal el 32, es el 2, y el 36, el 6 y así, no?

Solamente tendria que meter la sentencia addiu aqui?

Código: ASM
  1. beq $t3,$zero,finwhile    #si es el caracter vacio acabo
  2.     nop
  3.     addiu $t4,$zero,0x30         #sumo 30 para luego poder imprimirlo
  4.     sb $t4,0($t2)              #cargo el primer numero en encode
  5.     addiu $t2,$t2,1             #avanzo el puntero de encode
  6.     sb $t3,0($t2)              #cargo el caracter en encode
  7.  
  8.  

La salida es esta:

Citar
Entrance String: aaaabbbccc

 String encode like: 0a0b0c

 String decode like: aaaabbbccc

Porque me imprime 0s cuando tiene que imprimr los numeros correspondientes? supongo  que la 0x30 no se puede sumar asi, verdad? como se le suma?

Salu2

15
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Sábado 13 de Junio de 2009, 20:22 »
Lo comentamos pero no me cuadra, si yo quiero que sean caracteres?

Como habria que hacer para imprimirlo entonces? un bucle que imprimar caracter a caracter? o como?

Salu2

Edito: me refiero a que si yo en vez de letras meto numeros, tal que 22233 la codificacion se imprimiria como:

#2#3 siendo la# caracter extraño

y la decodificacion me la hace bien, y tambien imprime numeros.

16
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Sábado 13 de Junio de 2009, 18:12 »
Tienes toda la razon, tio.

De hecho ya he acabado el programa, y se que funciona, gracias a la ejecucion paso a paso, y a lo que me pone en los registros.

El almacenar_salida, como preveia estaba mal y como se supone que entendí el código que me pasaste de decodificar, pues he visto que cometia los mismos errores que comentabas antes, lo de leer en vez de escribir y demas.

Aqui pongo el codigo que me ha quedado de almacenar_salida, pero ya te digo que funciona, porque lo he probado.

Código: ASM
  1. almacenar_salida:
  2.     la $a0,encode1
  3.     la $a1,encode2
  4.     la $a3,encode
  5.     or $t0,$zero,$a0   # encode1
  6.     or $t1,$zero,$a1   # encode2
  7.     or $t2,$zero,$a3   # encode
  8.  
  9.  
  10. while:
  11.  
  12.     lbu $t3,0($t0)  # Carácter de "encode1" -> T3    
  13.     addiu $t0,$t0,1  # Avanzamos puntero
  14.     lbu $t4,0($t1)  # Numero de "encode2" -> T4  
  15.  
  16.     beq $t3,$zero,finwhile    #si es el caracter vacio acabo
  17.     nop
  18.     sb $t4,0($t2)              #cargo el primer numero en encode
  19.     addiu $t2,$t2,1             #avanzo el puntero de encode
  20.     sb $t3,0($t2)              #cargo el caracter en encode
  21.  
  22.     #avanzo todos los punteros
  23.     addiu $t1,$t1,1
  24.     addiu $t2,$t2,1
  25.  
  26.     b while                   #llamo a while de nuevo
  27.     nop
  28.  

Ahora solo tengo un pequeño problemilla que no se a que se debe. Y es a la hora de imprimir encode, y solo encode, porque los numeros me los imprime como caracteres extraños, no se si será por el syscall o porque, pero solo me pasa con el encode, ya que si imprimo el decode de la misma manera funciona perfectamente.

Lo imprimo así:

Código: ASM
  1. #Imprimir la matriz de salida codificada
  2.     # Número de syscall
  3.     ori $v0,$zero,4
  4.     # $a0 = buffer a imprimir
  5.     la $a0,encode
  6.     syscall
  7.  

Y da como salida esto:

Citar
Entrance String: aabbcc

 String encode like: abc

 String decode like: aabbcc

Te pego todo el programa acabado a falta de eso:

Código: ASM
  1. .data
  2. Entrance: .space 80
  3. encode1: .space 40
  4. encode2: .space 40
  5. encode: .space 40
  6. decode: .space 80
  7. msg1: .asciiz "Please insert the String: "
  8. msg2: .asciiz "n"
  9. msg3: .asciiz "n String encode like: "
  10. msg4: .asciiz "n String decode like: "
  11. msg5: .asciiz "n Entrance String: "
  12. .text
  13. .globl main
  14.  
  15. #
  16. # Main
  17. #
  18. main:
  19.     ori $v0,$zero,4
  20.     la $a0,msg1
  21.     syscall
  22.  
  23. #Almacenar el String en la matriz
  24. # Número de syscall
  25.     ori $v0,$zero,8
  26. # $a0 = buffer para guardar la cadena
  27.     la $a0,Entrance
  28. # $a1 = tamaño a leer
  29.     ori $a1,$zero,80
  30.     syscall
  31.  
  32. la $a0,Entrance
  33. jal eliminar_enter
  34. nop
  35.  
  36. ori $v0,$zero,4
  37.     la $a0,msg5
  38.     syscall
  39.  
  40. #Imprimir la matriz
  41. # Número de syscall
  42.     ori $v0,$zero,4
  43. # $a0 = buffer a imprimir
  44.     la $a0,Entrance
  45.     syscall
  46.  
  47. ori $v0,$zero,4
  48.     la $a0,msg2
  49.     syscall
  50.  
  51. #
  52. # Codificar
  53. #
  54. start:
  55.     la $s0, Entrance
  56.     la $s3, encode1  #almaceno la direccion de encode1 en s3, s3 es el puntero
  57.     la $s4, encode2  #almaceno la direccion de encode2 en s4, s4 es el puntero
  58.     or $a3,$zero,$s3
  59.     or $a2,$zero,$s4
  60.  
  61. sig_carac:
  62.     lbu $s1, 0($s0)
  63.     beq $s1, $zero, fin   # Si es el carácter de final de cadena, ya terminamos
  64.     add $a0,$zero,$s1     # Pasando el primer parámetro a la función procesar()
  65.    
  66.     jal procesar          # Llamamos a la función procesar()
  67.     addiu $a1,$s0,1       # Pasando el segundo parámetro a la función procesar()
  68.    
  69.     add $a0,$zero,$s1  #El carácter en $a0
  70.     addiu $v0,$v0,1    #sumamos 1 a v0
  71.     jal almacenar     # Llamamos a la función almacenar()
  72.     add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1
  73.    
  74.     beq $zero,$zero,sig_carac  # Siguiente carácter diferente
  75.     or $s0, $zero, $v1        # Actualizamos el puntero con el valor devuelto
  76.  
  77. #
  78. # Exit
  79. #
  80. fin:
  81.  
  82.     jal almacenar_salida
  83.     nop
  84.  
  85.     ori $v0,$zero,4
  86.     la $a0,msg3
  87.     syscall
  88.  
  89.     #Imprimir la matriz
  90.     # Número de syscall
  91.     ori $v0,$zero,4
  92.     # $a0 = buffer a imprimir
  93.     la $a0,encode
  94.     syscall
  95.  
  96.     ori $v0,$zero,4
  97.     la $a0,msg2
  98.     syscall
  99.  
  100.     jal decodificar
  101.     nop
  102.  
  103.     ori $v0,$zero,4
  104.     la $a0,msg4
  105.     syscall
  106.  
  107.     #Imprimir la matriz
  108.     # Número de syscall
  109.     ori $v0,$zero,4
  110.     # $a0 = buffer a imprimir
  111.     la $a0,decode
  112.     syscall
  113.  
  114.     ori $v0,$zero,4
  115.     la $a0,msg2
  116.     syscall
  117.  
  118.     ori $v0,$zero,10   # Terminamos con exit
  119.     syscall
  120.  
  121. #
  122. # Procesar (habría que poner un nombre más explicativo :)
  123. #
  124. # Recibe un carácter y el puntero a una cadena
  125. # Cuenta cuántos caracteres iguales al pasado consecutivos hay en la cadena
  126. # Devuelve en $v0 el número de caracteres iguales
  127. # y en $v1 el puntero al primer carácter diferente encontrado
  128. procesar:
  129.     add $v0, $zero, $zero   # Inicializamos valores de retorno
  130.     add $v1, $zero, $a1
  131.     add $t1, $zero, $zero   # Contador de caracteres iguales consecutivos
  132. procesar_iguales:
  133.     lbu $t0, 0($a1)                    # Cargamos el siguiente carácter a comparar
  134.     bne $a0, $t0, procesar_noiguales   # Si no son iguales, terminamos
  135.     addiu $a1, $a1, 1                  # Apuntamos al siguiente carácter    
  136.     beq $zero, $zero, procesar_iguales
  137.     addiu $t1, $t1, 1                  # Si son iguales, aumentamos el contador en uno
  138.  
  139. procesar_noiguales:
  140.     add $v0, $v0, $t1   # Ponemos los valores de retorno
  141.     add $v1, $v1, $t1
  142.  
  143.  
  144. # Volvemos de la función
  145.     jr $ra
  146.     nop
  147.  
  148.  
  149. almacenar:
  150.  
  151.     sb $a0,0($a3)   #meto el caracter en la primera direccion de a3
  152.     sb $a1,0($a2)   #meto el contador en la primera direccion de a4
  153.  
  154.     #avanzo el puntero
  155.  
  156.     addiu $a3,$a3,1
  157.     addiu $a2,$a2,1
  158.  
  159.  
  160.  
  161. # Volvemos de la función
  162.     jr $ra
  163.     nop
  164.  
  165. almacenar_salida:
  166.     la $a0,encode1
  167.     la $a1,encode2
  168.     la $a3,encode
  169.     or $t0,$zero,$a0   # encode1
  170.     or $t1,$zero,$a1   # encode2
  171.     or $t2,$zero,$a3   # encode
  172.  
  173.  
  174. while:
  175.  
  176.     lbu $t3,0($t0)  # Carácter de "encode1" -> T3    
  177.     addiu $t0,$t0,1  # Avanzamos puntero
  178.     lbu $t4,0($t1)  # Numero de "encode2" -> T4  
  179.  
  180.     beq $t3,$zero,finwhile    #si es el caracter vacio acabo
  181.     nop
  182.     sb $t4,0($t2)              #cargo el primer numero en encode
  183.     addiu $t2,$t2,1             #avanzo el puntero de encode
  184.     sb $t3,0($t2)              #cargo el caracter en encode
  185.  
  186.     #avanzo todos los punteros
  187.     addiu $t1,$t1,1
  188.     addiu $t2,$t2,1
  189.  
  190.     b while                   #llamo a while de nuevo
  191.     nop
  192.  
  193. finwhile:
  194.  
  195.     sb $zero, 0($t2)   # Escribimos el carácter de fin de cadena
  196.     jr $ra
  197.     nop
  198.  
  199.  
  200. # void EliminarEnter(char* entrada)
  201. eliminar_enter:
  202.     li $t1,0xA
  203. ee_bucle:
  204.     lbu $t0,0($a0)
  205.     beq $t0,0xA,fin_ee
  206.     addiu $a0,$a0,1
  207.     beq $zero,$zero,ee_bucle
  208.     nop
  209. fin_ee:
  210.     jr $ra
  211.     sb $zero,-1($a0)
  212.  
  213.  
  214. decodificar:
  215.     # cargamos los parámetros en otros registros
  216.     la $a2,decode
  217.     la $a0,encode1
  218.     la $a1,encode2
  219.     or $t0,$zero,$a0   # encode1
  220.     or $t1,$zero,$a1   # encode2
  221.     or $t2,$zero,$a2   # decode
  222.  
  223.     lbu $t3,0($t0)  # Carácter de "encode1" -> T3    
  224.     addiu $t0,$t0,1  # Avanzamos puntero
  225.  
  226. decode_while1:    
  227.     beq $t3,$zero,fin_dec_while1  # Mientras no sea fin de cadena
  228.     nop
  229.     lbu $t4, 0($t1)  # Número de repeticiones del carácter
  230.     addiu $t1,$t1,1  # Avanzamos de elemento
  231.  
  232. decode_while2:
  233.     beq $t4,$zero,fin_dec_while2  # Mientras el número de caracteres no sea cero
  234.     nop
  235.     sb $t3, 0($t2)   # Escribimos el carácter en decode
  236.     addiu $t2,$t2,1  # Avanzamos el puntero móvil de decode
  237.     beq $zero,$zero, decode_while2  # Repetimos
  238.     addiu $t4,$t4,-1  # Restamos uno al número de caracteres
  239.  
  240. fin_dec_while2:    
  241.     lbu $t3,0($t0)  # Carácter de "encode1" -> T3    
  242.     beq $zero,$zero,decode_while1
  243.     addiu $t0,$t0,1  # Avanzamos puntero
  244.  
  245. fin_dec_while1:
  246.     sb $zero, 0($t2)   # Escribimos el carácter de fin de cadena
  247.     jr $ra
  248.     nop
  249.  
  250.  

Saludos y muchas gracias de nuevo.

17
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 20:14 »
A ver que te parece la funcion:

Código: ASM
  1. decodificar:
  2.  
  3.     la $a0,encode1
  4.     la $a1,encode2
  5.     la $a3,decode
  6.     lbu $a3,0($a0)             #cargo el caracter en decode
  7.     addiu $a3,$a3,1            #avanzo el puntero decode
  8.  
  9. while2:
  10.  
  11.     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo
  12.     nop
  13.     lbu $a2,0($a1)             #cargo el numero
  14.     addiu $a1,$a1,1            #avanzo el puntero
  15.  
  16. while3:
  17.  
  18.     beq $a2,$zero,etiqueta   #salto a etiqueta si es igual a 0
  19.     nop
  20.    
  21.     lbu $a3,0($a0)             #cargo el caracter en decode
  22.     addiu $a3,$a3,1            #avanzo el puntero decode
  23.     addiu $a2,$a2,-1           #a2-1 #le resto 1 al primer numero
  24.  
  25.     b while3
  26.  
  27. etiqueta:
  28.  
  29.     lbu $a3,0($a0)             #cargo el caracter en decode
  30.     addiu $a3,$a3,1            #avanzo el puntero decode
  31.  
  32.     b while2
  33.  
  34. finwhile2:
  35.  
  36. # Volvemos de la función
  37.     jr $ra
  38.     nop
  39.  

Pero creo que si mal no he entendido, que tendria que restar uno al contador ya que ya he metido uno a la matriz decode antes de entrar a los while, no es asi?.

Salu2

18
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 15:09 »
Ok, a ver si escribo bien el pseudocodigo:

Código: Text
  1. Mientras encode1 no sea fin de cadena.
  2.      
  3.      meter el primer caracter de encode1 en decode.
  4.      avanzar el puntero de decode
  5.      restar 1 al primer numero de encode2   (porque ya hemos metido un caracter en el resultado)
  6.      si el primer numero de encode2 es cero
  7.             avanzar los punteros, encode1, encode2 y decode
  8. repetir
  9. fin mientras.
  10.  

Es esto lo que quiero que haga, y creo que el procedimiento en mips es el correcto, no? creo que lo que tiene que fallar es algo de intrucciones.

Por cierto como es que hago mal el proceso de impresion?

Salu2

19
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 14:56 »
Por cierto, por más que lo miro, sigo pensando que la lógica está bien, pero falla algo de Mips que no controlo.

Salu2

20
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 14:45 »
Ok, tio la verdad es que llevas razon, pero aunque creo que le estoy cogiendo la dinamica a esto estoy un poco verdad, todavia.

Mira he actualizado asi, para que si se ejecute ese comando:

Código: ASM
  1. add $a0,$zero,$s1  #El carácter en $a0
  2.     addiu $v0,$v0,1    #sumamos 1 a v0
  3.     jal almacenar     # Llamamos a la función almacenar()
  4.     add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1
  5.  

Debajo de la llamada a decodifcar, me ocurria lo mismo así que también he puesto un nop.

Me has dicho que codificar funciona, pero creo que el almacenamiento en encode, no porque lo imprimo y no hace nada.

También he puesto el nop debajo de beq, porque tambien consume 8 al igual que jal.

Código: ASM
  1. almacenar_salida:
  2.     la $a0,encode1
  3.     la $a1,encode2
  4.     la $a3,encode
  5.  
  6. while:
  7.  
  8.     beq $a0,$zero,finwhile    #si es el caracter vacio acabo
  9.     nop
  10.     lbu $a3,0($a1)              #cargo el primer numero en encode
  11.     addiu $a3,$a3,1             #avanzo el puntero de encode
  12.     lbu $a3,0($a0)              #cargo el caracter en encode
  13.  
  14.     #avanzo todos los punteros
  15.     addiu $a3,$a3,1
  16.     addiu $a0,$a0,1
  17.     addiu $a1,$a1,1
  18.  
  19.     b while                   #llamo a while de nuevo
  20.  
  21. finwhile:
  22.  
  23. # Volvemos de la función
  24.     jr $ra
  25.     nop
  26.  

Y en decodificar lo mismo.

Código: ASM
  1. decodificar:
  2.  
  3.     la $a0,encode1
  4.     la $a1,encode2
  5.     la $a3,decode
  6.  
  7. while2:
  8.  
  9.     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo
  10.     nop
  11.     lbu $a3,0($a0)             #cargo el caracter en decode
  12.     addiu $a3,$a3,1            #avanzo el puntero decode
  13.     addiu $a1,$a1,-1           #a1-1 #le resto 1 al primer numero
  14.     bnez $a1,while2            #repito el while2 si $a1 es distinto de 0
  15.     nop
  16.    
  17.  
  18.     #avanzo todos los punteros
  19.     addiu $a3,$a3,1
  20.     addiu $a0,$a0,1
  21.     addiu $a1,$a1,1
  22.  
  23.     b while2
  24.  
  25. finwhile2:
  26.  
  27. # Volvemos de la función
  28.     jr $ra
  29.     nop
  30.  

La verdad es que no se por donde cogerlo, ten en cuenta que es mi primera vez, no digo que me lo hagas, si no un poco de ayuda, si no te importa, mas que nada para los conceptos, y luego yo localizo los errores y los intento arreglar, porque sigo pensando que estoy en la dinamica, o no?

Salu2

Edito: acabo de modifcar lo de la instruccion de debajo porque veo que lo uso en el bnez.

21
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 14:14 »
Corregido de la siguiente maner:

Código: ASM
  1. add $a0,$zero,$s1  #El carácter en $a0
  2.     jal almacenar     # Llamamos a la función almacenar()
  3.     addiu $v0,$v0,1    #sumamos 1 a v0
  4.     add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1
  5.  

Tiene que haber más errores. porque sucede lo mismo. Muchas gracias de verdad.

Salu2

22
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 14:01 »
Ok, entiendo se me pasó poner nop detras de la instruccion, con uno seria suficiente, no?

Salu2

PD: sigue sin tirar.

23
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 13:44 »
Ok, gracias, pongo de nuevo todo el codigo, para que lo veas, y tener una copia de seguridad que nunca está demás  :lol:

Código: ASM
  1. .data
  2. Entrance: .space 80
  3. encode1: .space 40
  4. encode2: .space 40
  5. encode: .space 40
  6. decode: .space 80
  7. msg1: .asciiz "Please insert the String: "
  8. msg2: .asciiz " "
  9. msg3: .asciiz "n String encode like: "
  10. msg4: .asciiz "n String decode like: "
  11. .text
  12. .globl main
  13.  
  14. #
  15. # Main
  16. #
  17. main:
  18.     ori $v0,$zero,4
  19.     la $a0,msg1
  20.     syscall
  21.  
  22. #Almacenar el String en la matriz
  23. # Número de syscall
  24.     ori $v0,$zero,8
  25. # $a0 = buffer para guardar la cadena
  26.     la $a0,Entrance
  27. # $a1 = tamaño a leer
  28.     ori $a1,$zero,80
  29.     syscall
  30.  
  31. la $a0,Entrance
  32. jal eliminar_enter
  33. nop
  34.  
  35. #Imprimir la matriz
  36. # Número de syscall
  37.     ori $v0,$zero,4
  38. # $a0 = buffer a imprimir
  39.     la $a0,Entrance
  40.     syscall
  41.  
  42. #
  43. # Codificar
  44. #
  45. start:
  46.     la $s0, Entrance
  47.     la $s3, encode1  #almaceno la direccion de encode1 en s3, s3 es el puntero
  48.     la $s4, encode2  #almaceno la direccion de encode2 en s4, s4 es el puntero
  49.     or $a3,$zero,$s3
  50.     or $a2,$zero,$s4
  51.  
  52. sig_carac:
  53.     lbu $s1, 0($s0)
  54.     beq $s1, $zero, fin   # Si es el carácter de final de cadena, ya terminamos
  55.     add $a0,$zero,$s1     # Pasando el primer parámetro a la función procesar()
  56.    
  57.     jal procesar          # Llamamos a la función procesar()
  58.     addiu $a1,$s0,1       # Pasando el segundo parámetro a la función procesar()
  59.    
  60.     add $a0,$zero,$s1  #El carácter en $a0
  61.     jal almacenar     # Llamamos a la función almacenar()
  62.     add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1
  63.    
  64.     beq $zero,$zero,sig_carac  # Siguiente carácter diferente
  65.     or $s0, $zero, $v1        # Actualizamos el puntero con el valor devuelto
  66.  
  67. #
  68. # Exit
  69. #
  70. fin:
  71.  
  72.     jal almacenar_salida
  73.  
  74.     #Imprimir la matriz de salida codificada
  75.     # Número de syscall
  76.     ori $v0,$zero,4
  77.     # $a0 = buffer a imprimir
  78.     la $a0,encode
  79.     syscall
  80.  
  81.     jal decodificar
  82.  
  83.     #Imprimir la matriz de salida decodificada
  84.     # Número de syscall
  85.     ori $v0,$zero,4
  86.     # $a0 = buffer a imprimir
  87.     la $a0,decode
  88.     syscall
  89.  
  90.     ori $v0,$zero,10   # Terminamos con exit
  91.     syscall
  92.  
  93. #
  94. # Procesar (habría que poner un nombre más explicativo :)
  95. #
  96. # Recibe un carácter y el puntero a una cadena
  97. # Cuenta cuántos caracteres iguales al pasado consecutivos hay en la cadena
  98. # Devuelve en $v0 el número de caracteres iguales
  99. # y en $v1 el puntero al primer carácter diferente encontrado
  100. procesar:
  101.     add $v0, $zero, $zero   # Inicializamos valores de retorno
  102.     add $v1, $zero, $a1
  103.     add $t1, $zero, $zero   # Contador de caracteres iguales consecutivos
  104. procesar_iguales:
  105.     lbu $t0, 0($a1)                    # Cargamos el siguiente carácter a comparar
  106.     bne $a0, $t0, procesar_noiguales   # Si no son iguales, terminamos
  107.     addiu $a1, $a1, 1                  # Apuntamos al siguiente carácter    
  108.     beq $zero, $zero, procesar_iguales
  109.     addiu $t1, $t1, 1                  # Si son iguales, aumentamos el contador en uno
  110.  
  111. procesar_noiguales:
  112.     add $v0, $v0, $t1   # Ponemos los valores de retorno
  113.     add $v1, $v1, $t1
  114.  
  115.  
  116. # Volvemos de la función
  117.     jr $ra
  118.     nop
  119.  
  120.  
  121. almacenar:
  122.  
  123.     sb $a0,0($a3)   #meto el caracter en la primera direccion de a3
  124.     sb $a1,0($a2)   #meto el contador en la primera direccion de a4
  125.  
  126.     #avanzo el puntero
  127.  
  128.     addiu $a3,$a3,1
  129.     addiu $a2,$a2,1
  130.  
  131.  
  132.  
  133. # Volvemos de la función
  134.     jr $ra
  135.     nop
  136.  
  137. almacenar_salida:
  138.     la $a0,encode1
  139.     la $a1,encode2
  140.     la $a3,encode
  141.  
  142. while:
  143.  
  144.     beq $a0,$zero,finwhile    #si es el caracter vacio acabo
  145.     lbu $a3,0($a1)              #cargo el primer numero en encode
  146.     addiu $a3,$a3,1             #avanzo el puntero de encode
  147.     lbu $a3,0($a0)              #cargo el caracter en encode
  148.  
  149.     #avanzo todos los punteros
  150.     addiu $a3,$a3,1
  151.     addiu $a0,$a0,1
  152.     addiu $a1,$a1,1
  153.  
  154.     b while                   #llamo a while de nuevo
  155.  
  156.  
  157. finwhile:
  158.  
  159. # Volvemos de la función
  160.     jr $ra
  161.     nop
  162.  
  163.  
  164. decodificar:
  165.  
  166.     la $a0,encode1
  167.     la $a1,encode2
  168.     la $a3,decode
  169.  
  170. while2:
  171.  
  172.     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo
  173.     lbu $a3,0($a0)             #cargo el caracter en decode
  174.     addiu $a3,$a3,1            #avanzo el puntero decode
  175.     addiu $a1,$a1,-1           #a1-1 #le resto 1 al primer numero
  176.     bnez $a1,while2            #repito el while2 si $a1 es distinto de 0
  177.  
  178.     #avanzo todos los punteros
  179.     addiu $a3,$a3,1
  180.     addiu $a0,$a0,1
  181.     addiu $a1,$a1,1
  182.  
  183.     b while2
  184.    
  185.  
  186.  
  187. finwhile2:
  188.  
  189. # Volvemos de la función
  190.     jr $ra
  191.     nop
  192.  
  193. # void EliminarEnter(char* entrada)
  194. eliminar_enter:
  195.     li $t1,0xA
  196. ee_bucle:
  197.     lbu $t0,0($a0)
  198.     beq $t0,0xA,fin_ee
  199.     addiu $a0,$a0,1
  200.     beq $zero,$zero,ee_bucle
  201.     nop
  202. fin_ee:
  203.     jr $ra
  204.     sb $zero,-1($a0)
  205.  

He cambiado las j por b, como me has dicho que usa branches y no jumps. Pero sigue sin ir, es posible que la logica esté mal? o son las intrucciones? aunque creo que la lógica es la correcta. Muchas gracias.

Salu2

24
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 11:09 »
Bueno he seguido trabajando, y creo que ya he acabado el programa, pero obviamente no funciona, te pego el código.

Código: ASM
  1. .data
  2. Entrance: .space 80
  3. Entranceaux: .space 80
  4. encode1: .space 40
  5. encode2: .space 40
  6. encode: .space 40
  7. decode: .space 80
  8. msg1: .asciiz "Please insert the String: "
  9. msg2: .asciiz " "
  10. msg3: .asciiz "n String encode like: "
  11. msg4: .asciiz "n String decode like: "
  12. .text
  13. .globl main
  14.  
  15. #
  16. # Main
  17. #
  18. main:
  19.     ori $v0,$zero,4
  20.     la $a0,msg1
  21.     syscall
  22.  
  23. #Almacenar el String en la matriz
  24. # Número de syscall
  25.     ori $v0,$zero,8
  26. # $a0 = buffer para guardar la cadena
  27.     la $a0,Entranceaux
  28. # $a1 = tamaño a leer
  29.     ori $a1,$zero,80
  30.     syscall
  31.  
  32. #quitar el ultimo caracter de entrance.
  33.  
  34. la $a0,Entrance         #Almaceno la entrada sin el caracter "enter"
  35. la $a1,Entranceaux      #Cadena de entrada
  36. la $a2,Entranceaux+1´   #puntero al segundo caracter de la cadena de entrada
  37.  
  38. recorrer:
  39.     beq $a2, $zero, imprimir
  40.     lbu $a0,0($a1)      #meto el caracter
  41.  
  42.     #avanzo todos los punteros
  43.     addiu $a2,$a2,1
  44.     addiu $a0,$a0,1
  45.     addiu $a1,$a1,1
  46.      
  47.     j recorrer
  48.  
  49.  
  50. imprimir:
  51.  
  52. #Imprimir la matriz
  53. # Número de syscall
  54.     ori $v0,$zero,4
  55. # $a0 = buffer a imprimir
  56.     la $a0,Entrance
  57.     syscall
  58.  
  59. #
  60. # Codificar
  61. #
  62. start:
  63.     la $s0, Entrance
  64.     la $s3, encode1  #almaceno la direccion de encode1 en s3, s3 es el puntero
  65.     la $s4, encode2  #almaceno la direccion de encode2 en s4, s4 es el puntero
  66.     or $a3,$zero,$s3
  67.     or $a2,$zero,$s4
  68.  
  69. sig_carac:
  70.     lbu $s1, 0($s0)
  71.     beq $s1, $zero, fin   # Si es el carácter de final de cadena, ya terminamos
  72.     add $a0,$zero,$s1     # Pasando el primer parámetro a la función procesar()
  73.    
  74.     jal procesar          # Llamamos a la función procesar()
  75.     addiu $a1,$s0,1       # Pasando el segundo parámetro a la función procesar()
  76.    
  77.     add $a0,$zero,$s1  #El carácter en $a0
  78.     jal almacenar     # Llamamos a la función almacenar()
  79.     add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1
  80.    
  81.     beq $zero,$zero,sig_carac  # Siguiente carácter diferente
  82.     or $s0, $zero, $v1        # Actualizamos el puntero con el valor devuelto
  83.  
  84. #
  85. # Exit
  86. #
  87. fin:
  88.  
  89.     jal almacenar_salida
  90.  
  91.     #Imprimir la matriz de salida codificada
  92.     # Número de syscall
  93.     ori $v0,$zero,4
  94.     # $a0 = buffer a imprimir
  95.     la $a0,encode
  96.     syscall
  97.  
  98.     jal decodificar
  99.  
  100.     #Imprimir la matriz de salida decodificada
  101.     # Número de syscall
  102.     ori $v0,$zero,4
  103.     # $a0 = buffer a imprimir
  104.     la $a0,decode
  105.     syscall
  106.  
  107.     ori $v0,$zero,10   # Terminamos con exit
  108.     syscall
  109.  
  110. #
  111. # Procesar (habría que poner un nombre más explicativo :)
  112. #
  113. # Recibe un carácter y el puntero a una cadena
  114. # Cuenta cuántos caracteres iguales al pasado consecutivos hay en la cadena
  115. # Devuelve en $v0 el número de caracteres iguales
  116. # y en $v1 el puntero al primer carácter diferente encontrado
  117. procesar:
  118.     add $v0, $zero, $zero   # Inicializamos valores de retorno
  119.     add $v1, $zero, $a1
  120.     add $t1, $zero, $zero   # Contador de caracteres iguales consecutivos
  121. procesar_iguales:
  122.     lbu $t0, 0($a1)                    # Cargamos el siguiente carácter a comparar
  123.     bne $a0, $t0, procesar_noiguales   # Si no son iguales, terminamos
  124.     addiu $a1, $a1, 1                  # Apuntamos al siguiente carácter    
  125.     beq $zero, $zero, procesar_iguales
  126.     addiu $t1, $t1, 1                  # Si son iguales, aumentamos el contador en uno
  127.  
  128. procesar_noiguales:
  129.     add $v0, $v0, $t1   # Ponemos los valores de retorno
  130.     add $v1, $v1, $t1
  131.  
  132.  
  133. # Volvemos de la función
  134.     jr $ra
  135.     nop
  136.  
  137.  
  138. almacenar:
  139.  
  140.     sb $a0,0($a3)   #meto el caracter en la primera direccion de a3
  141.     sb $a1,0($a2)   #meto el contador en la primera direccion de a4
  142.  
  143.     #avanzo el puntero
  144.  
  145.     addiu $a3,$a3,1
  146.     addiu $a2,$a2,1
  147.  
  148.  
  149.  
  150. # Volvemos de la función
  151.     jr $ra
  152.     nop
  153.  
  154. almacenar_salida:
  155.     la $a0,encode1
  156.     la $a1,encode2
  157.     la $a3,encode
  158.  
  159. while:
  160.  
  161.     beq $a0,$zero,finwhile    #si es el caracter vacio acabo
  162.     lbu $a3,0($a1)              #cargo el primer numero en encode
  163.     addiu $a3,$a3,1             #avanzo el puntero de encode
  164.     lbu $a3,0($a0)              #cargo el caracter en encode
  165.  
  166.     #avanzo todos los punteros
  167.     addiu $a3,$a3,1
  168.     addiu $a0,$a0,1
  169.     addiu $a1,$a1,1
  170.  
  171.     j while                   #llamo a while de nuevo
  172.  
  173.  
  174. finwhile:
  175.  
  176. # Volvemos de la función
  177.     jr $ra
  178.     nop
  179.  
  180.  
  181. decodificar:
  182.  
  183.     la $a0,encode1
  184.     la $a1,encode2
  185.     la $a3,decode
  186.  
  187. while2:
  188.  
  189.     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo
  190.     lbu $a3,0($a0)             #cargo el caracter en decode
  191.     addiu $a3,$a3,1            #avanzo el puntero decode
  192.     addiu $a1,$a1,-1           #a1-1 #le resto 1 al primer numero
  193.     bnez $a1,while2            #repito el while2 si $a1 es distinto de 0
  194.  
  195.     #avanzo todos los punteros
  196.     addiu $a3,$a3,1
  197.     addiu $a0,$a0,1
  198.     addiu $a1,$a1,1
  199.  
  200.     j while2
  201.    
  202.  
  203.  
  204. finwhile2:
  205.  
  206. # Volvemos de la función
  207.     jr $ra
  208.     nop
  209.  

Ahora vayamos por partes, y a ver si estoy en el buen camino de lo que se me ha ocurrido:

Código: ASM
  1. #Almacenar el String en la matriz
  2. # Número de syscall
  3.     ori $v0,$zero,8
  4. # $a0 = buffer para guardar la cadena
  5.     la $a0,Entranceaux
  6. # $a1 = tamaño a leer
  7.     ori $a1,$zero,80
  8.     syscall
  9.  
  10. #quitar el ultimo caracter de entrance.
  11.  
  12. la $a0,Entrance         #Almaceno la entrada sin el caracter "enter"
  13. la $a1,Entranceaux      #Cadena de entrada
  14. la $a2,Entranceaux+1´   #puntero al segundo caracter de la cadena de entrada
  15.  
  16. recorrer:
  17.     beq $a2, $zero, imprimir
  18.     lbu $a0,0($a1)      #meto el caracter
  19.  
  20.     #avanzo todos los punteros
  21.     addiu $a2,$a2,1
  22.     addiu $a0,$a0,1
  23.     addiu $a1,$a1,1
  24.      
  25.     j recorrer
  26.  

Se me ha ocurrido almacenar la entrada por teclado en una matriz auxiliar, tener 2 punteros, uno que apunte al primer caracter de esta matriz, y otro al segundo. Si el segundo puntero apunta al caracter fin de cadena, se acaba, por lo tanto no me meterá el caracter intro.

Código: ASM
  1. almacenar_salida:
  2.     la $a0,encode1
  3.     la $a1,encode2
  4.     la $a3,encode
  5.  
  6. while:
  7.  
  8.     beq $a0,$zero,finwhile    #si es el caracter vacio acabo
  9.     lbu $a3,0($a1)              #cargo el primer numero en encode
  10.     addiu $a3,$a3,1             #avanzo el puntero de encode
  11.     lbu $a3,0($a0)              #cargo el caracter en encode
  12.  
  13.     #avanzo todos los punteros
  14.     addiu $a3,$a3,1
  15.     addiu $a0,$a0,1
  16.     addiu $a1,$a1,1
  17.  
  18.     j while                   #llamo a while de nuevo
  19.  
  20.  
  21. finwhile:
  22.  
  23. # Volvemos de la función
  24.     jr $ra
  25.     nop
  26.  

Al macenar la salida es como lo he puesto antes, pero en vez de jal, j porque no necesito almacenar la direccion de salto.

Código: ASM
  1.  
  2. decodificar:
  3.  
  4.     la $a0,encode1
  5.     la $a1,encode2
  6.     la $a3,decode
  7.  
  8. while2:
  9.  
  10.     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo
  11.     lbu $a3,0($a0)             #cargo el caracter en decode
  12.     addiu $a3,$a3,1            #avanzo el puntero decode
  13.     addiu $a1,$a1,-1           #a1-1 #le resto 1 al primer numero
  14.     bnez $a1,while2            #repito el while2 si $a1 es distinto de 0
  15.  
  16.     #avanzo todos los punteros
  17.     addiu $a3,$a3,1
  18.     addiu $a0,$a0,1
  19.     addiu $a1,$a1,1
  20.  
  21.     j while2
  22.    
  23.  
  24.  
  25. finwhile2:
  26.  
  27. # Volvemos de la función
  28.     jr $ra
  29.     nop
  30.  

Y luego para decodificar, pues directamente, si el puntero a la matriz de caracter es el de final de cadena, acabo, si no, lo que hago es decrementar el primer numero de la matriz de numeros, y meter el caracter en la matriz final, avanzo el puntero de la matriz final, y vuelvo a hacer el while. Asi hasta que sea 0, entonces avanzo todos los punteros y otra vez a empezar.

Como te he dicho antes, obviamente no funciona, pero creo que la idea es esa, y creo que van por ahi los tiros, creo que no debo de tener fallos muy gordos, o al menos eso espero. Tu como lo ves?

Salu2

PD: luego me mandas tu direccion por privado, a la que quieres que te envie el jamon,  :lol:

25
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Viernes 12 de Junio de 2009, 09:41 »
Por cierto para almacenar en encode la salida final, he hecho algo así:

Código: ASM
  1. almacenar_salida:
  2.     sb encode1,0($a0)
  3.     sb encode2,0($a1)
  4.     sb encode,0($a3)
  5.  
  6. while:
  7.  
  8.     beq $a0, $zero, finwhile    #si es el caracter vacio acabo
  9.     lbu $a3,0($a1)              #cargo el primer numero en encode
  10.     addiu $a3,$a3,1             #avanzo el puntero de encode
  11.     lbu $a3,0($a0)              #cargo el caracter en encode
  12.  
  13.     #avanzo todos los punteros
  14.     addiu $a3,$a3,1
  15.     addiu $a2,$a2,1
  16.     addiu $a1,$a1,1
  17.  
  18.     jal while                   #llamo a while de nuevo
  19.  
  20.  
  21. finwhile:
  22.  
  23. # Volvemos de la función
  24.     jr $ra
  25.     nop
  26.  

Que te parece?

Salu2

Edito: para almacenar la direccion hay que usar esto que se me habia pasado:

Código: ASM
  1. almacenar_salida:
  2.     la $a0,encode1
  3.     la $a1,encode2
  4.     la $a3,encode
  5.  

Páginas: [1] 2 3 ... 5