www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Inline Assembler


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bin gerade dabei ein paar Zeilen Inline-Assembler in meinen C-code 
einzufügen. Leider hab ich von Assembler keine Ahnung.

Alles andere passt, nur diese paar Zeilen bekomme ich nicht hin:

uc_8 *ptr;
uc_8 data;
ptr = (uc_8 *)&buffer;
ptr += counter;
counter++;
data = *ptr;

counter = 0x00;


Wäre super wenn mir jemand helfen könnte. Hab mir schon das AVR-Tutorial 
angeschaut. Doch auch damit haut es nicht hin.

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst Du

data = buffer[counter++] ??

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> meinst Du

>data = buffer[counter++]


Ja genau

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur weiß ich nicht wie ich diese Zeilen in Assembler schreiben soll...

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte im Rahmen dieses Tutorials auftauchen, bzw. sich von den dort 
genannten Beispielen ableiten lassen:

http://www.nongnu.org/avr-libc/user-manual/inline_asm.html


Viel Erfolg !

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auszug:



...but both versions will fail during the assembly stage of the 
compiler, if you explicitely need Z, like in

ld r24,Z

If you write

ld r24, %a0

with a lower case a following the percent sign, then the compiler will 
create the proper assembler line.



Also genau das, was Du suchst

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kapier ich nicht so recht.

Was würde denn diese beiden Zeilen übersetzt bedeuten?

counter++;

counter = 0x00;

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm Dir mehr als 9 Minuten mit dem Tutorial und Du wirst lernen, wie 
man das macht...

Autor: Blair (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dein counter steht ja in irgendeinem register

inc registername (entspricht registername++)
counter=0x00 (selbstredend)

blair

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.