BTW. Solch kurze Sequenzen fühlen sich als Inline-Funktion bzw.Makro wohler

Code:
#define fadd(op1,op2)                      \
    ({                                     \
        uint16_t __result = (uint16_t) op1;\
                                           \
        asm volatile (                     \
		      "; fadd(" #op1 ", " #op2 ")\n\t"\
            "add %A0, %2" "\n\t"           \
            "adc %B0, __zero_reg__"        \
                : "=r" (__result)          \
                : "0" (__result), "r" (op2)\
            );                             \
                                           \
        __result;                          \
    })
Code:
.global	main
	.type	main, @function
main:
/* prologue: frame size=0 */
	ldi r28,lo8(__stack - 0)
	ldi r29,hi8(__stack - 0)
	out __SP_H__,r29
	out __SP_L__,r28
/* prologue end (size=4) */
	ldi r18,lo8(-6)	 ;  10	*movqi/2	[length = 1]
	ldi r24,lo8(10)	 ;  14	*movhi/4	[length = 2]
	ldi r25,hi8(10)
/* #APP */
	; fadd(op1, op2)
	add r24, r18
	adc r25, __zero_reg__
/* #NOAPP */
	sts (result)+1,r25	 ;  17	*movhi/3	[length = 4]
	sts result,r24
/* epilogue: frame size=0 */
	rjmp exit