PIC16F5X
SUBWF
Subtract W from f
SWAPF
Swap Nibbles in f
Syntax:
[ label ] SUBWF f, d
Syntax:
[ label ] SWAPF f, d
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operands:
0 ≤ f ≤ 31
d ∈ [0,1]
Operation:
(f) – (W) → (dest)
Operation:
(f<3:0>) → (dest<7:4>);
(f<7:4>) → (dest<3:0>)
Status Affected: C, DC, Z
Status Affected: None
Encoding:
0000
10df
ffff
Encoding:
0011
10df
ffff
Description:
Subtract (2’s complement method)
the W register from register ‘f’. If ‘d’
is ‘0’, the result is stored in the W
register. If ‘d’ is ‘1’, the result is
stored back in register ‘f’.
Description:
The upper and lower nibbles of
register ‘f’ are exchanged. If ‘d’ is
‘0’, the result is placed in W
register. If ‘d’ is ‘1’, the result is
placed in register ‘f’.
Words:
1
1
Words:
1
1
Cycles:
Cycles:
Example:
Example 1:
SUBWF
REG1, 1
SWAPF REG1,
0
Before Instruction
REG1
W
C
=
=
=
3
2
?
Before Instruction
REG1
After Instruction
=
0xA5
After Instruction
REG1
W
=
=
0xA5
0x5A
REG1
W
=
=
=
1
2
1
C
; result is positive
Example 2:
Before Instruction
TRIS
Load TRIS Register
Syntax:
[ label ] TRIS
f
REG1
W
C
=
=
=
2
2
?
Operands:
Operation:
f = 5, 6, 7, 8 or 9
(W) → TRIS register f
After Instruction
Status Affected: None
REG1
W
C
=
=
=
0
2
1
Encoding:
0000
0000
0fff
; result is zero
Description:
TRIS register ‘f’ (f = 5, 6 or 7) is
loaded with the contents of the W
register.
Example 3:
Before Instruction
REG1
W
C
=
=
=
1
2
?
Words:
1
1
Cycles:
Example:
After Instruction
TRIS
PORTB
REG1
W
C
=
=
=
0xFF
2
0
Before Instruction
W
=
0xA5
0xA5
; result is negative
After Instruction
TRISB
=
© 2007 Microchip Technology Inc.
DS41213D-page 51