full adder/subtracter with carry

add:

unsigned char low, high;

void setup() {                
}

void loop() {

  //add 1 with carry
  asm(
    "lds r24, (low)  \n\t"  //low byte
    "lds r25, (high) \n\t"  //high byte
    "ldi r23, 1      \n\t"  
    "add r24, r23    \n\t"  //increment low byte by 1
    "adc r25, 0x00   \n\t"  //add carry to high byte
    "sts (low), r24  \n\t"  //save results
    "sts (high), r25 \n\t"
    ::: "r23","r24", "r25"
  );

  //subtract 1 with carry
  asm(
    "lds r24, (low)  \n\t"
    "lds r25, (high) \n\t"
    "ldi r23, 1      \n\t"
    "sub r24, r23    \n\t"
    "sbc r25, 0x00   \n\t"
    "sts (low), r24  \n\t"
    "sts (high), r25 \n\t"
    ::: "r24", "r25"
  );
}

Edit note: for completeness I included the subtraction code. My original thought was that the OP was requesting an assembly language routine.