
2004 Microchip Technology Inc.
Preliminary
DS39637A-page 397
PIC18F2480/2580/4480/4580
SUBLW
Example 1:
SUBWF
Example 1:
Before Instruction
REG
W
C
After Instruction
REG
W
C
Z
N
Example 2:
Before Instruction
REG
W
C
After Instruction
REG
W
C
Z
N
Example 3:
Before Instruction
REG
W
C
After Instruction
REG
W
C
Z
N
Subtract W from Literal
Syntax:
SUBLW k
Operands:
0
≤
k
≤
255
k – (W)
→
W
Operation:
Status Affected:
N, OV, C, DC, Z
Encoding:
0000
1000
kkkk
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
SUBLW
02h
Before Instruction
W
C
After Instruction
W
C
Z
N
=
=
01h
=
=
=
=
01h
1 ; result is positive
0
0
Example 2:
SUBLW
02h
Before Instruction
W
C
After Instruction
W
C
Z
N
=
=
02h
=
=
=
=
00h
1 ; result is zero
1
0
Example 3:
SUBLW
02h
Before Instruction
W
C
After Instruction
W
C
Z
N
=
=
03h
=
=
=
=
FFh; (2’s complement)
0 ; result is negative
0
1
Subtract W from f
Syntax:
SUBWF f {,d {,a}}
Operands:
0
≤
f
≤
255
d
∈
[0,1]
a
∈
[0,1]
(f) – (W)
→
dest
Operation:
Status Affected:
N, OV, C, DC, Z
Encoding:
0101
11da
ffff
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 register ‘f’
(default).
If ‘a(chǎn)’ is ‘
0
’, the Access Bank is selected.
If ‘a(chǎn)’ is ‘
1
’, the BSR is used to select the
GPR bank (default).
If ‘a(chǎn)’ is ‘
0
’ and the extended instruction
set is enabled, this instruction operates
in Indexed Literal Offset Addressing
mode whenever f
≤
95 (5Fh). See
Section 25.2.3 “Byte-Oriented and
Bit-Oriented Instructions in Indexed
Literal Offset Mode”
for details.
Words:
1
Cycles:
1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Decode
Read
register ‘f’
Process
Data
Write to
destination
SUBWF REG, 1, 0
=
=
=
3
2
=
=
=
=
=
1
2
1 ; result is positive
0
0
SUBWF REG, 0, 0
=
=
=
2
2
=
=
=
=
=
2
0
1 ; result is zero
1
0
SUBWF REG, 1, 0
=
=
=
1
2
=
=
=
=
=
FFh ;(2’s complement)
2
0 ; result is negative
0
1