Also cp ist wie Du schon irgendwomal geschrieben hast in der Tat Subtrahieren, mit dem Unterschied daß die Inhalte unverändert bleiben, nur die Bits Im SREG Register entsprechend dem Ergebnis gesetzt werden.
Wie Vergleicht man in der Mathe 2 Zahlen ??
Wenn wir draufschauen und zwei Zahlen sehen, dann können wir sagen daß 10 gleich 10 ist oder 10 kleiner als 20 ist.
Aber woher soll der AVR das wissen?
Er kann nur eine Zahl von der anderen abziehen, und anhand des SREG exakt sagen welche kleiner größer oder halt ob beide gleich sind!

Nehmen wir als Beispiel zwei gleiche Zahlen

100 und 100

wenn du jetzt sie in zwei register lädst und mit cp "behandelst"
Verändern sie sich nicht, nur im SREG wird das Z Bit gesetzt
was heißt daß das ergebnis 0 ist (klar 100 -100 = 0)

so, wenn jetzt danach z.B. der befehl breq kommt schaut er nach ob Z Bit im SREG 0 oder 1 ist wenn 1 springt er, wenn 0 nicht das war doch einfach oder,
so gleich machen wir des mit 16 Bit und cpc *schüttel*
Du kannst auch die Zwei Zahlen mit verschiedenen Werten laden, und schauen wie sich die Bits im SREG verändern (ganz interresant sind Vorzeichen, Negativ und Übertragsflags