Ich versuch's. Keine Ahnung, ob der aus der Schleife jemals rauskommt, aber das ist ja nicht die Frage

Code:
      LDI r16, 0        ;  a=0 (r16) 
      LDI r17, 2        ;  b=2 (r17) 
      LDI r18, 10      ; c=10 (r18) 
While:
       cpi    r16, 5              
       brlo  _a_lower          a < 5   
       jmp   exit_while         
_a_lower:
       cp    r17, r18              
       breq   exit_while       b = c   
;-----------------------------------------------------
        add   r16, r17          ; a = a+b 
;-----------------------------------------------------
       cpi   r17, 5            ;   if (b < 5) 
       brlo  _if_lower
_if_gt_eq:
       ldi r0, 2
       add  r17, r0               b = b + 2
       rjmp    While            ; continue
_if_lower:
       ldi r0, 1
       add  r17, r0               b = b + 1
       rjmp    While             ; continue
exit_while: