www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik WinAVR: Low()-Funktion in Assembler?


Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich schreibe gerade einen zeitkritischen Teil bei WinAVR in Assembler.
In diesem Teil muss ich auf einen Pointer zugreifen.

Wie kann ich den Pointer in mein Pointer-Register (X,Y oder Z) laden?
Der Pointer ist ja 16-Bit lang. Wie kann ich erst den Low-Teil des
Pointers in beispielsweise XL und dann den High-Teil in XH laden? Im
AVRStudio gibt es für solche Zwecke die LOW()- und HIGH()-Funktionen -
gibt es bei WinAVR etwas ähnliches?

Viele Grüsse,
Steffen

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal

Ich habe inzwischen den Befehl

asm("st %a0,r24"::"x"(Pointer))

gefunden. Das Problem ist hier allerdings, dass der Pointer nicht nur
ins X-Register geladen wird, sondern auch gleich der "store"-Befehl
ausgeführt wird. Der "Pointer" ist jedoch in Wirklichkeit ein Array
und ich möchte zur Laufzeit auf die verschiedenen Elemente zugreifen.

Hat irgendjemand eine Idee, wie ich ein Registerpaar mit einem Pointer
in Assembler laden kann?!

Viele Grüsse,
Steffen

P.s.: Ich weiß, dass es eine Low()-Funktion bei Assembler mit WinAVR
gibt. Nur leider kann ich mich nicht mehr daran erinnern, wo ich etwas
zu diesem Thema gelesen habe :-(

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaaahh, Erlösung:

asm(""::"x"(Pointer))

Puh, endlich die Lösung gefunden. Ist eigentlich auch nur konsequent
logisch, dass es so funktionieren muss.

Viele Grüsse,
Steffen

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.