#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() {

}