mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C Pointer in Assembler ändern?


Autor: Chris H. (toffer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,
ich stehe gerade auf dem Schlauch. Ich habe folgenden code

.extern cpointer //ist in meinem c-code dann uint_8* cpointer

diese lade ich dann in assembler mit

LDI    ZL,lo8(cpointer)
LDI    ZH,hi8(cpointer)

So nun mach ich

LD    R18,Z+

und jetzt möchte ich den neuen Wert von Z (wurde ja inkrementiert) 
wieder auf cpointer zurückschreiben. Wie mach ich das?

Vielen Dank!

Gruß Toffer

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Code macht nicht das, was die Beschreibung sagt.

Damit lädst Du nach Z nicht cpointer, sondern &cpointer (die Adresse von 
cpointer) und liest nicht *cpointer (das, worauf cpointer zeigt), 
sondern direkt das LSB von cpointer (cpointer & 0xff).

Richtig wäre:
lds ZL, cpointer
lds ZH, cpointer+1  ; Z = cpointer
ld r18, Z+          ; r18 = *cpointer++
sts cpointer, ZL    ; cpointer++ zurückspeichern
sts cpointer+1, ZH

Autor: Chris H. (toffer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das war wohl schon ein wenig spät :D

Vielen dank für deine Hilfe, so gehts!

Gruß Toffer

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.