Unlucky,
ich glaube, was Du suchst, ist das Äquivalent zur
"if".."then".."else"-Anweisung, die man aus Hochsprachen kennt. In
Assembler gibt es so etwas Schickes leider nicht. Stattdessen muss man
eine Anweisung aus der "branch.."-Gruppe benutzen. Das geht so (beim
ATmega): Wenn Du feststellen willst, ob der Betrag der Zahl in Register
r16 grösser ist als der der Zahl in r17, dann schreibst Du
....
cp r16,r17 ; stellt die Flags im SREG so ein, als ob r16-r17 berechnet
; worden wäre - die Werte in r16 und r17 ändern sich dabei
; aber nicht
brcs SprungZiel ; Sprung zum Label "SprungZiel", wenn in SREG das
; Carry-Flag auf "Eins" gesetzt ist ("br"anch, if "c"arry
; "s"et). In diesem Fall war der Betrag der Zahl in r17
; grösser als der der Zahl in r16.
... ; und hier (ohne Sprung) geht's weiter, wenn das Carry-Flag
; auf "Null" gesetzt ist. D.h. wenn der Betrag in r17 kleiner
; oder gleich dem der Zahl in r16 ist.
Von der Sorte "br.." gibt's einen ganzen Sack voll. Welche Du in welcher
Situation am Besten benutzt, das kriegst Du durch Ausprobieren im
Simulator des AVRStudio heraus ;-).
Die besten Erklärungen findest Du in der Hilfefunktion des AVR-Studio:
Einfach den Cursor vor die fragliche Assember-Anweisung stellen und dann
"F1" drücken. Dann siehst Du ein Fenster mit einer sehr ausführlichen
Erklärung für alle Assembler-Anweisungen des ATmega.
Ciao,
mare_crisium