PIC18FXX20
BZ
Branch if Zero
[ label ] BZ
CALL
Subroutine Call
Syntax:
n
Syntax:
[ label ] CALL k [,s]
Operands:
Operation:
-128 ≤ n ≤ 127
if Zero bit is ’1’
(PC) + 2 + 2n → PC
Operands:
0 ≤ k ≤ 1048575
s ∈ [0,1]
Operation:
(PC) + 4 → TOS,
k → PC<20:1>,
if s = 1
Status Affected:
Encoding:
Description:
None
1110
0000
nnnn
nnnn
(W) → WS,
(STATUS) → STATUSS,
(BSR) → BSRS
If the Zero bit is ‘1’, then the
program will branch.
The 2’s complement number ‘2n’ is
added to the PC. Since the PC will
have incremented to fetch the next
instruction, the new address will be
PC+2+2n. This instruction is then
a two-cycle instruction.
1
1(2)
Status Affected:
None
Encoding:
1st word (k<7:0>)
2nd word(k<19:8>)
1110
1111
110s
k kkk
kkkk
kkkk
7
0
8
k
kkk kkkk
19
Description:
Subroutine call of entire 2-Mbyte
memory range. First, return
address (PC+ 4) is pushed onto the
return stack. If ‘s’ = 1, the W,
Words:
Cycles:
STATUS and BSR registers are
also pushed into their respective
shadow registers, WS, STATUSS
and BSRS. If 's' = 0, no update
occurs (default). Then, the 20-bit
value ‘k’ is loaded into PC<20:1>.
CALLis a two-cycle instruction.
Q Cycle Activity:
If Jump:
Q1
Decode
Q2
Q3
Q4
Read literal
Process
Write to PC
'n'
No
operation
Data
No
operation
No
operation
No
operation
Words:
Cycles:
2
2
If No Jump:
Q1
Q2
Read literal
'n'
Q3
Process
Data
Q4
Decode
No
Q Cycle Activity:
Q1
operation
Q2
Q3
Q4
Decode
Read literal Push PC to Read literal
'k'<7:0>,
HERE
BZ Jump
Example:
stack
’k’<19:8>,
Write to PC
No
operation
Before Instruction
PC
=
address (HERE)
No
No
No
operation
operation
operation
After Instruction
If Zero
PC
=
=
=
=
1;
address (Jump)
HERE
CALL THERE,1
Example:
If Zero
PC
0;
address (HERE+2)
Before Instruction
PC
=
address (HERE)
After Instruction
PC
=
=
=
=
address (THERE)
TOS
WS
address (HERE + 4)
W
BSRS
BSR
STATUSS=
STATUS
DS39609A-page 274
Advance Information
2003 Microchip Technology Inc.