> I understand that there are three separate storage areas: program > memory, data memory, and a small bit of EEPROM memory. It is my > understanding > from the datasheet that all of the instructions which move data to or > from storage (that is, the instructions which involve "f") strictly > operate to > or from data memory (RAM). Yes, except when the source is a literal. The literal value comes from the instruction word, and therefore from program memory. > It also appears to me that to pre-allocate storage in assembler > language, > that one uses the CBLOCK directive, CBLOCK and the associated absolute mode are evil. All new code should be using relocatable mode and the linker. In relocatable mode, you define a UDATA or similar section, then use the RES directive to allocate RAM. > How does one read/write the data allocated in data memory? As you said above, instruction that operate on F (file registers). > How does one pre-allocate storage in EEPROM memory. Is this what the DE > directive is for? Yes, together with the right linker section to locate the result in the part of the HEX file (not PIC) address space reserved for EEPROM initial data. > And same question as to how to read/write it. There is a special "peripheral" for accessing the EEPROM at run time. See manual. ***************************************************************** Embed Inc, embedded system specialists in Littleton Massachusetts (978) 742-9014, http://www.embedinc.com -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.