Hola spire233, así te debería quedar el programa, consejos:
Cuando realices un programa, pues trata de hacerlo lo más claro posible y organizado, como el del ejemplo que te paso, de lo contrario, cuando tus programas sean largos tendrás muchísimos problemas para desarrollarlos.
Cuando configures un registro, cualquiera que sea, verifica en que banco de memoria se encuentra y antes de cargarle los datos selecciona el banco adecuado. Acuérdate que no todos los registros están en el banco 0.
Prueba este programita:
LIST P = 16F877A
INCLUDE <P16F877A.INC>
ERRORLEVEL -302
__CONFIG _XT_OSC&_WDT_OFF&_PWRTE_OFF&_BODEN_OFF&_LVP_OFF&_CPD_OFF&_WRT_OFF&_DEBUG_OFF&_CP_ALL
;-----------------------------------------------------------------------------------------------------------
Definición de la RAM
cblock .32
WWW ;Para guardar el estado del registro W
ESTADO ;Para guardar el estado del registro STATUS
endc
;-----------------------------------------------------------------------------------------------------------
ORG 0
bcf STATUS,RP0 ;Selecciono el banco 0
bcf STATUS,RP1
goto INICIO
;-----------------------------------------------------------------------------------------------------------
INICIO ;Inicio del programa principal
clrwdt ;Borro el watchdog
clrf PORTA ;Borro los puertos
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
bsf STATUS,RP0 ;Banco 1
movlw B'00000110' ;Todas salidas/entradas digitales
movwf ADCON1
movlw B'11111111' ;Configuro el puerto A, todo como estrada
movwf TRISA
movlw B'00000000' ;Configuro el puerto B, todo como salida
movwf TRISB
movlw B'11111111' ;Configuro el puerto C
movwf TRISC
movlw B'11111111' ;Configuro el puerto D
movwf TRISD
movlw B'11111111' ;Configuro el puerto E
movwf TRISE
bcf STATUS,RP0 ;Banco 0
clrf ADCON0 ;Convertidores A/D desactivados
INICIAL
movf PORTA,W
movwf PORTB
goto INICIAL
;-----------------------------------------------------------------------------------------------------------
End
También debes acordarte, a la hora de simularlo o probarlo, que el puerto A solo dispone de 6 pines, del RA0 al RA5, por lo que no llenarás todas las salidas del puerto B.
juaperser1, si bien es posible hacerlo como tu comentas, pues como lo hace spire233 también es factible, aparte de que tiene ciertas ventajas, como la de usar menos memoria y no tener que definir cada macro.
Espero sea de ayuda, un saludo.
Atte. CARLOS.