On Wed, 10 Sep 1997 13:53:23 -0400 "Martin R. Green" writes: >Because: > > goto $ ; this is a continuous loop, hence > goto $-1 ; jumps to btfss port,anotherbit > goto $-2 ; jumps to goto action > goto $-3 ; jumps to btfsc port,bit > >So there! ;-) It is worth mentioning 'goto $+1', which is effectively a NOP since it just goes to the next instruction. However, it takes 2 cycles instead of 1 as a NOP does. This makes it useful for killing time a little more efficiently if you need to waste a few cycles but not enough to justify using a delay loop. Another time killer is to label one of the returns in the program and call it; this takes 4 cycles with one instruction. This construct can be used to synchronize precisely to external events: btfsc port,bit goto $+1 It takes 2 cycles if 'bit' is low, and 3 if 'bit' is high. There is a trick to synchronize exatly to TMR0 based on this as well.