Bueno, y eso es todo por hoy. Espero que os aproveche. :mrgreen:
Me ha venido DE MARAVILLAS. Puedo leer los malditos HEX, y hasta me he hecho un primitivo "descompilador" que genera de nuevo el código ASM original (o casi, los nombres de las etiquetas y demas son irrecuperables).
Pero....me ha surgido un problemita.... :(
La linea que esta marcada en la siguiente imagen tiene como dir de memoria.....16398 en decimal...Como puede ser?
(http://www.ucontrol.com.ar/forosmf/programacion-en-asm/formato-de-los-archivos-hex/?action=dlattach;attach=2368)
Yo razono de la siguiente manera, tal como explicaste en el primer post: en cada linea, los ":" indican que son datos. Los dos digitos siguientes la cantida de datos (02 en este caso). Los 4 siguientes la dir de memoria (400E en este caso, 16398 en decimal), "00" es que es una linea de datos de memoria, el "703F" son los dos bytes que efectivamente hay que "meter" en la memoria del PIC, y finalmente, dos digitos mas son el checksum ("01" en este caso).
Obviemente, cuando el programa intenta cargar esa linea, se va al demonio. :oops:
¿Que puede estar pasando?
No entiendo NADA de ASM, pero en algunos HEX que que abierto, hay "huecos".
Por ejemplo, en el que postee antes, hay 4 o 5bytes en blanco. La razon? Hay una rutina de interrupcion o algo asi al principio del programa, que empieza con un "GOTO xxx" para saltearla. El "salto" es mas largo de lo necesario (seguramente previendo que esa rutina sea alguna vez mas larga), entonces quedan espacios en blanco.
No estoy seguro, pero en este trozo de código, si mal no recuerdo
;**** Inicio del Micro ****
org 0x00
goto Inicio
org 0x04
nop
retfie
Inicio
clrw
clrf PORTA
clrf PORTB
bsf STATUS,RP0
clrf TRISA
clrf TRISB
bcf STATUS,RP0
...
...
...
pasaba algo asi. El hex correspondiente
:020000040000FA
:020000000628D0
:0800080000000900030185015D
:1000100086018316850186018312AA30A000A107FC
:10002000A0052109A003A10AA004A102A00EA10617
:10003000A00DA10C05181A282120851D1A2828209A
:100040001A28061406160000061006120000080002
:02005000CC34AE
:02400E00703F01
:00000001FF
No tiene informacion para los Bytes 1 al cuatro inclusive:
(http://www.ucontrol.com.ar/forosmf/programacion-en-visual-basic/simupic-un-simulador-de-pics-para-linux/?action=dlattach;attach=2374)
¿Podrá ser eso? :shock: