15 Instruction Set Reference
15 – 6
15.4.2
Data & Program Memory Read
This variation of a multifunction instruction is a special case of the
multifunction instruction described above in which the computation is
omitted. It executes only the dual operand fetch, as shown below:
AX0=DM(I2,M0), AY0=PM(I4,M6);
In this example we have used the ALU input registers as the destination.
As with the previous multifunction instruction, X operands must come
from data memory and Y operands from program memory (internal or
external memory in either case, for the processors with on-chip memory).
15.4.3
Computation With Memory Read
If a single memory read is performed instead of the dual memory read of
the previous two multifunction instructions, a wider range of
computations can be executed. The legal computations include all ALU
operations except division, all MAC operations and all Shifter operations
except SHIFT IMMEDIATE. Computation must be unconditional. An
example of this kind of multifunction instruction is:
AR=AX0+AY0, AX0=DM(I0,M3);
Here an addition is performed in the ALU while a single operand is
fetched from data memory. The restrictions are similar to those for
previous multifunction instructions. The value of AX0, used as a source
for the computation, is the value at the beginning of the cycle. The data
read operation loads a new value into AX0 by the end of the cycle. For this
same reason, the destination register (AR in the example above) cannot be
the destination for the memory read.
15.4.4
Computation With Memory Write
The computation with memory write instruction is similar in structure to
the computation with memory read: the order of the clauses in the
instruction line, however, is reversed. First the memory write is
performed, then the computation, as shown below:
DM(I0,M0)=AR, AR=AX0+AY0;
Again the value of the source register for the memory write (AR in this
example) is the value at the beginning of the instruction. The computation
loads a new value into the same register; this is the value in AR at the end
of this instruction. Reversing the order of the clauses of the instruction is
illegal and causes the assembler to generate a warning; it would imply