Rabbit 3000A Instruction
Instruction Reference Manual 149
Description
While the data in the BC does not equal 0, then:
• the data at the address in IY is multiplied by the data in DE;
• the data in alternate register DE’ is added to that value;
• the C flag is added to that value; and
• this value is added to the data at the address in IX (for UMA) or
this value is subtracted from the data at the address in IX (for UMS).
This results in a 24-bit value. The lowest eight bits of this value are stored memory at the address in HL, and
the upper 16 bits are stored in the alternate register DE’. If The data in IX, IY, and HL are then incremented,
and the data in BC is decremented. The instruction then repeats until BC equals zero. Interrupts can occur
between different repeats, but not within an iteration.
These instructions are implemented in the Rabbit 3000A.
UMA
UMS
Opcode Instruction Clocks Operation
ED C0 UMA 8+8i (2,2,2,
(2,2,3,1)i,2)
[CY:DE’:(HL)} =
(IX) + [(IY)*DE+DE’+CY];
BC = BC - 1; IX = IX + 1;
IY = IY + 1; HL = HL + 1;
repeat while BC != 0
ED C8 UMS 8+8i (2,2,2,
(2,2,3,1)i,2)
[CY:DE’:(HL)} =
(IX) - [(IY)*DE+DE’+CY];
BC = BC - 1; IX = IX + 1;
IY = IY + 1; HL = HL + 1;
repeat while BC != 0
Flags ALTD I/O
S Z L/V C F R SP S D
- - -•