ese codigo no hace lo que mencionas, solo copia lo que hay en un puerto y lo pone en el otro
Tiene razón copia el PORTA (5bits) y lo muestra en PORTB (8bits). Supongo que en tu circuito PORTA tiene un arreglo para enviar 1 (prendido) o 0 (apagado) esos los mostrará en PORTB, odio a los profes que no dan más que ejercicios si más explicación ni comentarios en el código. te recomiendo que leas el libro que citaron arriba, es muy bueno.
List p=16F84A ; indica el microcontrolador usado
INCLUDE <P16F84A.INC> ; archivo para indicar los alias de las direcciones de memoria
;
org 0x00 ; comienza el programa en la dirección hexadimal 0
goto Inicio ; va a la etiqueta inicio
org 0x05 ; vector de interrpción
Inicio clrf PORTB ; pone en ceros el puerto PORTB
bsf STATUS,RP0 ; cambia al banco 1 para definir entradas y salidas
clrf TRISB ; pone 0's en TRISB significa q PORTB = SALIDA 8 bits
movlw b'00011111' ;mueve un valor binario al registro de trabajo
movwf TRISA ; pone 1's en TRISA significa q PORTA = Entrada 5 bits
bcf STATUS,RP0 ; regresa al banco 0 para trabajar en PORTA y PORTB
;nota: estas lineas siempre son necesarias para incializar entradas/salidas
Loop movf PORTA,0 ; incia el programa en la etiqueta Loop, copia los valores que tengas en el PORTA y lo pone en el registro W
movwf PORTB ; mueve el regristro W a PORTB o sea q dependiendo lo que tengas en PORTA lo pondrá en PORTB (recuerda q sólo usaras 5 bits de PORTB)
goto Loop ; va a la etiqueta Lopp
end ; Fin del programa
Espero la explicación te aclare algunas dudas.
Tengo un blog y a veces publico ejercicios de PIC en ensamblador. Pongo las direcciones, tal vez te sirvan
http://thedotaragon.blogspot.com/2011/06/boton-push-button-con-el-pic16f84a.html
http://thedotaragon.blogspot.com/2011/06/pic16f84a-encender-leds-en-un-pic.html