#include "ArduinoTrace.h"
volatile uint8_t a=70,b=5,c;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//------------------ proceso alto nivel -----------------------//
//c=a/b;
//if(b>0) // if ( b!= 0 )
asm(
"lds r16, b \n"
"tst r16 \n" //and r16, r16
"breq L70 \n" //salir del if
::: "r16"
);
{
//if(a<b)
asm(
"lds r16, a \n"
"lds r17, b \n"
"cp r16, r17 \n"
"brsh L40 \n"
::: "r16", "r17"
);
{
//c=0;
asm(
"ldi r16, 0 \n"
"sts c, r16"
::: "r16"
);
}
asm("rjmp L60");
//else
asm("L40: ");
{
//while(a>=b)
asm("L45: ");
asm(
"lds r16, a \n"
"lds r17, b \n"
"cp r16, r17 \n"
"brlo L50 \n"
::: "r16", "r17"
);
{
//a=a-b;
asm(
"lds r16, a \n"
"lds r17, b \n"
"sub r16, r17 \n"
"sts a, r16 \n"
::: "r16", "r17"
);
//c++;
asm(
"lds r16, c \n"
"inc r16 \n"
"sts c, r16 \n"
::: "r16", "r17"
);
}
asm("rjmp L45");
asm("L50: ");
}
asm("L60: ");
}
asm("L70: ");
//-------------------------------------------------------------//
if(b==0)
{
Serial.println("ERROR b=0");
}
else
{
DUMP(c);
}
}
void loop() {
// put your main code here, to run repeatedly:
}