data1 equ 0x5c
data21 equ 0xa0
MoveData
movlw data1 ;point indirect register
movwf FSR ; at data 1
bcf STATUS,IRP ;ensure we write to bank 0 and 1
bsf STATUS,RP0 ;bank 1
clrf EEADR ;start at location zero
MoveLoop bsf STATUS,RP0 ;Bank 1
bsf EECON1,RD ;EE Read
movf EEDATA,W ;W = EEDATA
incf EEADR,F ;point to next location
bcf STATUS,RP0 ;Bank 0
movwf INDF ;write to SFRs
incf FSR,F ;move to next location
movfw FSR
xorlw data1+d'20' ;end of bank 0 data?
btfss STATUS,Z
goto NextCheck
movlw data21 ;yes, so point FSR at next bank
movwf FSR
NextCheck movfw FSR
xorlw data21+d'80' ;end of all data
btfss STATUS,Z
goto MoveLoop ;no carry on
return ;done.