Hallo Lalas,
hier mal ganz schnell und schmutzig und ohne Garantie eine Variante. Man könnte sicher noch ein paar Zeilen sparen, "b" z.B. 2x inkrementieren und alles auch ganz anders machen... So sollte es aber leicht verständlich sein, da es eine praktisch direkte Umsetzung Deines Pseudo-Codes (ohne Optimierung!) darstellt:
Code:
while_entry:
cpi r16, 5 ; a - 5 ?
brpl leave_while ; "while" verlassen wenn a>=5
cp r17, r18 ; b - c
breq leave_while ; "while" verlassen wenn b==c
add r16, r17 ; a += b
cpi r17, 5 ; b - 5
brpl b_plus_2 ; verzweige wenn b >= 5
inc r17 ; else ++b
rjmp while_entry ; und noch einmal
b_plus_2:
subi r17,-2 ; b+=2
rjmp while_entry ; und noch einmal
leave_while: ; fettisch!
---Kommentare hinzugefügt!---
Gruß
Fred
Lesezeichen