Jon, The FSR can be used as a general purpose storage register OR it can be used as a pointer to a RAM location. In the latter case it is used with the Indirect register - RAM location 00h The Indirect register is not a physical register, and you cannot store anything there. If you use this instruction... (Indirect equ 0h) movwf Indirect you are NOT storing the data in the W Reg to RAM location 00h. Instead, the PIC will get the data stored in the FSR register and use this value as the RAM address in which to store the W Reg data. If the FSR register has the value 3Fh, then the W Reg data would have been stored in RAM address 3Fh. If you INDIRECTLY read from the Indirect register, Eg clrf FSR movf Indirect,w ; read from RAM address 00h you will read nothing but ZERO. That's because the Indirect register does not exist in the RAM map. Physically, RAM address 00h does not exist. If you INDIRECTLY write to the Indirect register Eg clrf FSR movwf Indirect ; write to RAM address 00h then the 'movwf Indirect' is effectively a NOP, because as I said, there's nothing there write to. One use for the indirect register could be to access a list of data in RAM. Say this data is in RAM and you want to test each byte to see if it is zero... 0ch value = 65h 1st table data 0dh value = 77h 2nd 0eh value = ffh 3rd 0fh value = 00h Last of data Indirect, or INDF, could be defined in your source code such as this Indirect equ 0h This is the INDF register. You set the FSR to point to the first RAM location to test, which is 0ch movlw 0ch movwf FSR Now you can use these instructions to test for zero test movf Indirect,w ; Read RAM location pointed to by FSR btfsc status,z ; was it zero? goto gotzero ; yes incf fsr ; no, set FSR to point to next RAM location movlw 10h ; RAM loc 10h is not in the data table xorwf FSR,w ; test if finished btfss status,z goto test ; not yet, get next data ; ; No zero data found ; more code here gotzero ; Zero data found in RAM address 0fh. The FSR value will be 0fh. ; more code here Set this small program up in a simulator, and see exactly what is happening. I think you'll find that indirect addressing is really easy in a PIC, it just sounds complicated to explain.. Hope this helps Tony PicNPoke Multimedia 16F84 Beginners PIC Tools. **PLUS** - PicNPlay - PicNPlan - PicNPrep - PicNPost PicNPort - DT Type Saver - *new* PicNQuiz. Recent addition - Hex To Source converter. http://www.picnpoke.com Email picnpoke@cdi.com.au