Hallo, ich habe ein Array "volatile werte[100]" und will diese in inlineASM füllen, vorerst nur einen Wert reinschreiben, leider funktioniert dies nicht so wie ich es mir vorgestellt habe. Hat vileicht jemand einen Tipp? asm volatile( "ldi XL, low(%0)" "\n\t" "ldi XH,high(%0)" "\n\t" "LDI _tmp_reg_, 0x55" "\n\t" "ST X+, __tmp_reg__" "\n\t" : :"x" (werte) );
Auf eine 16bit-Varibale greift man nicht mit low(%0) etc. zu, sondern mit %A0 und %B0
unsigned char t; asm volatile( "ldi r26,lo8(%1)" "\n\t" "ldi r27,hi8(%1)" "\n\t" "LDI %0, 0x55" "\n\t" "ST X+, %0" "\n\t" : :"r"(t), "m"(werte));
Dein Code ging nicht, weil (a) das _temp_reg_ nicht mit LDI zusammenpasst, (b) das constraint "x" ein Register beschreibt, nicht eine Speicheradresse, Was du evtl. gemeint hast: asm volatile( "LDI r24, 0x55" "\n\t" "ST X+, r24" "\n\t" : : "x"(werte) : "r24", "r28", "r29");
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.