
2002 Microchip Technology Inc.
Preliminary
DS30485A-page 247
PIC18FXX39
SUBLW
Subtract W from literal
Syntax:
[ label ]SUBLW k
Operands:
0
≤ k ≤ 255
Operation:
k – (W)
→ W
Status Affected:
N, OV, C, DC, Z
Encoding:
0000
1000
kkkk
Description:
W is subtracted from the eight-bit
literal 'k'. The result is placed
in W.
Words:
1
Cycles:
1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
literal 'k'
Process
Data
Write to W
Example 1:
SUBLW
0x02
Before Instruction
W=
1
C=
?
After Instruction
W=
1
C
=
1
; result is positive
Z=
0
N=
0
Example 2:
SUBLW
0x02
Before Instruction
W=
2
C=
?
After Instruction
W=
0
C
=
1
; result is zero
Z=
1
N=
0
Example 3:
SUBLW
0x02
Before Instruction
W=
3
C=
?
After Instruction
W
=
FF ; (2’s complement)
C
=
0
; result is negative
Z=
0
N=
1
SUBWF
Subtract W from f
Syntax:
[ label ] SUBWF f [,d [,a]
Operands:
0
≤ f ≤ 255
d
∈ [0,1]
a
∈ [0,1]
Operation:
(f) – (W)
→ dest
Status Affected:
N, OV, C, DC, Z
Encoding:
0101
11da
ffff
Description:
Subtract W from register 'f' (2’s
complement method). If 'd' is 0,
the result is stored in W. If 'd' is 1,
the result is stored back in regis-
ter 'f' (default). If ‘a’ is 0, the
Access Bank will be selected,
overriding the BSR value. If ‘a’ is
1, then the bank will be selected
as per the BSR value (default).
Words:
1
Cycles:
1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register 'f'
Process
Data
Write to
destination
Example 1:
SUBWF
REG, 1, 0
Before Instruction
REG
=
3
W=
2
C=
?
After Instruction
REG
=
1
W=
2
C
=
1
; result is positive
Z=
0
N=
0
Example 2:
SUBWF
REG, 0, 0
Before Instruction
REG
=
2
W=
2
C=
?
After Instruction
REG
=
2
W=
0
C
=
1
; result is zero
Z=
1
N=
0
Example 3:
SUBWF
REG, 1, 0
Before Instruction
REG
=
1
W=
2
C=
?
After Instruction
REG
=
FFh ;(2’s complement)
W=
2
C
=
0
; result is negative
Z=
0
N=
1