The execution time for the code will be longer due to the fact that it loops and so some sections get repeated many times. Trying to work out the timing manually would be very difficult due to the fact that the bnz instruction can be branching dependent on the outcome of two different instructions (the rrcf and inc) [Edit, actually just on the value of bdata which is dependent on count]. If you copy the code into MPLAB, set the processor to 18Fxxxx and use the stopwatch, then MPLAB will work it out for you. That really is a horrible bit of code. Looking at it again, I think you will end up with 2 different values dependent on whether the Carry flag was set prior to calling it.