COP8 operands are listed in destination, source order. Most instructions have the accumulator A as one of the operands. The other operand is generally chosen from an 8-bit immediate value, an 8-bit RAM address, or , the RAM address selected by the B register. The and (exchange with accumulator) instructions also support RAM addressing by the X register () and post-inc/decrement variants (, , , ). Indirect addressing via B is particularly fast, and can be done in the same cycle that the instruction is executed; even is a one-cycle instruction. On the other hand, absolute RAM addressing is only directly encoded for five instructions: LD A,
addr8, X A,
addr8, IFEQ
addr8,#
imm8, LD
addr8,#
imm8, and
DIR addr8. The latter is a "direct addressing"
opcode prefix which may be prepended to any instruction with a operand, and changes the operand to the specified memory location. (Conditional-skip instructions skip the prefix and following instruction as a pair.) Using with the , and LD [B],#
imm8 instructions is not documented, as the dedicated instructions are more efficient. All "move" instructions are called (load) even if the destination is a memory address (LD
addr8,#
imm8). Unusually, there are no instructions with the accumulator as a source; stores must be done with the instruction which
exchanges the accumulator with the memory operand, storing A and loading the previous memory contents. There are instructions to fetch from tables in ROM. These combine the high 7 bits of the program counter (PCU) with the accumulator, fetch a byte from that address, and place it in the accumulator ( instruction) or the low 8 bits of the program counter PCL ( instruction). Because the next instruction executed must be in the same 256-byte page of ROM as the table itself, a 256-entry table is not possible. ==Notable uses==