SX Embedded Controller Instruction

CC

Description: Complement carry
Operation: -
Flags affected: C, DC
Registers affected: Status
Sources referenced: Status
Cycles: 1
Opcode:
Actually compiles to: CLRB 3.1 ; INCSZ 3
Microchip PIC syntax:
Notes:

This is a trick to complement the Carry flag that takes advantage of the fact that Carry is the lowest order bit in the status register. You can always switch a zero to a one or a one to a zero by adding one to it. As long as the (little used) DC flag is cleared, incrementing the Status register wil never effect any higher bits such as Z or PA0..2. Using the INCSZ rather than a regular INC keeps the Z flag from being affected. Since the DC was 0 before the INCSZ, there is no way the skip can occur.

To use this instruction, first define the following macro.

CC macro
 CLRB 3.1
 INCSZ 3
 endm