TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Picolson en 15 de Julio de 2008, 01:28:33

Título: Desamblar código *.hex
Publicado por: Picolson en 15 de Julio de 2008, 01:28:33
Hola:

Aquí tengo un código que hice muy pequeño.
He intentado desamblar alguno pero grande y no soy capaz de saber que PIC usa, ni configuración, sólo las instrucciones.

Los dejo aquí el código que hice muy pequeño a ver si alguien sabe desamblarlo y hacerlo funcionar en el MPLAB, lo he probado con v8.14. Al menos saber que hace este programa que hice.
Código: [Seleccionar]
:020000040000FA
:1000000083168601FF308500831286018501051C59
:0E0010000C28061386170728061786130728E4
:02400E00F13F80
:00000001FF

Saludos.
Título: Re: Desamblar código *.hex
Publicado por: todopic en 15 de Julio de 2008, 01:45:03
Aquí tengo un código que hice muy pequeño.
 Al menos saber que hace este programa que hice.

que es?, un desafio?, como es eso de que haces un programa y no sabes que hace?

no entiendo que es lo que buscas?

  bsf     0x03 , 5
    clrf    0x06
    movlw   0xFF
    movwf   0x05
    bcf     0x03 , 5
    clrf    0x06
    clrf    0x05
    btfss   0x05 , 0
    goto    0x0C
    bcf     0x06 , 6
    bsf     0x06 , 7
    goto    0x07
    bsf     0x06 , 6
    bcf     0x06 , 7
    goto    0x07
Título: Re: Desamblar código *.hex
Publicado por: Picolson en 15 de Julio de 2008, 02:04:37
Hola, me he explicado mal.

Hice un programa que entiendo, pero doy por hecho que no lo he visto nunca con el motivo de cómo averiguar el código que eso por lo menos si se, pero no la configuración de code proted, etc...ni el pic exacto. Es para saber cómo resuelven ese problema. Digamos, para descompilarlo bien y meter el código que sirva en el MPLAB. Lo que has descompilado está bien pero incompleto, ya que si intentas meter eso así sin saber que PIC usas, pues...

Lo que quiero es aprender como hacerlo.

Gracias.
Título: Re: Desamblar código *.hex
Publicado por: Modulay en 15 de Julio de 2008, 14:35:06
Si el code protect está activado (cosa problable si quieres leer programa en pic ajeno) no podrás leer ni código,ni fuses,ni nada.
En caso contrario,los fuses los puedes localizar en posiciones de memoria concretas que puedes consultar en el datasheet del micro.
Título: Re: Desamblar código *.hex
Publicado por: Cryn en 15 de Julio de 2008, 14:59:13
si el programa es tan corto y lo haz hecho tu, porque no intentas hacerlo nuevamente?

pero bueno, el winpic puede hacer ese truco, pero nose si es tan a ciegas y hasta sin saber para que pic es, porque cuando cargas el .hex, puedes ver el .asm en una de las ventanas.
Título: Re: Desamblar código *.hex
Publicado por: RedPic en 15 de Julio de 2008, 17:44:18
Uy, uy, uy.
Título: Re: Desamblar código *.hex
Publicado por: jfh900 en 15 de Julio de 2008, 22:29:40
Cuando descompilas un programa obtienes información sobre el programa, pero para poderlo descompilar correctamente necesitas saber el tipo de micro que es, ya que si no te puede dar errores al decompilarlo (te encuentras con instrucciones que no son soportadas por el micro que creías). Pero lo que tienes que tener claro es que de forma directa no puedes saber el micro y los fuses a partir del código ensamblado.

Un saludo
Título: Re: Desamblar código *.hex
Publicado por: Picolson en 16 de Julio de 2008, 03:17:15
¿Aquí no te dirá algo de Fuse o configuración por casualidad? 

 
Código: ASM
  1. ORG 0x2000       ; ID
  2.  
  3.        Data   0x3FFF
  4.        Data   0x3FFF
  5.        Data   0x3FFF
  6.        Data   0x3FFF
  7.  
  8.      ORG 0x2007       ; CONFIG
  9.  
  10.        Data   0x3FF1

En el Hex está el CD, WDT, PWRT, oscilador, etc porque a parte que lo he comprobado cargando los pic, se coloca en la configuración donde lo había guardado en los ic-prog por ejemplo.



He encontrado algo, espero que de paso os sirva de algo.

http://www.geocities.com/dinceraydin/pic/djdasm/djdasm.html

Título: Re: Desamblar código *.hex
Publicado por: BrunoF en 16 de Julio de 2008, 04:03:06
Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.

Título: Re: Desamblar código *.hex
Publicado por: Picolson en 16 de Julio de 2008, 07:39:23
Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.



Hola Uy, uy , uy:

La verdad es que si y también una pena, porque así no hacemos casi nada, solo investigar.

Este PIC es el popular de siempre, 16F84A
Título: Re: Desamblar código *.hex
Publicado por: todopic en 16 de Julio de 2008, 15:40:20
Ok a los comentarios, ok a los fuses, yo lo que hice, fue levantar el .HEX con el winpic 800, pero cargué a mano y "supuse"  que era un F84, ya que como dice Bruno, el "tipo" de micro, no esta especificado en el .hex, y en la pagina que nos colocas el link dice claro "Dincer's JavaScript PIC Disassembler for 16F84 v1.02"

cuando en el winpic ingrese a la ventana de wdt, osc , code protec etc... estos están seteados segán tu hex...  :-/

pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa  :mrgreen:

Un abrazo

Norberto
Título: Re: Desamblar código *.hex
Publicado por: Picolson en 17 de Julio de 2008, 01:25:33
pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa 

Lo único son los PIC que no dicen que son, los fuses si los guardas.
Título: Re: Desamblar código *.hex
Publicado por: Leon Pic en 05 de Agosto de 2008, 09:03:47
Si el code protect está activado (cosa problable si quieres leer programa en pic ajeno) no podrás leer ni código,ni fuses,ni nada.
En caso contrario,los fuses los puedes localizar en posiciones de memoria concretas que puedes consultar en el datasheet del micro.

Cuando descompilas un programa obtienes información sobre el programa, pero para poderlo descompilar correctamente necesitas saber el tipo de micro que es, ya que si no te puede dar errores al decompilarlo (te encuentras con instrucciones que no son soportadas por el micro que creías). Pero lo que tienes que tener claro es que de forma directa no puedes saber el micro y los fuses a partir del código ensamblado.

Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.

Ok a los comentarios, ok a los fuses, yo lo que hice, fue levantar el .HEX con el winpic 800, pero cargué a mano y "supuse"  que era un F84, ya que como dice Bruno, el "tipo" de micro, no esta especificado en el .hex, y en la pagina que nos colocas el link dice claro "Dincer's JavaScript PIC Disassembler for 16F84 v1.02"

cuando en el winpic ingrese a la ventana de wdt, osc , code protec etc... estos están seteados segán tu hex...  :-/

pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa  :mrgreen:

Te lo voy a repetir una vez más, por si no entendiste.

En la palabra de CONFIGURACION, no se guarda para que tipo de micro es el programa. ¿No nos crees?, fijate el datasheet de cualquier PIC, y fijate si se puede guardar el tipo de PIC.

La palabra de configuración, solo trae la configuración del micro, si trabajas con oscilador interno o no, que tipo de oscilador, si trabajas con el MCLR o no, etc. Wue irán variando según el pic. Y como te dijeron, si no sabes de que pic es el programa, no te sirve para nada descompilrlo.