Yo he usado mucho el pic 16f877 y su convertidor analogico digital y al ver tu programa no se le ve ningun error, este programa que te pongo aqui es uno que ya esta probado y ha funcionado, La parte de la conversion, si la revisas es casi identica a la tuya solo que nosotros no le pusimos esos NOP (no creo que eso sea pero deberias probar quitandolos).
Lo que yo creo es que talvez la direccion de algun registro este mal, o no te entiende cosas como poner B'10000001' o algun detallito asi
proba con este programa que te pongo aqui (sin modificarle nada a ver que tal??)
;***********************************************************
; ADT.ASM
;***********************************************************
LIST p=16F877 ; indica el modelo de PIC
#include "P16F877.INC" ; archivo de encabezado
portb equ 0x06 ;Define el puerto b como salida fisica
trisb equ 0x06 ;Define la dirección del registro de direccion TRISB
status equ 0x03 ;Define la dirección del registro de estado
adresh equ 0x1e ;Registro de datos del convertidor A/D (Parte alta)
adcon0 equ 0x1f ;Registro 0 de control y estado del convertidor A/D
adcon1 equ 0x1f ;Registro 1 de control y estado del convertidor A/D
rp0 equ 5 ;Bits del registro de estado para cambiar de banco de memoria de datos
w equ 0 ;destino de la operacion registro w
ORG 0
movlw 00 ;Pone el valor de 00 en el registro de trabajo
bsf status,rp0 ;Apunta al banco 1
movwf trisb ;Se configura el puerto b como salida
clrf adcon1 ;Se configura que los datos de la conversion estaran justificados a la izquierda
;y se trabajara con las referencias de la fuente primaria de alimentacion (Vdd=6v)
bcf status,rp0 ;Apunta al banco 0
movlw 0x81 ;Activamos el convertidor A/D, seleccionamos el canal 0 para la conversion
movwf adcon0 ;y configuramos la sincronia del convertidor a su valor maximo (Fosc/32=625Khz)
conver: bsf adcon0,2 ;Iniciamos la conversion para leer el ATD
check: btfsc adcon0,2 ;Verificamos la conversion completa si ya se completo salte de lo contrario repita
goto check
movf adresh,w
movwf portb
goto conver ;Repita el proceso para leer un nuevo valor del atd
END
Espero que te funcione
si te funciona o no por favor avisame
adios