Datasheet

2010 Microchip Technology Inc. DS39616D-page 319
PIC18F2331/2431/4331/4431
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 kkkk
Description: W is subtracted from the 8-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 ffff
Description: Subtract W from register, ‘f’ (2’s
complement method). If ‘d’ is0’, 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’ is ‘1’, then the bank will be selected
as per the BSR value.
Words: 1
Cycles: 1
Q Cycle Activity:
Q1 Q2 Q3 Q4
Decode Read
register ‘f’
Process
Data
Write to
destination
Example 1:
SUBWF REG
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, W
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
Before Instruction
REG = 0x01
W = 0x02
C=?
After Instruction
REG = 0xFFh ; (2’s complement)
W = 0x02
C = 0x00 ; result is negative
Z = 0x00
N = 0x01