
114
3.2 Functions
Chapter 3 Functions
ROTate
Rotate
[ Related Instructions ] ROLC,RORC,SHA,SHL
ROT ROT
[ Syntax ]
ROT.size src,dest
B , W
• This instruction rotates
dest
left or right the number of bits indicated by
src
. The bit overflowing from LSB
(MSB) is transferred to MSB(LSB) and the C flag.
• The direction of rotate is determined by the sign of
src
. If
src
is positive, bits are rotated left; if negative, bits
are rotated right.
• If
src
is an immediate, the number of rotates is –8 to –1 and +1 to +8. You cannot set values less than –8,
equal to 0, or greater than +8.
• If
src
is a register and you selected (.B) for the size specifier (.size), the number of rotates is –8 to +8.
Although you can set 0, no bits are rotated and no flags are changed. If you set a value less than –8 or
greater than +8, the result of rotation is indeterminate.
• If
src
is a register and you selected (.W) for the size specifier (.size), the number of rotates is –16 to +16.
Although you can set 0, no bits are rotated and no flags are changed. If you set a value less than –16 or
greater than +16, the result of rotation is indeterminate.
[ Operation ]
LSB
srcÅÑ0
srcÅÉ0
C
[ Function ]
MSB
[ Description Example ]
ROT.B #1,R0L ; Rotated left
ROT.B #–1,R0L ; Rotated right
ROT.W R1H,R2
[ Flag Change ]
UIOBSZDC
*1 If
src
is R1H, you cannot choose R1 or R1H for
dest
.
*2 The range of values that can be taken on is –8 < #IMM < +8. However, you cannot set 0.
[ Selectable src/dest ]
src dest
R0L/R0 R0H/R1 R1L/R2 R1H
*1
/R3 R0L/R0 R0H/R1
*1
R1L/R2 R1H/R3
*1
A0/A0 A1/A1 [A0] [A1] A0/A0 A1/A1 [A0] [A1]
dsp:8[A0] dsp:8[A1] dsp:8[SB] dsp:8[FB] dsp:8[A0] dsp:8[A1] dsp:8[SB] dsp:8[FB]
dsp:16[A0] dsp:16[A1] dsp:16[SB] abs16 dsp:16[A0] dsp:16[A1] dsp:16[SB] abs16
dsp:20[A0] dsp:20[A1] abs20 #IMM
*2
dsp:20[A0] dsp:20[A1] abs20
R2R0 R3R1 A1A0 R2R0 R3R1 A1A0
C
[ Instruction Code/Number of Cycles ]
Page=
222
dest
Flag
Change
Conditions
S : The flag is set when the operation resulted in MSB = 1; otherwise cleared.
Z : The flag is set when the operation resulted in 0; otherwise cleared.
C : The flag is set when the bit shifted out last is 1; otherwise cleared.
*1 If the number of rotates is 0, no flags are changed.
Comentarios a estos manuales