15
15 – 69
MOVE
PROGRAM MEMORY READ (Indirect Address)
Syntax:
dreg = PM (
I4 ,
M4 ) ;
I5
M5
I6
M6
I7
M7
Permissible dregs
AX0
MX0
SI
AX1
MX1
SE
AY0
MY0
SR1
AY1
MY1
SR0
AR
MR2
MR1
MR0
Example:
MX1 = PM (I6, M5);
Description:
The Program Memory Read Indirect instruction moves the
contents of the program memory location to the destination register. The
addressing mode is register indirect with post-modify. For linear (i.e.
non-circular) indirect addressing, the L register corresponding to the I
register used must be set to zero.
The 16 most significant bits of the
Program Memory Data bus (PMD
23-8
) are loaded into the destination
register, with bit PMD
8
lining up with bit 0 of the destination register
(right-justification). If the destination register is less than 16 bits wide, the
most significant bits are dropped. Bits PMD
7-0
are always loaded into the
PX register. You may ignore these bits or read them out on a subsequent
cycle.
Status Generated:
None affected
Instruction Format:
ALU / MAC Operation with Program Memory Read, Instruction Type 5:
23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 1 0 0 AMF 0 0 0 0 0 DREG I M
AMF specifies the ALU or MAC operation to be performed in parallel
with the Data Memory Read. In this case, AMF = 00000, indicating a no-
operation for the ALU/MAC function.
DREG selects the destination Data Register. One of the 16 Data Registers is
selected according to the Register Selection Table (see Appendix A).
I specifies the indirect address pointer (I register). M specifies the modify
register (M register).