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. |
Cita:
Cita:
Cita:
Igual gracias por la oferta. De todas maneras, mi idea fue corregir algo que estaba mal planteado para no seguir mareando al amigo que pregunto y es básico para comprender el funcionamiento de un puerto en un PIC le estaba explicando al amigo como se configura la dirección de las líneas. De eso si se como para hablar un rato. ;) Saludos |
Cita:
Lee el post #19 de este hilo y dime a quien le escribistes? Pence que se podia hablar contigo, despues de la breve charla de esta noche.Veo que lo que en realidad es de la prehistoria es esa fijacion que tienes de creerte "Tarzan cuando en realidad no llegas ni a la mona Chita." :D:D:D Llegaras lejos aqui en este foro y no soy brujo.;) PD:Te veo mas comemierda esta noche que ayer.;) y te dejo que estoy trabajando. Un Saludito. |
Cita:
Me pone condiciones para probar si se de algo o no y que si lo se hablamos, que risa por favor, ubíquese hombre que si eso no es creerse Tarzán entonces no se que es.. por favor.. aprenda a respetar. Ya ni se si vale la pena contestar para otra vez aburrir a la gente. Que la persona que pregunto tome la parte técnica que le pase si le sirve. Del resto no entiendo que problema tiene este señor que cuando lo corrigen al estar equivocado en algo se ofusca. |
Cita:
Eres un fenomeno digno de estudiar.No se si podre hacer ajustes en mi agenda para hacerlo.:cool: |
Cita:
MOVLW Description: The eight-bit literal 'k' is loaded into W register. MOVWF Description: Move data from W register to register 'F'. W = Working register (accumulator) |
Cita:
|
Tranquis...
|
Cita:
PD:Ahora te dejo que tengo que destapar un fosil con unos 8051 pre-historicos a ver si resuelvo algo. Un Saludo. |
Cita:
No se si recién comienzas con pics, si es así te dejo revisa este libro excelente de la empresa mikroe. Saludos. |
Cita:
Como no me gusta dejar algo sin terminar(pues hacemos la tareita) 0011 0000 =30 1000 1001 =89 1111 1101 =FD tenemos 30 89 FD 30=JNB Function: Jump if Bit Not set. 89 es el bit RI este bit nos deja saber cuando un byte a sido recibido en el serial port. Set by hardware (1) clear by software (0). entonces tenemos. 30 89 FD JNB RI,FD donde FD es la distancia a donde mandamos el "JUMP IF NOT SET" Este byte es ignorado por los programadores, pues se supone que es la tarea del copilador.Pero cuando se programa sin ayuda de un copilador (entrando hex directo en las address de un uC se tiene que conocer esta metrica.) XX XX XX 30 89 FD FC FD FE FF En el lugar que se encuentre si nos desplazamos a la izquierda decimos que estamos en FF y si nos desplazamos a la derecha entonces decimos que estamos en 00 30 89 FD --->01 02 03 04 05 etc. FA FB FC FD FE FF <-------- FD en la practica se remplaza por el nombre de una rutina: GetChar: JNB RI,GetChar Tareita terminada.;) Un Saludo. |
Me ha servido las ayudas. Veo que maneja mucho el 8051, está bien para aprender a manejar otros micros.
|
La franja horaria es GMT +2. Ahora son las 23:26:26. |
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