El vector de reset se encuentra en 0x00 del PIC. Asi que cuando arranca va a esa direccion ( es decir el PC - Program Counter tiene el valor de 0x00 )
Vos con tu ORG 0
Estas diciendo que las instrucciones que le siguen a ese ORG estenes comienzen a ponerse en 0x00, disculpa que escriba en hexa pero es la costumbre.
Uno de los casos que usas esto es para cuando tenes una interrupcion, en ese caso el vector de interrupcion esta en 0x04 en ese PIC. Y tu codigo seria algo asi:
ORG 0x00
GOTO INICIO
ORG 0x04
GOTO INTERRUPCION
INICIO
BCF STATUS,C ; Instrucion de ejemplo nomas
;Aca configuro todo
MAIN
; Programa principal
INTERRUPCION
; Codigo que se ejecuta al producirse la interrupcion, ya que fue al vector 0x04 y ahi hay un GOTO INTERRUPCION.
El compilador va ubicar las instrucciones como mejor le quede.
0x00 - va a tener el GOTO INICIO
0x01 a 0x03 - no se grabo nada, como es una FLASH queda con un valor de 0x3FF ( es de 12 bits) los opcode te da que esos quedan con un ADDLW 0xFF pero que nunca se van a ejecutar gracias al GOTO de antes
0x04 - GOTO INTERRUPCION
0x05 - Primer insrtuccion de INICIO : BCF STATUS,C
De ahi para adelante todo lo demas
Hay gente que hace esto:
ORG 0x00
GOTO INICIO
ORG 0x04
GOTO INTERRUPCION
ORG 0x05
INICIO
BCF STATUS,C ; Instrucion de ejemplo nomas
;Aca configuro todo
Esta bien, y es lo mismo, PERO no lo aconsejo, no hay diferencia EN ESTE PIC. Pero si vamos a un PIC18F los GOTO/CALL etc ocupan 2 posiciones de memoria (tambien cambian los valores de los vectores de interrupcion pero eso no influye)
Entonces el GOTO de 0x04 ocupa tambien el lugar 0x05, pero luego vos en 0x05 estas escribiendo un BCF. Y eso es un problema.
Solucion final: Dejalo que lo acomode solo el compilador.
Y a que vino toda esta explicacion ?
A lo que me referia es al momento de obtener el archivo .HEX, que cuando lo genero la flecha verde apunta a la instrucción BSF debajo de la de ORG 0, es decir que, si despues de generar el .HEX lo que apunta la flecha verde es la primera instrucción que se ejecutara cuando se prenda el micro ya con el programa quemado.
Exactamente, ese BSF es la primera instruccion que se ejecuta por eso se para ahi.
Pero no hay necesidad de "simularlo" para generar el .hex, hay otro boton que te permite compilarlo sin necesidad de simularlo, y por lo tanto no te apareceria la flecha verde

. En fin hacerlo de una forma u otra lo unico que podes ganar es un poco de tiempo y que no debe ser mucho.
Con respecto a las variables y que dije que no se definen asi el tema es un poco mas profundo y ya tenemos que hablar del linker / espacios de memoria, etc. hay un post por ahi que trato ese tema.
http://www.todopic.com.ar/foros/index.php?topic=44514.0Igual todo esto si queres complicarte la vida un poco mas, podes seguir siendo feliz y utilizar el cblock normalmente, especialmente en el MPLAB v8.xx