PIC18FXX20
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]
(f) – 1 → dest
C, DC, N, OV, Z
If [W<3:0> >9] or [DC = 1] then
(W<3:0>) + 6 → W<3:0>;
else
(W<3:0>) → W<3:0>;
Operation:
Status Affected:
Encoding:
0000
01da
ffff
ffff
If [W<7:4> >9] or [C = 1] then
(W<7:4>) + 6 → W<7:4>;
else
(W<7:4>) → W<7:4>;
C
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).
Status Affected:
Encoding:
Description:
0000
0000
0000
0111
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.
Words:
Cycles:
1
1
Q Cycle Activity:
Q1
Words:
Cycles:
1
1
Q2
Q3
Q4
Decode
Read
Process
Write to
Q Cycle Activity:
Q1
register 'f'
Data
destination
Q2
Q3
Q4
Decode
Read
register W
Process
Write
DECF
CNT,
1, 0
Example:
Data
W
Before Instruction
CNT
=
0x01
0
DAW
Example1:
Z
=
After Instruction
Before Instruction
CNT
Z
=
=
0x00
1
W
=
0xA5
C
=
0
0
DC
=
After Instruction
W
=
0x05
C
DC
=
=
1
0
Example 2:
Before Instruction
W
=
0xCE
C
=
0
0
DC
=
After Instruction
W
=
0x34
C
=
=
1
0
DC
DS39609A-page 278
Advance Information
2003 Microchip Technology Inc.