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.