Description:
This instruction performs a compare between register Rd and a constant. The register is not changed. All conditional branches can be used after this instruction.
Operation:
Rd - K
Syntax: Operands: Program Counter:
CPI Rd,K 16 ≤ d ≤ 31, 0≤ K ≤ 255 PC ← PC + 1
16-bit Opcode:
|
0011 |
KKKK |
dddd |
KKKK |
Status Register (SREG) and Boolean Formula:
|
I |
T |
H |
S |
V |
N |
Z |
C |
|---|---|---|---|---|---|---|---|
|
- |
- |
⇔ |
⇔ |
⇔ |
⇔ |
⇔ |
⇔ |
H: Set if there was a borrow from bit 3; cleared otherwise
S: N ⊕ V, For signed tests.
V: 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: Set if the result is $00; cleared otherwise.
C: Set if the absolute value of K is larger than the absolute value of Rd; cleared otherwise.
R (Result) after the operation.
Example:
cpi r19,3 ; Compare r19 with 3 brne error ; Branch if r19⇔3 ... error: nop ; Branch destination (do nothing)
Words: 1 (2 bytes)
Cycles: 1


