#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
//volatile byte db,n=5,va; //prueba 1
// volatile byte db,n=3,va; //prueba 2
volatile byte db,n=1,va; //prueba 3
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("INICIO");
//------------- Proceso en alto nivel -------------------
// while(n>1)
// {
// if(n>3)
// {
// db=9;
// }
// else
// {
// db=6;
// }
// va=va+db;
// n=n-1;
// }
//------------------------------------------------------
while(n>1)
asm("L10:");
asm(
"lds r18,n \n"
"cpi r18,2 \n"
"brlo L30"
:::"r16"
);
{ //
asm(
"cpi r18,4 \n"
"brlo L31 \n" //if(n>3)
"ldi r19,9 \n"
"sts db,r19 \n"
"rjmp L32 \n"
"L31: \n" //else
"ldi r19,6 \n"
"sts db,r19 \n"
"L32: \n"
"lds r20,va \n"
"lds r21,db \n"
"add r20,r21 \n" //r20 <-- va+db
"sts va,r20" //va <-- r20, va + db
:::"r17","r18","r19","r20","r21"
);
//n=n-1;
asm(
"lds r20,n \n"
"dec r20 \n"
"sts n,r20" //n <-- n-1
:::"r20"
);
}
asm("rjmp L10");
asm("L30:");
DUMP(va);
}
void loop() {
}