50. CPC – Compare with Carry
50.1. Description
This instruction performs a compare between two registers Rd and Rr and also takes into account the
previous carry. None of the registers are changed. All conditional branches can be used after this
instruction.
Operation:
(i) Rd - Rr - C
Syntax: Operands: Program Counter:
(i) CPC Rd,Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1
16-bit Opcode:
0000 01rd dddd rrrr
50.2. Status Register (SREG) and Boolean Formula
I T H S V N Z C
– – ⇔ ⇔ ⇔ ⇔ ⇔ ⇔
H Rd3 • Rr3 + Rr3 • R3 + R3 • Rd3
Set if there was a borrow from bit 3; cleared otherwise.
S N ⊕ V, for signed tests.
V Rd7 • Rr7 • R7 + Rd7 • Rr7 • R7
Set if two’s complement overflow resulted from the operation; cleared otherwise.
N R7
Set if MSB of the result is set; cleared otherwise.
Z R7 • R6 • R5 • R4 • R3 • R2 • R1 • R0 • Z
Previous value remains unchanged when the result is zero; cleared otherwise.
C Rd7 • Rr7 + Rr7 • R7 + R7 • Rd7
Set if the absolute value of the contents of Rr plus previous carry is larger than the absolute value of
Rd; cleared otherwise.
R (Result) after the operation.
Example:
; Compare r3:r2 with r1:r0
cp r2,r0 ; Compare low byte
cpc r3,r1 ; Compare high byte
Atmel AVR Instruction Set Manual [OTHER]
Atmel-0856L-AVR-Instruction-Set-Manual_Other-11/2016
79