Datasheet
PIC12C5XX
DS40139E-page 52 1999 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 comple-
mented. 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’ is
1 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 decre-
mented. 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 an NOP is executed instead mak-
ing 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)
GOTO Unconditional Branch
Syntax: [
label
] GOTO k
Operands: 0 ≤ k ≤ 511
Operation: k → PC<8:0>;
STATUS<6:5> → PC<10:9>
Status Affected: None
Encoding:
101k kkkk kkkk
Description:
GOTO is an unconditional branch. The
9-bit immediate value is loaded into PC
bits <8:0>. The upper bits of PC are
loaded from STATUS<6:5>. GOTO is a
two cycle instruction.
Words: 1
Cycles: 2
Example:
GOTO THERE
After Instruction
PC = address (THERE)