www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C-Pointer(Array) in externen Assembler-Code .extern?


Autor: Chris H. (toffer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Chris H. (toffer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja array ist global, super vielen Dank für die Hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.