PIC17C75X
Subtract WREG from f
Subtract WREG from f with
Borrow
SUBWF
SUBWFB
Syntax:
[ label ] SUBWF f,d
Syntax:
[ label ] SUBWFB f,d
Operands:
0 ≤ f ≤ 255
Operands:
0 ≤ f ≤ 255
d
[0,1]
d
[0,1]
Operation:
(f) – (W) → (dest)
Operation:
(f) – (W) – C → (dest)
Status Affected:
Encoding:
OV, C, DC, Z
Status Affected:
Encoding:
OV, C, DC, Z
0000
010d
ffff
ffff
0000
001d
ffff
ffff
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'.
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'.
Description:
Description:
Words:
Cycles:
1
1
Words:
Cycles:
1
1
Q Cycle Activity:
Q1
Q Cycle Activity:
Q1
Q2
Q3
Q4
Q2
Q3
Q4
Decode
Read
register 'f'
Process
Data
Write to
destination
Decode
Read
register 'f'
Process
Data
Write to
destination
SUBWF
REG1, 1
Example 1:
SUBWFB REG1, 1
Example 1:
Before Instruction
Before Instruction
REG1
WREG
C
=
=
=
3
2
?
REG1
WREG
C
=
=
=
0x19
0x0D
1
(0001 1001)
(0000 1101)
After Instruction
After Instruction
REG1
WREG
C
=
=
=
=
1
2
1
0
REG1
WREG
C
=
=
=
=
0x0C
0x0D
1
(0000 1011)
(0000 1101)
; result is positive
; result is positive
Z
Z
0
Example 2:
Before Instruction
Example2:
SUBWFB REG1,0
Before Instruction
REG1
WREG
C
=
=
=
2
2
?
REG1
WREG
C
=
=
=
0x1B
0x1A
0
(0001 1011)
(0001 1010)
After Instruction
After Instruction
REG1
WREG
C
=
=
=
=
0
2
1
1
REG1
WREG
C
=
=
=
=
0x1B
0x00
1
(0001 1011)
; result is zero
Z
; result is zero
Z
1
Example 3:
Before Instruction
Example3:
SUBWFB REG1,1
Before Instruction
REG1
WREG
C
=
=
=
1
2
?
REG1
WREG
C
=
=
=
0x03
0x0E
1
(0000 0011)
(0000 1101)
After Instruction
After Instruction
REG1
WREG
C
=
=
=
=
FF
2
0
REG1
WREG
C
=
=
=
=
0xF5
0x0E
0
(1111 0100) [2’s comp]
(0000 1101)
; result is negative
; result is negative
Z
0
Z
0
DS30264A-page 212
1997 Microchip Technology Inc.