Hola, espero te sirva este ejemplo para corregir ese tipo de errores.
El code no tiene nada de dificultad. Puede compilarlo para cualquier modelo de PIC, solo cambia, en el renglon que dice LIST P=16Fxxx, por ejemplo P=16F873.
Y en donde dice INCLUDE <P16Fxxx.INC> por la libreria del PIC que vas a utilizar. Ejemplo: INCLUDE <P16F873.INI>.
El error que te genera puede deberse a que no indicas donde esta el vector de RESET, yo por ejemplo utilizo esto: RESET ORG 0x00 , goto INICIO y ORG 0x05.
El CP, WDT, PWRTE y el OSCilator los configuro por software en esta palabra de control: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
Y siempre me cambio del Banco 0 al Banco 1. Estoy a tus órdenes. Atte. alekspm.
;Se han conectado 2 pulsadores en RA1 y RA2 hacia GND con una resistencia de 10k hacia Vcc.
;En RB0 y RB1 se conectan dos LEDs. El programa debe mostrar cuándo el valor lógico que
;introducen ambos pulsadores= 0. Para ello, si ambos pulsadores introducen un 0, los LEDs
;deben encenderse, y en los demás casos permanecen apagados.
LIST P=16Fxxx ;Se indica el tipo de procesador
RADIX HEX ;Sistema de numeración, todo en hexadecimal
INCLUDE <P16Fxxx.INC> ;Definición de registros internos en una librería
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
RESET ORG 0x00 ;Inicio en el vector de RESET
goto INICIO ;Salta a la primera instrucción del programa
ORG 0x05 ;Salta el vector de interrupción
INICIO bsf STATUS, RP0 ;Cambio la banco 1
bcf STATUS, RP1
clrf TRISB ;Puerta B como salida
movlw b'00000110' ;Puerta A como E/S digitales
movwf ADCON1
movlw b'00000110' ;RA1 y RA2 como entradas
movwf TRISA
bcf STATUS, RP0 ;Cambio al banco 0
clrf PORTB ;Borrado de LEDs
clrf PORTA ;Borrado de líneas no utilizadas en puerta A
BUCLE movf PORTA, W
btfss STATUS, Z ;Comprobación de Z= 1
goto APAGAR ;Si RA1 y RA2= 1
goto ENCENDER ;Si RA1 y RA2= 0
APAGAR clrf PORTB ;Se apagan los LEDs
goto BUCLE ;Para volver a comprobar
ENCENDER movlw 0x03 ;Se encienden los LEDs en RB0 y RB1
movwf PORTB
goto BUCLE ;Para volver a comprobar
END