Inline-Assembler ändert Wert nur mit Serial.print

Hi

Danke Dir.
Ja, die Funktion hätte ich auch als normale Funktion erstellen können - irgendwie gefiel mir der Gedanke, daß die Variable selber geändert wird.
Auch, weil das 'Umdrehen' in Assembler nur Bit-Schieberei ist.
Das Register heißt beim AVR R23 (R0 bis R31, wovon R16-R31 für Alles benutzt werden können, R0 und R1 teilweise intern Verwendung finden (meine, bei den 'Großen' für mul ... müsste nachschauen) so wie die oberen 6 Register für Pointer benutzt werden (Z R30 & R31, Y R28 & R29, X R26 & R27, wobei das tiefere Register das LOW-Byte ist - mit X, Y und teilweise Z kann man 'der Reihe nach' Daten auslesen/schreiben - R24 & R25 sind auch als Pointer nutzbar, haben aber keinen eigenen Assembler-Befehl).

Ein Umsortieren der Bits als Schleife kam mir auch in den Sinn, fand ich aber 'nicht so schön' :slight_smile:

Die Funktion habe ich ja, allerdings nur, wenn ich den Serial.print(); drin lasse - Ohne bleibt das Original-Byte erhalten, egal, was der Assembler-Quelltext zwischenzeitlich gesagt hat.

MfG