It appears to be trying to build a call instruction by combining the opcode and the address. Problem is, A) on the '84 instructions are 3 nibbles wide. e.g. 200h rather than 2000h B) the call instruction is 900 or the address C) I have no idea why you would want to subtract anything from an address or divide that by 2 I could make a call instruction building macro like: mCall macro k dw 900 | k endm but I'd add a bunch of error checking to verify that the target address was in range and try to do other strange things to work around it if it wasn't. Where did this come from? --- James Newton mailto:jamesnewton@geocities.com 1-619-652-0593 http://techref.massmind.org NEW! FINALLY A REAL NAME! Members can add private/public comments/pages ($0 TANSTAAFL web hosting) -----Original Message----- From: pic microcontroller discussion list [mailto:PICLIST@MITVMA.MIT.EDU]On Behalf Of Donald D'Alessandro Sent: Monday, March 20, 2000 21:23 To: PICLIST@MITVMA.MIT.EDU Subject: Code Segment for the PIC16F84 Can someone tell me what this does on the PIC16F84? CALL macro k dw 2000h or ((k - __zero) shr 1) endm Thanks