PIC18F2220/2320/4220/4320
DAW
Decimal Adjust W Register
DECF
Decrement f
Syntax:
[ label ] DAW
Syntax:
[ label ] DECF f [,d [,a]]
Operands:
Operation:
None
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
(W<3:0>) → W<3:0>;
Operation:
(f) – 1 → dest
Status Affected:
Encoding:
C, DC, N, OV, Z
0000
01da
ffff
ffff
If [W<7:4> >9] or [C = 1] then
(W<7:4>) + 6 → 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). If ‘a’ is ‘0’, the Access
Bank will be selected, overriding
the BSR value. If ‘a’ = 1, then the
bank will be selected as per the
BSR value (default).
(W<7:4>) → W<7:4>;
Status Affected:
Encoding:
C, DC
0000
0000
0000
0111
Description:
DAW adjusts the eight-bit value in
W, resulting from the earlier addi-
tion of two variables (each in
packed BCD format) and produces
a correct packed BCD result. The
carry bit may be set by DAWregard-
less of its setting prior to the DAW
execution.
Words:
Cycles:
1
1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register ‘f’
Process
Data
Write to
destination
Words:
Cycles:
1
1
DECF
CNT,
Example:
Q Cycle Activity:
Q1
Before Instruction
Q2
Q3
Q4
CNT
Z
=
=
0x01
0
Decode
Read
register W
Process
Data
Write
W
After Instruction
CNT
Z
=
=
0x00
1
DAW
Example1:
Before Instruction
W
=
0xA5
C
DC
=
=
0
0
After Instruction
W
=
0x05
C
DC
=
=
1
0
Example 2:
Before Instruction
W
=
0xCE
C
DC
=
=
0
0
After Instruction
W
=
0x34
C
DC
=
=
1
0
DS39599C-page 274
2003 Microchip Technology Inc.