PIC18F2420/2520/4420/4520
DAW
Decimal Adjust W Register
DECF
Decrement f
Syntax:
DAW
None
Syntax:
DECF f {,d {,a}}
Operands:
Operation:
Operands:
0 ≤ f ≤ 255
d ∈ [0,1]
a ∈ [0,1]
If [W<3:0> > 9] or [DC = 1] then,
(W<3:0>) + 6 → W<3:0>;
else,
Operation:
(f) – 1→ dest
(W<3:0>) → W<3:0>;
Status Affected:
Encoding:
C, DC, N, OV, Z
0000
01da
ffff
ffff
If [W<7:4> + DC > 9] or [C = 1] then,
(W<7:4>) + 6 + DC → W<7:4>;
else,
Description:
Decrement register ‘f’. If ‘d’ is ‘0’, the
result is stored in W. If ‘d’ is ‘1’, the
result is stored back in register ‘f’
(default).
(W<7:4>) + DC → W<7:4>
Status Affected:
Encoding:
C
If ‘a’ is ‘0’, the Access Bank is selected.
If ‘a’ is ‘1’, the BSR is used to select the
GPR bank (default).
If ‘a’ is ‘0’ and the extended instruction
set is enabled, this instruction operates
in Indexed Literal Offset Addressing
mode whenever f ≤ 95 (5Fh). See
Section 24.2.3 “Byte-Oriented and
Bit-Oriented Instructions in Indexed
Literal Offset Mode” for details.
0000
0000
0000
0111
Description:
DAW adjusts the 8-bit value in W,
resulting from the earlier addition of two
variables (each in packed BCD format)
and produces a correct packed BCD
result.
Words:
Cycles:
1
1
Q Cycle Activity:
Q1
Words:
Cycles:
1
1
Q2
Q3
Q4
Decode
Read
register W
Process
Data
Write
W
Q Cycle Activity:
Q1
Q2
Q3
Q4
Example 1:
Decode
Read
register ‘f’
Process
Data
Write to
destination
DAW
Before Instruction
W
C
DC
=
=
=
A5h
0
0
Example:
DECF
CNT,
1, 0
Before Instruction
After Instruction
CNT
Z
After Instruction
=
01h
0
=
W
=
05h
1
0
C
DC
=
=
CNT
Z
=
=
00h
1
Example 2:
Before Instruction
W
=
CEh
C
DC
=
=
0
0
After Instruction
W
=
34h
C
DC
=
=
1
0
DS39631E-page 286
© 2008 Microchip Technology Inc.