GOTO
Unconditional Branch
Syntax:
[ label ] GOTO k
Operands:
0 ≤ k ≤ 511
Operation:
k → PC<8:0>;
STATUS<6:5> → PC<10:9>
Status Affected: None
Encoding:
101k kkkk kkkk
Description:
GOTO is an unconditional branch.
The 9-bit immediate value is
loaded into PC bits <8:0>. The
upper bits of PC are loaded from
STATUS<6:5>. GOTO is a two-
cycle instruction.
Words:
1
Cycles:
2
Example:
GOTO THERE
After Instruction
PC = address (THERE)
INCF
Increment f
Syntax:
[ label ] INCF f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) + 1 → (dest)
Status Affected: Z
Encoding:
0010 10df ffff
Description:
The contents of register ‘f’ are
incremented. If ‘d’ is ‘0’, the result
is placed in the W register. If ‘d’ is
‘1’, the result is placed back in
register ‘f’.
Words:
1
Cycles:
1
Example:
INCF CNT, 1
Before Instruction
CNT = 0xFF
Z
=0
After Instruction
CNT = 0x00
Z
=1
PIC16F5X
INCFSZ
Increment f, Skip if 0
Syntax:
[ label ] INCFSZ f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) + 1 → (dest), skip if result = 0
Status Affected: None
Encoding:
0011 11df ffff
Description:
The contents of register ‘f’ are
incremented. If ‘d’ is ‘0’, the result
is placed in the W register. If ‘d’ is
‘1’, the result is placed back in
register ‘f’. If the result is ‘0’, then
the next instruction, which is
already fetched, is discarded and
a NOP is executed instead making
it a two-cycle instruction.
Words:
1
Cycles:
1(2)
Example:
HERE
INCFSZ
GOTO
CONTINUE •
•
•
CNT, 1
LOOP
Before Instruction
PC
=
After Instruction
CNT
=
if CNT =
PC
=
if CNT ≠
PC
=
address (HERE)
CNT + 1;
0,
address (CONTINUE);
0,
address (HERE +1)
© 2007 Microchip Technology Inc.
DS41213D-page 47