>From the datasheet: bsf f,b where 0<=f<=255 and 0<=b<=7 f is a file register and b is a bit number So you are supposed to be trying to set bit b in file reg f. The assembler doesn't know what b (or RX) is (or will be.) b is a fixed number 0 - 7 which represents which bit to set. So if you defined RX as a number in an include you'd be OK. If RX is another file register or a redefined peripheral register, you are out of luck. In other words RX can't be an EXTERN. Yikes, now that I look again jump can't be EXTERN either I don't think. It's gotta be a file register and not some address. Looking at the definiation of EXTERN directive syntax: extern ,label> [,