Oops. Yes your variable1 is certainly a label. It defines "a" memory location or label in the file register space. So a (relocatable) example looks something like this: UDATA ;define some Uinited DATA variable1 RES 1 ;some single byte file register memory ; location in some bank ; #define jump 0 ;this is a bit position of the zero position bit ; CODE ; BANKSEL variable1 ;find variable1 memory bank bsf variable1,jump ;set bit 0 of variable1 I shoved the above example into a project of mine and the list file shows: 00196f 1283 BCF 0x3,0x5 BANKSEL variable1 001970 1303 BCF 0x3,0x6 001971 142a BSF 0x2a,0x0 bsf variable1,jump Viewing the map file reveals: .udata udata 0x000020 data 0x00000b and variable1 0x00002a data Hence the two RP regs in the STATUS reg are set to zero (STATUS at 0x03 and RP0 and RP1 are in bits 5 and 6) to select the variable1 bank and the f in the bsf instruction is 0x2a and the b is 0 as #defined above. So this is VERY clear in my mind now. Thanks for pointing out my error. GL, Walt... -----Original Message----- From: Martin SchŠfer [mailto:schaefer@ELEKTRONIK21.DE] Sent: Thursday, April 20, 2000 5:48 AM To: PICLIST@MITVMA.MIT.EDU Subject: Re: Object ASM Blues Walter Quitt wrote: > In other words RX can't be an EXTERN. That's ok. > 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> [,