Hi Leute, ich habe mein Programm bis auf die ISR's in C geschrieben. Da die ISR`s exaktes Timing benötigen sind diese halt in ASM. Ich habe folgende Situation ich habe in C folgendes Array definiert volatile uint_8 testArray[10] Dann habe ich in meinem Assemblerfile folgende Direktive: .extern testArray Nun ist die Frage, wie schaffe ich es an den Pointer auf das erste Element in ASM dran zukommen ich dachte mir das so: LDI ZL,lo8(testArray) LDI ZH,hi8(testArray) Das wird zwar so kompiliert, aber irgend wie denke ich das kann nicht stimmen. LDI läd ja eine Konstante, die Konstante hier kann ja eigentlich nur Speicheradresse des Arraypointers sein, d.h. der Speicherzelle, die auf die Speicherzelle des ersten Arrayelements zeigt, oder? Ich will doch aber halt auf Z den Pointer zu diesem ersten Element haben. Kann mir jemand folgen und auch helfen? Noch ne Frage neben bei, wenn ich mit ZL und ZH hantiere, musste ich da nicht irgend wie die Reihenfolge beachten? Habe das irgend wie vergessen und finds auch gerade nicht wieder. Vielen lieben Dank Christopher
Wenn das Array global ist, geht das genau so (das symbol 'testArray' wird vom Linker durch eine Konstante ersetzt. Die Adressen von globalen Variablen sind beim compilieren(genauer:linken) bekannt und können sich, während das Programm läuft, nicht ändern. hth, Jörg
ja array ist global, super vielen Dank für die Hilfe
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.