www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler Code für ATTiny2313 richtig verstehen


Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich habe eine Frage zum Assembler Code eines ATTiny 2313. Ich habe eine 
Programm in C geschrieben und compeliert. Anschließend habe ich mir den 
Assembler Code im List File angeschaut und finde immer wieder Stellen 
die wie folgt übersetzt sind:

LDI  R30,LOW(24)


Was bedeutet das LOW(24)?
Diese Zeile wird von der Syntax her immer wieder wiederholt, dann steht 
auch mal ein HIGH(xx) da.

Kann mir jemand eine kurze erläuterung geben?
Danke euch

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Was bedeutet das LOW(24)?

Low(x) sind die unteren 8 Bit eines 16-Bit-Wertes

Low($1234)   -> $34
High($1234)  -> $12

MfG Spess

Autor: Holger P. (holg_i)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche es Dir mal zu erklären. Kann aber sein da ich auch noch 
recht neu bin das ich es eventuell nicht 100%ig erkläre.

Also da ein Register nur 8Bit (1Byte) in sich aufnehmen kann, den Wert 
von 0-255 (0-ff) wird damit erreicht das du auch 16Bit Werte bearbeiten 
kannst. Dafür hat der ATTiny auch Register.

Nun kannst du die Registerpaare aber nicht direkt mit einem 16Bit wert 
beschreiben, also musst du es aufteilen. Dieses macht man mit LOW() und 
HIGH()

ldi  r16,low(1025)  ist also gleich ldi r16,1
ldi  r17,high(1025) ist also gleich ldi r17,4

Warum? 4x256+1=1025

Also high liefert die das high von 16Bit und low den rest.

Hoffe ich habe jetzt nix falsch gesagt. So habe ich das wenigstens 
verstanden.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch.

Habe ich jetzt verstanden und macht auch Sinn. Die Werte die ich in C 
setze oder einem Register zuweise, werden so im Assembler entsprechend 
mit Low() oder High () einem Resgister zugewiesen.

Danke nochmal.

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.