RL78/G15 CHAPTER 22 INSTRUCTION SET
R01UH0959EJ0110 Rev.1.10 Page 707 of 765
Mar 7, 2023
Table 22-5. Operation List (12/13)
Instruction
Group
Mnemonic Operand Bytes Clock Operation Flag
Note 1 Note 2
Z AC CY
Call/return RETI — 2 6 — PC
L
← (SP), PC
H
← (SP + 1),
PC
S
← (SP + 2), PSW ← (SP + 3),
SP ← SP + 4
R R R
RETB — 2 6 — PC
L
← (SP), PC
H
← (SP + 1),
PC
S
← (SP + 2), PSW ← (SP + 3),
SP ← SP + 4
R R R
Stack
manipulate
PUSH PSW 2 1 — (SP − 1) ← PSW, (SP − 2) ← 00H,
SP ← SP − 2
rp 1 1 — (SP − 1) ← rp
H
, (SP − 2) ← rp
L
,
SP ← SP − 2
POP PSW 2 3 — PSW ← (SP + 1), SP ← SP + 2 R R R
rp 1 1 — rp
L
← (SP), rp
H
← (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
Uncondi-
tional
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
Note 5
— PC ← PC + 2 + jdisp8 if CY = 1
BNC $addr20 2 2/4
Note 5
— PC ← PC + 2 + jdisp8 if CY = 0
BZ $addr20 2 2/4
Note 5
— PC ← PC + 2 + jdisp8 if Z = 1
BNZ $addr20 2 2/4
Note 5
— PC ← PC + 2 + jdisp8 if Z = 0
BH $addr20 3 2/4
Note 5
— PC ← PC + 3 + jdisp8 if (Z ∨ CY) = 0
BNH $addr20 3 2/4
Note 5
— PC ← PC + 3 + jdisp8 if (Z ∨ CY) = 1
BT saddr.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if (saddr).bit = 1
sfr.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if sfr.bit = 1
A.bit, $addr20 3 3/5
Note 5
— PC ← PC + 3 + jdisp8 if A.bit = 1
PSW.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if PSW.bit = 1
[HL].bit, $addr20 3 3/5
Note 5
6/7 PC ← PC + 3 + jdisp8 if (HL).bit = 1
ES:[HL].bit, $addr20 4 4/6
Note 5
7/8 PC ← PC + 4 + jdisp8 if (ES, HL).bit = 1
BF saddr.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if (saddr).bit = 0
sfr.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if sfr.bit = 0
A.bit, $addr20 3 3/5
Note 5
— PC ← PC + 3 + jdisp8 if A.bit = 0
PSW.bit, $addr20 4 3/5
Note 5
— PC ← PC + 4 + jdisp8 if PSW.bit = 0
[HL].bit, $addr20 3 3/5
Note 5
6/7 PC ← PC + 3 + jdisp8 if (HL).bit = 0
ES:[HL].bit, $addr20 4 4/6
Note 5
7/8 PC ← PC + 4 + jdisp8 if (ES, HL).bit = 0