#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
//volatile int8_t a=0,b=1,c=8; //prueba1 a=6
volatile int8_t a=0,b=1,c=7; //prueba2 a=1
//volatile int8_t a=0,b=4,c=8; //prueba3 a=4
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//-------------- PROCESO ------------------------------------
// do
body1:
asm volatile
(
"lds r16,a \n"
"lds r17,b \n"
"add r16,r17 \n"
"ldi r18,1 \n"
"add r17,r18 \n"
"sts a,r16 \n"
"sts b,r17"
);
// {
// a=a+b;
// b++;
// }
// {
// a=a+b;
// b++;
// }
//while(c>7 && b<=3);
// if(c>7 && b<=3)
// {
// goto body1;
// }
cond1:
asm goto
(
"lds r18,c \n"
"cpi r18,8 \n"
"brge %l[cond2] \n"
"jmp %l[endtodo]"
::::cond2,endtodo
);
cond2:
asm goto
(
"lds r17,b \n"
"cpi r17,4 \n"
"brlt %l[body1] \n"
"jmp %l[endtodo]"
::::body1,endtodo
);
endtodo:
//------------------------------------------------------------
DUMP(a);
}
void loop() {
// put your main code here, to run repeatedly:
}