Programación General > ASM (Ensamblador)

 RLE en ensamblador MIPS

<< < (14/17) > >>

m0skit0:
En


--- Código: Text ---    add $a0,$zero,$s1  #El carácter en $a0    jal almacenar     # Llamamos a la función almacenar()    add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1 Ten en cuenta que $v0 lleva el número de caracteres repetidos tras el primero leído, por tanto el número de caracteres iguales es $v0 + 1.

manurodri189:
Corregido de la siguiente maner:


--- Código: ASM ---add $a0,$zero,$s1  #El carácter en $a0    jal almacenar     # Llamamos a la función almacenar()    addiu $v0,$v0,1    #sumamos 1 a v0    add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1 
Tiene que haber más errores. porque sucede lo mismo. Muchas gracias de verdad.

Salu2

m0skit0:

--- Cita de: "manurodri189" ---Corregido de la siguiente maner:
--- Fin de la cita ---
:huh: Mal again: add $a1,$zero,$v0 no se ejecuta antes de saltar a la función, sino una vez ejecutada...  <_<


--- Cita de: "manurodri189" ---Tiene que haber más errores
--- Fin de la cita ---
Sí, hay unos cuantos, pero sinceramente no te voy a hacer todo y me estoy cansando un poco... La de codificar funciona, así que vuelve a mirar las funciones que has hecho, sobre todo la de decodificar. Sólo tiene que hacer el proceso inverso a codificar, así que es sencillo. La vas a tener que hacer tú solito :brickwall:

PD: repites siempre los mismos errores, concéntrate en lo que haces y déjate de prisas  ;)

manurodri189:
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 ---add $a0,$zero,$s1  #El carácter en $a0    addiu $v0,$v0,1    #sumamos 1 a v0    jal almacenar     # Llamamos a la función almacenar()    add $a1,$zero,$v0  # Ponemos el número de caracteres en $a1 
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 ---almacenar_salida:    la $a0,encode1    la $a1,encode2    la $a3,encode while:     beq $a0,$zero,finwhile    #si es el caracter vacio acabo    nop    lbu $a3,0($a1)              #cargo el primer numero en encode    addiu $a3,$a3,1             #avanzo el puntero de encode    lbu $a3,0($a0)              #cargo el caracter en encode     #avanzo todos los punteros    addiu $a3,$a3,1    addiu $a0,$a0,1    addiu $a1,$a1,1     b while                   #llamo a while de nuevo finwhile: # Volvemos de la función    jr $ra    nop 
Y en decodificar lo mismo.


--- Código: ASM ---decodificar:     la $a0,encode1    la $a1,encode2    la $a3,decode while2:     beq $a0,$zero,finwhile2    #si es el caracter vacio acabo    nop    lbu $a3,0($a0)             #cargo el caracter en decode    addiu $a3,$a3,1            #avanzo el puntero decode    addiu $a1,$a1,-1           #a1-1 #le resto 1 al primer numero    bnez $a1,while2            #repito el while2 si $a1 es distinto de 0    nop        #avanzo todos los punteros    addiu $a3,$a3,1    addiu $a0,$a0,1    addiu $a1,$a1,1     b while2 finwhile2: # Volvemos de la función    jr $ra    nop 
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.

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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa