> $ is designator for the current PC. I use this often to work around the > lack of local labels (see above) as follows: > > btfsc port,bit > goto action > btfss port,anotherbit > goto $-3 > > But an assembler should be able to discriminate these two uses by checking > for hexdigits following the $ sign. A decent scanner should have no problem whatsoever distinguishing "$" as PC from "$" as leading character for a hex number. It's also possible to distinguish "*" [alternate form of PC] from "*" [as a multiply] though that is a little bit harder, and at least one assembler I used allowed the use of "&" and "%" for octal and binary prefixes (they could also be used as "and" and "mod" operators, respectively) though that requires parsing rather than mere scanning.