Datasheet
RL78/L12  CHAPTER 29 INSTRUCTION SET 
R01UH0330EJ0200 Rev.2.00      852 
Dec 13, 2013 
Table 29-5. Operation List (16/17) 
Notes 1.  Number of CPU clocks (f
CLK) 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, or when the data flash memory is 
accessed by an 8-bit instruction. 
 3.  This indicates the number of clocks “when condition is not met/when condition is met”. 
Remark  Number of clock is when program exists in the internal ROM (flash memory) area. If fetching the instruction 
from the internal RAM area, the number becomes double number plus 3 clocks at a maximum. 
Instruction 
Group 
Mnemon
ic 
Operands Bytes Clocks Clocks Flag 
Note 1 Note 2 Z AC CY
Stack 
manipulate 
PUSH PSW  2  1 
− 
(SP − 1) ← PSW, (SP − 2) ← 00H, 
SP ← SP−2 
rp 1 1 
− 
(SP − 1) ← rpH, (SP − 2) ← rpL, 
SP ← SP – 2 
POP PSW  2  3 
− 
PSW ← (SP+1), SP ← SP + 2  R  R R
rp 1 1 
− 
rpL ←(SP), rpH ← (SP+1), SP ← SP + 2   
MOVW SP, #word  4  1 
− 
SP ← word   
SP, AX  2  1 
− 
SP ← AX   
AX, SP  2  1 
− 
AX ← SP   
HL, SP  3  1 
− 
HL ← SP   
BC, SP  3  1 
− 
BC ← SP   
DE, SP  3  1 
− 
DE ← SP   
ADDW SP, #byte  2  1 
− 
SP ← SP + byte   
SUBW SP, #byte  2  1 
− 
SP ← SP − byte   
Un-
conditional 
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   










