Zitat Zitat von Che Guevara Beitrag anzeigen
Wie lade ich denn den Wert wieder ins Array?
Mit dem Gegenpart des "LD"-Befehls, dem "ST"-Befehl, das wiederum ist im Tutorial zu finden.
Sinnvollerweise mit postincrement, da wird der X,Y oder Z-Pointer nach Ausführung um 1 erhöht.
dass Empf() ein Word ist, aber ich denke, das macht nichts!?
"Macht nichts" ist der falsche Ausdruck, natürlich muss darauf reagiert werden, die X,Y & Z-Pointerei ist Byte-orientiert, damit entspricht WordArr(3) dem 5. & 6. Byte. Du musst also den Index, bevor Du ihn zur Basisadresse addierst, mal 2 nehmen. Am schnellsten geht's, wenn Du ihn einmal nach links schiebst, das geht mit LSL für das LB und ROL für das HB.
Wenn Dein Array nur 5 Elemente groß ist, kannst Du Dir sparen das HB zu schieben, da immer 0.
Das entspräche dann dem hier:
Code:
!LDS   R18,   {ArrPtr}
!DEC   R18   <--- weglassen bei Index 0-4
!CLR   R19
!LSL   R18
!ADD   ZL,    R18
!ADC   ZH,    R19
!ST    Z+,    Reg(WordVal_LB)
!ST    Z,     Reg(WordVal_HB)
Würde Dir raten, Du holst Dir das AVR-Studio 4, dort kannst Du die von Bascom erzeugte .obj-Datei laden und Dir den disassemblierten Code ansehen. Indem Du Dir einfache Beispiele in Basic schreibst, kannst Du daraus lernen wie Bascom das umsetzt.