
Zitat von
Che Guevara
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.
Lesezeichen