Hier ein Vorschlag, wie man die Aufgabenstellung Zeit- und Code-sparend in ASM lösen könnte mit einem Beispiel zum Testen der Funktion.

Code:
Dim X1 as Byte, X2 as Byte ' Zum Testen


Declare Function ByteReverse (InByte as Byte) as Byte


' Test für alle Byte-Werte ( 0 - 255)

for x1 = 0 to 255

   x2 = ByteReverse(x1)
   print bin(x1); " " ; bin(x2)
next

end






Function ByteReverse (InByte as Byte) as Byte

$ASM

   Loadadr InByte, Z   ' SRAM-Adresse des Input-Bytes in Z-Pointer
   ld r24, Z            ' Input in CPU-Register r24 laden
   ldi r23, 8           ' 8 Bit zum schieben
ByteReverse1:
   lsl r24               ' Bit nach links ins Carry schieben
   ror r25               ' Carry nach Rechts in Output schieben
   dec r23
   brne ByteReverse1      ' letztes Bit erreicht
   loadadr ByteReverse, Z
   st Z, r25             ' Byte in Rückgabevariable abspeichern
$End ASM

End Function

Das Byte kann mit Übergabe in die deklarierte Funktion ByteReverse (wie schon in einem vorigen Post vorgeschlagen) umgedrehrt werden