
2007 Microchip Technology Inc.
Preliminary
DS39775B-page 383
PIC18F87J50 FAMILY
DECFSZ
Example:
DCFSNZ
Example:
Decrement f, Skip if 0
Syntax:
DECFSZ f {,d {,a}}
Operands:
0
≤
f
≤
255
d
∈
[0,1]
a
∈
[0,1]
Operation:
(f) –
1
→
dest,
skip if result =
0
Status Affected:
None
Encoding:
0010
11da
ffff
ffff
Description:
The contents of register ‘f’ are
decremented. If ‘d’ is ‘
0
’, the result is
placed in W. If ‘d’ is ‘
1
’, the result is
placed back in register ‘f’ (default).
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.
If ‘a(chǎn)’ is ‘
0
’, the Access Bank is selected.
If ‘a(chǎn)’ is ‘
1
’, the BSR is used to select the
GPR bank (default).
If ‘a(chǎn)’ is ‘
0
’ and the extended instruction
set is enabled, this instruction operates
in Indexed Literal Offset Addressing
mode whenever f
≤
95 (5Fh). See
Section 26.2.3 “Byte-Oriented and
Bit-Oriented Instructions in Indexed
Literal Offset Mode”
for details.
Words:
1
Cycles:
1(2)
Note:
3 cycles if skip and followed
by a 2-word instruction.
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register ‘f’
Process
Data
Write to
destination
If skip:
Q1
No
Q2
No
Q3
No
Q4
No
operation
operation
operation
operation
If skip and followed by 2-word instruction:
Q1
No
operation
operation
No
operation
operation
Q2
No
Q3
No
Q4
No
operation
No
operation
operation
No
operation
No
HERE DECFSZ CNT, 1, 1
GOTO LOOP
CONTINUE
Before Instruction
PC
After Instruction
CNT
If CNT
=
Address
(HERE)
=
=
CNT – 1
0;
Address
(CONTINUE)
0;
Address
(HERE + 2)
PC =
If CNT
≠
PC =
Decrement f, Skip if not 0
Syntax:
DCFSNZ f {,d {,a}}
Operands:
0
≤
f
≤
255
d
∈
[0,1]
a
∈
[0,1]
Operation:
(f) –
1
→
dest,
skip if result
≠
0
Status Affected:
None
Encoding:
0100
11da
ffff
ffff
Description:
The contents of register ‘f’ are
decremented. If ‘d’ is ‘
0
’, the result is
placed in W. If ‘d’ is ‘
1
’, the result is
placed back in register ‘f’ (default).
If the result is not ‘
0
’, the next
instruction which is already fetched is
discarded and a
NOP
is executed
instead, making it a two-cycle
instruction.
If ‘a(chǎn)’ is ‘
0
’, the Access Bank is selected.
If ‘a(chǎn)’ is ‘
1
’, the BSR is used to select the
GPR bank (default).
If ‘a(chǎn)’ is ‘
0
’ and the extended instruction
set is enabled, this instruction operates
in Indexed Literal Offset Addressing
mode whenever f
≤
95 (5Fh). See
Section 26.2.3 “Byte-Oriented and
Bit-Oriented Instructions in Indexed
Literal Offset Mode”
for details.
Words:
1
Cycles:
1(2)
Note:
3 cycles if skip and followed
by a 2-word instruction.
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register ‘f’
Process
Data
Write to
destination
If skip:
Q1
No
Q2
No
Q3
No
Q4
No
operation
operation
operation
operation
If skip and followed by 2-word instruction:
Q1
No
operation
operation
No
operation
operation
Q2
No
Q3
No
Q4
No
operation
No
operation
operation
No
operation
No
HERE DCFSNZ TEMP, 1, 0
ZERO :
NZERO :
Before Instruction
TEMP
=
After Instruction
TEMP
=
If TEMP
=
PC
=
If TEMP
≠
PC
=
TEMP – 1,
0;
Address
(ZERO)
0;
Address
(NZERO)