RL78/G10 CHAPTER 23 INSTRUCTION SET
R01UH0384EJ0311 Rev. 3.11 583
Dec 22, 2016
Table 23-5. Operation List (16/17)
Notes 1. Number of CPU clocks (fCLK) when the internal RAM area, SFR area, or extended SFR area is accessed, or
when no data is accessed.
2. Number of CPU clocks (f
CLK) when the code flash memory is accessed.
3. This indicates the number of clocks “when condition is not met/when condition is met”.
Remark These numbers of clock cycles apply when the program is in the internal ROM (flash memory) area. When the
instruction is fetched from the internal RAM area, the number is, at most, the quadruple of the number given
here plus 6 further clock cycles.
Instruction
Group
Mnemonic Operands Bytes Clocks Clocks Flag
Note 1 Note 2 ZACCY
Stack
manipulate
PUSH PSW 2 2
−
(SP − 1) ← PSW, (SP − 2) ← 00H,
SP ← SP−2
rp 1 2
−
(SP − 1) ← rpH, (SP − 2) ← rpL,
SP ← SP – 2
POP PSW 2 4
−
PSW ← (SP+1), SP ← SP + 2 R R R
rp 1 2
−
rpL ←(SP), rpH ← (SP+1), SP ← SP + 2
MOVW SP, #word 4 2
−
SP ← word
SP, AX 2 2
−
SP ← AX
AX, SP 2 2
−
AX ← SP
HL, SP 3 2
−
HL ← SP
BC, SP 3 2
−
BC ← SP
DE, SP 3 2
−
DE ← SP
ADDW SP, #byte 2 2
−
SP ← SP + byte
SUBW SP, #byte 2 2
−
SP ← SP − byte
Unconditional
branch
BR AX 2 3
−
PC ← CS, AX
$addr20 2 3
−
PC ← PC + 2 + jdisp8
$!addr20 3 3
−
PC ← PC + 3 + jdisp16
!addr16 3 3
−
PC ← 0000, addr16
!!addr20 4 3
−
PC ← addr20
Conditional
branch
BC $addr20 2 2/4
Note3
−
PC ← PC + 2 + jdisp8 if CY = 1
BNC $addr20 2 2/4
Note3
−
PC ← PC + 2 + jdisp8 if CY = 0
BZ $addr20 2 2/4
Note3
−
PC ← PC + 2 + jdisp8 if Z = 1
BNZ $addr20 2 2/4
Note3
−
PC ← PC + 2 + jdisp8 if Z = 0
BH $addr20 3 2/4
Note3
−
PC ← PC + 3 + jdisp8 if (Z∨CY)=0
BNH $addr20 3 2/4
Note3
−
PC ← PC + 3 + jdisp8 if (Z∨CY)=1
BT saddr.bit, $addr20 4 3/5
Note3
−
PC ← PC + 4 + jdisp8 if (saddr).bit = 1
sfr.bit, $addr20 4 3/5
Note3
−
PC ← PC + 4 + jdisp8 if sfr.bit = 1
A.bit, $addr20 3 3/5
Note3
−
PC ← PC + 3 + jdisp8 if A.bit = 1
PSW.bit, $addr20 4 3/5
Note3
−
PC ← PC + 4 + jdisp8 if PSW.bit = 1
[HL].bit, $addr20 3 3/5
Note3
6/7 PC ← PC + 3 + jdisp8 if (HL).bit = 1
ES:[HL].bit,
$addr20
4 4/6
Note3
7/8 PC ← PC + 4 + jdisp8 if (ES, HL).bit = 1