thanks bobk..i tried that, put return at the end of each goto instruction i have, but still it has not succeeded. is it possible due to overflow stack?

my program is supposed to have a stack of 8 byte output excluding the preamble and header and timeguard.

does anyone ever write a program that has a subroutine as follows

read input from port GPIO
move data from GPIO to 'input' register
take only data from bit 1
store the input (bit 1)to bit 0 at another register

repeat for eight times

what i already have in mind

movfw GPIO
movwf input
movlw 0000 0000
xorwf input,f
goto rotate

rotate
rrf input,f
rrf input,f

anyone has any idea to continue?