#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");
asm(
"Start: \n"
"lds r16, n \n"
"cpi r16, 1 \n"
"breq Out \n" // since n is being decremented by 1, at some point
// will reach 1, in that case n is no longer strictly
// greater than 1, and we go out of the loop
"cpi r16, 4 \n"
"brsh True \n" // n > 3 <==> n >= 4
"rjmp False \n"
"True: \n"
"ldi r18, 9 \n"
"sts db, r18 \n"
"rjmp End \n"
"False: \n"
"ldi r18, 6 \n"
"sts db, r18 \n"
"End: \n"
"lds r19, va \n"
"add r19, r18 \n"
"sts va, r19 \n"
"lds r20, n \n"
"dec r20 \n"
"sts n, r20 \n"
"rjmp Start \n" // go and evaluate the loop condition
"Out: \n"
::: "r16", "r18", "r19", "r20"
);
//------------- Proceso en alto nivel -------------------
// while(n>1)
// {
// if(n>3)
// {
// db=9;
// }
// else
// {
// db=6;
// }
// va=va+db;
// n=n-1;
// }
//------------------------------------------------------
DUMP(va);
}
void loop() {
}