Hola amigos del foro.
Estoy empapándome todo lo que puedo con la programación en ensamblador, ya que llevo cerca de 2 años programando en CCS y ha habido ocasiones en que su presición no me ha sido suficiente.
Por ahora estoy con las interrupciones, y me surge una duda que expongo a continuación:
He notado en infinidad de códigos que los programadores ponen los siguientes vectores: ORG 0, ORG 4 y ORG 5, por lo que me he documentado, comprendo que cuando el programa necesita transladarse a una zona del programa como después de un reset (ORG 0), o durante una interrupción (ORG 4), busca su vector correspondiente, estoy en lo correcto?, por lo tanto me surgen 2 dudas, en qué momento o parte de un programa es necesario un ORG 5?, suponiendo que se coloca para dejar intacto el vector de interrupciones, por que he notado que los programadores hacen esto:
org 0x00 ; Aqui comienza el micro.-
goto Inicio ; Salto a inicio de mi programa.-
;**** Vector de Interrupcion ****
org 0x04 ; Atiendo Interrupcion.-
goto ISR
; **** Programa Principal ****
;**** Configuracion de puertos ***
org 0x05 ; Origen del codigo de programa.-
Inicio
Con mi razonamiento llego a la conclusión de que linealmente, el programa nunca pasará por org 0x05, debido a que en el reset salta Inicio y en la interrupcion salta a ISR, por lo que la única forma de llegar allí es por medio de una condicion equivalente al reset y la interrupción, esto es correcto?, alguien sabe cuál es dicha condición?
La otra duda que tengo es que durante un reset, el PC (program counter) se pone en 0, y se dirige a ORG 0x00, para comenzar a ejecutar normalmente las instrucciones e incrementar el CP en cada una, bien, mi duda es, cuando pasa por la dirección 0x04, que pasa aquí entonces?, no hay confusión con el vector de interrupción? o simplemente se salta este vector?, he tratado de ver la secuencia de inicio en el MPlab Sim, pero cuando inicia el programa, lo hace directamente en inicio, y el CP ya vale 10, asi que no tengo idea de lo que sucede en ese instante.
Y por último, hay otros vectores a parte de estos que deba conocer?
Disculpenme por debrayarme tanto, pero estas dudas no me dejan avanzar, y agradezco por adelantado la atención y el tiempo que me pudiesen dedicar.