#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
volatile byte dato1=84,dato2=37,dato3=16,resultado;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("INICIO");
//------------- Proceso en assembly -------------------
/*resultado = dato1 - dato2;
resultado=resultado + dato3;*/
asm(
"lds r16,dato1 \n" //r16 <- dato1
"lds r17,dato2 \n" //r17 <- dato2
"sub r16,r17 \n" //dato1 - dato2
"sts resultado,r16 \n" //"resultado <- r16"
"lds r16,resultado \n" //r16 <- resultado
"lds r17,dato3 \n" //r17 <- dato3
"add r16,r17 \n" //resultado + dato3
"sts resultado,r16" //"resultado <- r16"
::: "r16","r17" //clobbered registers
);
//------------------------------------------------------
DUMP(dato1);
DUMP(dato2);
DUMP(dato3);
DUMP(resultado);
}
void loop() {
}