#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
//volatile byte da=7,db=7,n=5,va; //prueba 1
//volatile byte da=8,db=7,n=2,va; //prueba 2
//volatile byte da=8,db=7,n=1,va; //prueba 3
volatile byte da=3,db=9,n=5,va; //prueba 4
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("INICIO");
//------------- Proceso en alto nivel -------------------
// if(da<db)
// {
// va=db-da;
// }
// else
// {
// while(n>1)
// {
// va=va+db;
// n=n-1;
// }
// }
asm(
"lds r20, n \n"
"lds r21, da \n"
"lds r22, db \n"
"ldi r23, 0 \n" //va
"ldi r24, 1 \n"
//if(da<db)
"cp r21, r22 \n"
"brlo TRUE \n"
//ELSE
//while(n>1)
"L10: \n"
"cpi r20, 2 \n"
"brlo END \n"
"add r23, r22 \n" //va = va + db
"sub r20, r24 \n" //n = n-1
"sts va,r23 \n"
"rjmp L10 \n"
//if TRUE
"TRUE: sub r22,r21 \n" // va = db-da
"sts va, r22 \n"
"END: \n"
::: "r20","r21","r22","r23","r24"
);
//------------------------------------------------------
DUMP(va);
}
void loop() {
}