Datasheet

PIC16F5X
DS41213D-page 46 © 2007 Microchip Technology Inc.
COMF Complement f
Syntax: [ label ] COMF f, d
Operands: 0 f 31
d [0,1]
Operation: (f
) (dest)
Status Affected: Z
Encoding: 0010 01df ffff
Description: The contents of register ‘f’ are
complemented. If ‘d’ is ‘0’, the
result is stored in the W register. If
‘d’ is ‘1’, the result is stored back in
register ‘f’.
Words: 1
Cycles: 1
Example
: COMF REG1,0
Before Instruction
REG1 = 0x13
After Instruction
REG1 = 0x13
W=0xEC
DECF Decrement f
Syntax: [ label ] DECF f, d
Operands: 0 f 31
d [0,1]
Operation: (f) – 1 (dest)
Status Affected: Z
Encoding: 0000 11df ffff
Description: Decrement register ‘f’. If ‘d’ is ‘0’,
the result is stored in the W
register. If ‘d’ is1’, the result is
stored back in register ‘f.
Words: 1
Cycles: 1
Example
: DECF CNT, 1
Before Instruction
CNT = 0x01
Z=0
After Instruction
CNT = 0x00
Z=1
DECFSZ Decrement f, Skip if 0
Syntax: [ label ] DECFSZ f, d
Operands: 0 f 31
d [0,1]
Operation: (f) – 1 d; skip if result = 0
Status Affected: None
Encoding: 0010 11df ffff
Description: The contents of register ‘f’ are
decremented. If ‘d’ is ‘0’, the result
is placed in the W register. If ‘d’ is
1’. the result is placed back in
register ‘f’. If the result is ‘0’, the
next instruction, which is already
fetched, is discarded and a NOP is
executed instead making it a
two-cycle instruction.
Words: 1
Cycles: 1(2)
Example
: HERE DECFSZ CNT, 1
GOTO LOOP
CONTINUE •
Before Instruction
PC = address(HERE)
After Instruction
CNT = CNT - 1;
if CNT = 0,
PC = address (CONTINUE);
if CNT 0,
PC = address (HERE+1)