184
Rabbit 2000 Microprocessor User’s Manual
SLA r
4
fr
* * L *
r = {r[6,0],0}; CY = r[7]
SRA (HL)
10
f
b * * L *
(HL) = {(HL)[7],(HL)[7,1]};
CY = (HL)[0]
SRA (IX+d)
13
f
b * * L *
(IX+d) = {(IX+d)[7],
(IX+d)[7,1]}; CY = (IX+d)[0]
SRA (IY+d)
13
f
b * * L *
(IY+d) = {(IY+d)[7],
(IY+d)[7,1]}; CY = (IY+d)[0]
SRA r
4
fr
* * L *
r = {r[7],r[7,1]}; CY = r[0]
SRL (HL)
10
f
b * * L *
(HL) = {0,(HL)[7,1]};
CY = (HL)[0]
SRL (IX+d)
13
f
b * * L *
(IX+d) = {0,(IX+d)[7,1]};
CY = (IX+d)[0]
SRL (IY+d)
13
f
b * * L *
(IY+d) = {0,(IY+d)[7,1]};
CY = (IY+d)[0]
SRL r
4
fr
* * L *
r = {0,r[7,1]};
CY = r[0]
18.15 Instruction Prefixes
Instruction
clk
A
I S Z V C
Operation
ALTD
2
- - - - alternate register destinatIn
for next Instruction
IOE
2
- - - -
I/O external prefix
IOI
2
- - - -
I/O internal prefix
18.16 Block Move Instructions
Instruction
clk
A
I S Z V C
Operation
LDD
10
d - - * -
(DE) = (HL); BC = BC-1;
DE = DE-1; HL = HL-1
LDDR
6+7i
d - - * -
if {BC != 0} repeat:
LDI
10
d - - * -
(DE) = (HL); BC = BC-1;
DE = DE+1; HL = HL+1
LDIR
6+7i
d - - * -
if {BC != 0} repeat:
If any of the block move instructions are prefixed by an I/O prefix, the destination will be
in the specified I/O space. Add 1 clock for each iteration for the prefix if the prefix is IOI
(internal I/O). If the prefix is IOE, add 2 clocks plus the number of I/O wait states enabled.
The V flag is set when BC transitions from 1 to 0. If the V flag is not set another step is
performed for the repeating versions of the instructions. Interrupts can occur between dif-
ferent repeats, but not within an iteration equivalent to LDD or LDI. Return from the inter-
rupt is to the first byte of the instruction which is the I/O prefix byte if there is one.