Since you bring up the subject of other assemblers, the previous answers stating that the '$' stands for current PC aren't exactly correct. It refers to the assemblers' "Location Pointer". Bless you for pointing this out. I was about to do so in a rather more frustrated language! In a PIC they are the same thing when used in program memory as all instructions are 1 word. In other micros where an instruction can be more than 1 byte, it is the address (PC value) for the first byte of the instruction. The assembler does not have a PC. In a PIC, the actual value of the PC during execution is more or less irrelevant, because the PC is not directly accessable to the programmer (right?) However, on a processor where the PC is a a program accessable register (say a pdp-11 :-), there is FREQUENTLY a difference in PC and , because the PC is usually incremented during instruction and argument fetch, before the actual execution. Thus, on a pseudo-PDP11: A: jmp $+1 B: add PC, 1 C: add ... D: sub ... The jump instruction at A will jump to B, but the jump at B will jump to D because PC has already incremented to C before the add occurs. This is the same thing that results in the "jmp $-1" confusion. If you're doing actual math on the program counter, it's a single instruction loop. If you're using an assembler that defines $ as the current instruction, it's a two instruction loop. BillW