Datasheet
PIC18F87K22 FAMILY
DS39960D-page 468  2009-2011 Microchip Technology Inc.
SUBWFB Subtract W from f with Borrow
Syntax: SUBWFB f {,d {,a}}
Operands: 0 
 f  255
d 
 [0,1]
a 
 [0,1]
Operation: (f) – (W) – (C
) dest
Status Affected: N, OV, C, DC, Z
Encoding:
0101 10da ffff ffff
Description: Subtract W and the Carry flag (borrow) 
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’.
If ‘a’ is ‘
0’, the Access Bank is selected. 
If ‘a’ is ‘
1’, the BSR is used to select the 
GPR bank. 
If ‘a’ is ‘
0’ and the extended instruction 
set is enabled, this instruction operates 
in Indexed Literal Offset Addressing 
mode whenever f 
95 (5Fh). See 
Section 29.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
Example 1:
SUBWFB REG, 1, 0
Before Instruction
REG = 19h
(0001 1001)
W=0Dh(0000 1101)
C=1
After Instruction
REG = 0Ch
(0000 1011)
W=0Dh(0000 1101)
C=1
Z=0
N=0   ; result is positive
Example 2:
  SUBWFB REG, 0, 0
Before Instruction
REG = 1Bh
(0001 1011)
W=1Ah(0001 1010)
C=0
After Instruction
REG = 1Bh
(0001 1011)
W = 00h
C=
1
Z=1  ; result is zero
N=
0
Example 3: SUBWFB REG, 1, 0
Before Instruction
REG = 03h 
(0000 0011)
W=0Eh(0000 1101)
C=1
After Instruction
REG = F5h
(1111 0100) 
; [2’s comp]
W=0Eh
(0000 1101)
C=0
Z=0
N=1  ; result is negative
SWAPF Swap f
Syntax: SWAPF f {,d {,a}}
Operands: 0 
 f  255
d 
 [0,1]
a 
 [0,1]
Operation: (f<3:0>) 
 dest<7:4>,
(f<7:4>) 
 dest<3:0>
Status Affected: None
Encoding:
0011 10da ffff ffff
Description: The upper and lower nibbles of register 
‘f’ are exchanged. If ‘d’ is ‘
0’, the result 
is placed in W. If ‘d’ is ‘
1’, the result is 
placed in register ‘f’.
If ‘a’ is ‘
0’, the Access Bank is selected. 
If ‘a’ is ‘
1’, the BSR is used to select the 
GPR bank. 
If ‘a’ is ‘
0’ and the extended instruction 
set is enabled, this instruction operates 
in Indexed Literal Offset Addressing 
mode whenever f 
95 (5Fh). See 
Section 29.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
Example:
SWAPF REG, 1, 0
Before Instruction
REG = 53h
After Instruction
REG = 35h










