PIC16F5X
COMF
Complement f
Syntax:
[ label ] COMF f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) → (dest)
Status Affected: Z
Encoding:
0010 01df ffff
Description:
The contents of register ‘f’ are
complemented. If ‘d’ is ‘0’, the
result is stored in the W register. If
‘d’ is ‘1’, the result is stored back in
register ‘f’.
Words:
1
Cycles:
1
Example:
COMF REG1,0
Before Instruction
REG1 =
After Instruction
REG1 =
W
=
0x13
0x13
0xEC
DECF
Decrement f
Syntax:
[ label ] DECF f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) – 1 → (dest)
Status Affected: Z
Encoding:
0000 11df ffff
Description:
Decrement register ‘f’. If ‘d’ is ‘0’,
the result is stored in the W
register. If ‘d’ is ‘1’, the result is
stored back in register ‘f’.
Words:
1
Cycles:
1
Example:
DECF CNT, 1
Before Instruction
CNT
=
Z
=
After Instruction
CNT
=
Z
=
0x01
0
0x00
1
DECFSZ
Decrement f, Skip if 0
Syntax:
[ label ] DECFSZ f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) – 1 → d; skip if result = 0
Status Affected: None
Encoding:
0010 11df ffff
Description:
The contents of register ‘f’ are
decremented. 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’, 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
DECFSZ
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)
DS41213C-page 46
2004 Microchip Technology Inc.