Advertisement
CosminVarlan

7. ASM swapping

Dec 16th, 2021
1,427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     spre deospebire de ldi (load immediate) cu care puteam
  3.     stoca o valoare direct in registru, lds incarca valoarea
  4.     aceasta din storage (load storage). In exemplul de mai jos
  5.     stocarea este reprezentata de variabilele a si b.
  6.  
  7. */
  8.  
  9.  
  10. volatile byte a=1;
  11. volatile byte b=2;
  12.  
  13. void setup()
  14. {
  15.   Serial.begin(9600);
  16.   asm("lds r24, (a) \n"
  17.       "lds r25, (b) \n"
  18.       "sts (b), r24 \n"
  19.       "sts (a), r25 \n"
  20.       ::: "r24","r25"
  21.      );
  22.   Serial.print("a=");
  23.   Serial.println(a);
  24.   Serial.print("b=");
  25.   Serial.println(b);
  26. }
  27.  
  28. void loop()
  29. {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement