nieprawda. sprawdź w symulatorze. po każdej! operacji porównania są ustawiane flagi w rejestrze SREG. brne sprawdza flagę (Z). Jeżeli operacja CP ustawi flagę a CPC skasuje to skok nie nastąpi
cp r2,r0 ;porowanie mlodszych bajtow
cpc r3,r1 ;porownianie starszych bajtow
brne loop ;skocz jesli rozne sa liczby
Oba kody oczywiście będą działać, ale w inny sposób.
Opis działania brne:
Conditional relative branch. Tests the Zero flag (Z) and branches relatively to PC if Z is cleared. If the instruction is executed immediately after any of the instructions CP, CPI, SUB or SUBI, the branch will occur if and only if the unsigned or signed binary number represented in Rd was not equal to the unsigned or signed binary number represented in Rr. This instruction branches relatively to PC in either direction (PC - 63 ≤ destination ≤ PC + 64). The parameter k is the offset from PC and is represented in two's complement form. (Equivalent to instruction BRBC 1,k).
Operation:
If Rd ≠ Rr (Z = 0) then PC ← PC + k + 1, else PC ← PC + 1
Syntax: Operands: Program Counter:
BRNE k -64 ≤ k ≤ +63 PC <- PC + k + 1
PC <- PC + 1, if condition is false
16-bit Opcode:
1111
01kk
kkkk
k001
Status Register (SREG) and Boolean Formula