Cuando un programa funciona en debug, y no lo hace sin debug, suele ser porque están mal definidos los fuses, normalmente el relacionado con el modo de funcionamiento del oscilador.
Yo hace "mil años" que no uso el ensamblador, un lenguaje inhumano y de muy díficil lectura, que no recomendaría ni al peor de mis enemigos, pero es que tú aún lo haces más ilegible, al definir los fuses en binario, cuando podrías usar las definiciones que tienes en el .INC, y poner algo del estilo:
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
(Ojo, que no digo que esta sea la traducción de tu binario, es solo un ejemplo para hacer el código más legible)
En el p16f877.inc tienes todas las deficiones para los fuses
;==========================================================================
;
; Configuration Bits
;
;==========================================================================
_CP_ALL EQU H'0FCF'
_CP_HALF EQU H'1FDF'
_CP_UPPER_256 EQU H'2FEF'
_CP_OFF EQU H'3FFF'
_DEBUG_ON EQU H'37FF'
_DEBUG_OFF EQU H'3FFF'
_WRT_ENABLE_ON EQU H'3FFF'
_WRT_ENABLE_OFF EQU H'3DFF'
_CPD_ON EQU H'3EFF'
_CPD_OFF EQU H'3FFF'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'