PIC18F2331/2431/4331/4431
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,
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> 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’. 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.
(W<7:4>) W<7:4>
Status Affected:
Encoding:
C, DC
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. The Carry bit may be set by DAW
regardless of its setting prior to the DAW
instruction.
Words:
Cycles:
1
1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register ‘f’
Process
Data
Write to
Words:
Cycles:
1
1
destination
Example:
DECF
CNT,
Q Cycle Activity:
Q1
Q2
Q3
Q4
Before Instruction
CNT
Z
=
=
0x01
0
Decode
Read
register W
Process
Data
Write
W
Example 1:
DAW
After Instruction
CNT
Z
=
=
0x00
1
Before Instruction
W
=
0xA5
C
DC
=
=
0
0
After Instruction
W
=
0x05
C
DC
=
=
1
0
Example 2:
Before Instruction
W
C
DC
=
=
=
0xCE
0
0
After Instruction
W
=
0x34
C
DC
=
=
1
0
DS39616D-page 302
2010 Microchip Technology Inc.