Can anyone improve on the following for copying a variable number of bytes from one area of memory to another. Both destination and source locations are variable. (Temp_Reg1 holds the data location to copy from, Temp_Reg2 the data location to copy to and Temp_Count the number of bytes): COPY_BYTE movfw Temp_Reg1 movwf FSR ; point to data movfw INDF ; get byte movwf Temp_Reg3 ; store movfw Temp_Reg2 movwf FSR ; point to copy movfw Temp_Reg3 movwf INDF ; Write byte to copy incf Temp_Reg1, f incf Temp_Reg2, f decf Temp_Count, f ; next byte btfss STATUS, Z ; Test if 0 goto COPY_BYTE ; if not then repeat ; all bytes copied The above seems long-winded but I can't see a simpler method. Can you improve it for me? -- Peter Crighton