Desamblar código *.hex
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:
:020000040000FA |
Cita:
En la primera linea tenamos dos bytes de data: :02 address 0000 04 extended linear address y 00 00 son los dos bytes de data en BCI51 esto es hacer nada. 00 hacer nada. ???? :10 aqui nos dice que tenemos 16 bytes de data y que comenzara a estar localizada en el address 0000 algo raro pues esa address en la linea anterior esta ocupada ?? 00 esto es data record a partir del address (0000) esta es la data > 83 16 86 01 FF 30 85 00 83 12 86 01 85 01 05 1C estos son los 16 bytes de data validos es la segunda linea. A la tarde cuando llegue a la casa terminare de explicarte que veo en ese codigo y que hace en realidad eso. Un Saludo. |
Ok, esperaré, lo que no se es como sabes lo que dices por la cara.
|
Cita:
Un Saludo. |
|
Hola REHome, Esto es lo que contiene ese intelhex en data a programar:
:020000040000FA :1000000083168601FF308500831286018501051C59 :0E0010000C28061386170728061786130728E4 :02400E00F13F80 :00000001FF Primera Linea: Address 0000 Data 00 0001 00 // a esto no le veo sentido:confused: Segunda Linea: Address 0000 Data 83 0001 16 0002 86 0003 01 0004 FF 0005 30 0006 85 0007 00 0008 83 0009 12 000A 86 000B 01 000C 85 000D 01 000E 05 000F 1C Tercera Linea: Address 0010 Data 0C 0011 28 0012 06 0013 13 0014 86 0015 17 0016 07 0017 28 0018 06 0019 17 001A 86 001B 13 001C 07 001D 28 Cuarta Linea: Address 400E Data F1 400F 3F La ultima linea es "End of line", no tiene valor en data a programar. Para que tipo de uC fue creado este file, no tengo idea.Pero puedes estar seguro que no es BCI-51. Por lo cual no te puedo ayudar en eso.Solo trabajo la familia 8051 y sus parientes.;) Si me dices como generastes este file, a lo mejor te puedo ayudar un poco mas. Un Saludo. |
Lo generé del PIC 16F84A con el MPLAB v8.14
|
Cita:
Pero no esta complicado, ya que segun tengo entendido ese chip solo trae 35 instruciones.Es cosa de obtener el instruction set para ese chip. Un Saludo. PD: El intelhex formato es igual para todos los chips, es unica su metrica.pero a la hora de interpretarla un chip, pues tiene que estar escrita para el. |
OK aqui tienes la informacion para poder interpretar ese opcode.
PIC 16F84A. En la pagina #36 de ese documento estan las 35 instruciones de ese chip. Si te fijas el 16F84A es un chip que funciona con 14 bits de instruciones.Yo la verdad es la primera vez que miro la informacion de este PIC y se me hace curioso.;) No se porque quieres ir por la forma mas dificil de interpretar ese code, tienen que existir descompilador para ese chip.de todas formas el codigo no es muy grande y se puede hacer byte por byte. PD: a ver si entra algun amigo que trabaje estos PIC y te hecha una mano con ese codigo. Un Saludo. |
Hola amigo, la verdad que busqué algo para descompilarno sin comlicarte la vida y salió esto.
Código:
bsf status,rp0 ; switch to bank 1 http://www.geocities.com/dinceraydin...sm/djdasm.html Para que lo sepan. ¿Entiendes este asm? Seguro que algo si. con esto controla cualquier periférico. Saludos. |
Hola REHome, El codigo para los PIC es completamente diferente a los uC que yo trabajo y si algo puedo entender en este codigo.El otro dia estube dandole una miradita a las instruciones del 16F84A y a pesar de solo usar 35 instruciones es algo engorroza la configuracion de los mismos.
Aqui estan los instruction codes del 8051 para que tengas una idea lo diferente que son y a pesar de que son 256 instruciones, estan configuradas en forma tal que no es dificil trabajarlas y entenderlas. Un Saludo. |
Hola mi muy distinguido amigo:
Gracias por el Links http://www.win.tue.nl/~aeb/comp/8051/set8051.html Dices que los pobres sólos 35 instrucciones son engorrosas y ese enlace veo que es más engorroso. Este PIC de de gama media de 8 Bits, las de Gama alta son de 77 + (hasta 84 con instrucciones especiales para cada PIC), los la serie 18F, las de 32 Bits mejor ni nombrarlas, las instrucciones son diferentes hasta los nombres y forma de programar. Voy echar un vistazo ese enlace. Saludos. |
Hola REHome, usando ese programita del link que proporcionas y tu intelhex:
Cita:
Lo que decia de la primera line que no le encontraba sentido, se pierde ( no deja rastro en el codigo final);) Esta buena esa web y pues una herramienta muy util a los 16F84A. Un Saludo. |
Cita:
Los instruction codes para el 8051 tu los vez mas engorrosos y es lo que me pasa si trato de leer algo escrito en Chino(como es el caso de los PIC, no quiere decir que porque yo no entienda ese idioma es feo o no es bueno, simplemente que no puedo entender lo que no se.)Pero el codigo del 8051 a pesar de ser 256 funciones diferentes ,unas de ellas de 8 bits, 16 bits y 24 bits.Estan escritas en forma directa y usas todos los bits de un byte de instrucion.esto no pasa en el caso del 16F84A que no todos los bits de una instrucion son usados.Yo puedo ver un intelhex file escrito para un 8051 y sin la ayuda de un programa, pasarlo a ASM sin mucho problema.Esto como decia no es una practica comun, pero tiene sus ventajas tu poder leer el idioma que finalmente interpretan los uC y es que mirando un HEX te puedes dar cuenta de algun error. Si algun dia incurcionas en los 8051 y sus parientes como lo son los Atmel 89xx te daras cuenta de lo que digo.;) Un Saludo. |
Los AVR de Atmel, PIC de Microchip, Motorola ahora Freescale, la verdad todos microcontroladores de diferentes tecnologías que pueden hacer lo mismo si lo deseas. Aunque hay unos mejores que otros.
El 16F84A es ya anticuado, si caso es mejor el 16F88 o 16F876 o 16F876 de gama media, los de gama alta 18F2550, 18F4550 están muy bien y preparados para lenguajes como el C. Los PIC se programa con un editor oficial gratuito, ahora ya por la v8.14, ahí puedes analizar el código paso por paso. Ah, la primera vez lo vi engorroso y nunca pensaba que iba a manejar los PIC porque me parecían verdaderamente complicados, pero estudiando con un buen libro www.pic16F84a.com entenderás que puedes hacer mil cosas, eso si, el 8051 es mejor, el 16F84 es para aprender a entender, después eliges lo que quieras. MPLAB por si siente curiosidad. |
Para que sepa como lo programé y d qué va.
Cita:
|
Cita:
En cuanto a que los 8051 son mejores, depende.Toda la línea de productos de mi emprea se maneja con PICS desde gama baja a alta y la calidad es excelente. Nunca tuvimos que reemplazar un pic a pesar de tener mas de 500 placas en la calle. Saludos. |
Cita:
Código PHP:
movwf PORTA // aqui mueves el contenido del acumulador (w) al puerto A, como dices pones el puerto A como entrada, al hacerle pullup interno al mismo. En un codigo para 8051 esto seria: MOV A, FFh o si lo deceas MOV A, b'11111111' es lo mismo pero en bin. MOV P0, A // aqui movemos el contenido del acumulador (A) al puerto 0 Ya te digo yo creo mis programas en asm y solo uso un copilador para generar mi file intelhex. La mayoria de las veces solo uso un notepad y salvo mi file en .asm luego al copilarlo genero el .hex Puede ser muy dificil para algunos y mirarce impocible para otros, es cuestion de practica.Yo creo una rutina en mi mente y la ruedo en ella, como si estubiera en un micro y si en mi mente funcionar, ten la seguridad de que en el micro rueda.;) Un Saludo. |
Cita:
Ambos estan en la misma posición del banco 0 y 1, entonces como bien muestra el código para modificar el registro de dirección de las líneas (si serán de entrada o salida) lo que haces es acceder al banco 1. Código:
bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1. Nada tiene que ver el pullup interno. Saludos. |
Cita:
eso mismo en codigo para un 8051 seria asi: MOV A, #FFh MOV PORT0, A Te podre una tareita si la contesta seguimos hablando de micros: Tarea: Usando instruciones para el 8051 creame el siguiente asm: 00110000 10001001 11111101 tienes tres bytes aqui con eso dime que asm se crearia en instruction opcode para un 8051? Si me contestas eso seguimos hablando de micros. Un Saludo. |
La franja horaria es GMT +2. Ahora son las 20:02:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi