Datasheet

PIC17C4X
DS30412C-page 136 1996 Microchip Technology Inc.
SUBWF Subtract WREG from f
Syntax: [
label
] SUBWF f,d
Operands: 0 f 255
d [0,1]
Operation: (f) – (W) → (dest)
Status Affected: OV, C, DC, Z
Encoding:
0000 010d ffff ffff
Description:
Subtract WREG from register 'f' (2’s
complement method). If 'd' is 0 the
result is stored in WREG. If 'd' is 1 the
result is stored back in register 'f'.
Words: 1
Cycles: 1
Q Cycle Activity:
Q1 Q2 Q3 Q4
Decode Read
register 'f'
Execute Write to
destination
Example 1:
SUBWF REG1, 1
Before Instruction
REG1 = 3
WREG = 2
C=?
After Instruction
REG1 = 1
WREG = 2
C = 1 ; result is positive
Z=0
Example 2:
Before Instruction
REG1 = 2
WREG = 2
C=?
After Instruction
REG1 = 0
WREG = 2
C = 1 ; result is zero
Z=1
Example 3:
Before Instruction
REG1 = 1
WREG = 2
C=?
After Instruction
REG1 = FF
WREG = 2
C = 0 ; result is negative
Z=0
SUBWFB
Subtract WREG from f with
Borrow
Syntax: [
label
] SUBWFB f,d
Operands: 0 f 255
d [0,1]
Operation: (f) – (W) – C
→ (dest)
Status Affected: OV, C, DC, Z
Encoding:
0000 001d ffff ffff
Description:
Subtract WREG and the carry flag
(borrow) from register 'f' (2’s comple-
ment method). If 'd' is 0 the result is
stored in WREG. If 'd' is 1 the result is
stored back in register 'f'.
Words: 1
Cycles: 1
Q Cycle Activity:
Q1 Q2 Q3 Q4
Decode Read
register 'f'
Execute Write to
destination
Example 1:
SUBWFB REG1, 1
Before Instruction
REG1 = 0x19 (0001 1001)
WREG = 0x0D (0000 1101)
C=1
After Instruction
REG1 = 0x0C (0000 1011)
WREG = 0x0D (0000 1101)
C = 1 ; result is positive
Z=0
Example2: SUBWFB REG1,0
Before Instruction
REG1 = 0x1B (0001 1011)
WREG = 0x1A (0001 1010)
C=0
After Instruction
REG1 = 0x1B (0001 1011)
WREG = 0x00
C = 1 ; result is zero
Z=1
Example3: SUBWFB REG1,1
Before Instruction
REG1 = 0x03 (0000 0011)
WREG = 0x0E (0000 1101)
C=1
After Instruction
REG1 = 0xF5 (1111 0100) [2’s comp]
WREG = 0x0E (0000 1101)
C = 0 ; result is negative
Z=0