mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [Assembler] Grundlagenfrage


Autor: M. Brehme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

bin gerade dabei mich in Assembler (AVR) einzulesen. Nun ist es ja so,
das bestimmte Befehle nur auf bestimmte Register/Ports anwendbar sind.
Das schlage ich im Moment immer wieder nach.

Gibts da ne Logik, welche Befehle mit welchen Registern/Ports gehen und
welche nicht? Ich sehe die noch nicht. Oder muss ich das einfach
auswendig lernen? Am "Instruction Set Summary" kann ich es leider
auch nicht erkennen.

Gruß
Martin

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gibts da ne Logik, welche Befehle mit welchen Registern/Ports gehen

Ja. Alles, was mit Konstanten operieren soll, geht nur mit den oberen
16 Registern, Operationen mit zwei Registern gehen mit allen
Registern.

Ähnliches wird Dir im I/O-Bereich begegnen, bitweiser Zugriff geht nur
mit den unteren 32 I/O-Adressen.

Und wenn Dein AVR über Extendet-I/O verfügt, dann wird dieser Bereich
wie SRAM angesprochen.

...

Autor: Uwegw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.avr-asm-tutorial.net/ kennst du schon? Da wird es im Kapitel
über die Register erklärt: LDI ANDI CBR CPI SBCI SBR SER SUBI gehen nur
mit den Registern 16 bis 31.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Befehle, die mit immediate-Werten arbeiten (ldi, andi, ori, subi,
...), gehen nur mit r16 bis r31.
Bei den I/O-Registern ist es so, daß die Befehle dafür (out, cbi, sbic,
...) nur 64 I/O-Register unterstützen. Manche AVRs haben aber mehr. Alle
I/O-Register, die außerhalb des Bereichs der ersten 64 liegen, müssen
wie RAM-Speicherstellen angesprochen werden. Hier hilft nachsehen,
welche Adresse ein I/O-Register hat, oder einfach ausprobieren. Die
Fehlermeldung sagt einem dann schon, wenn es falsch war.

Autor: M. Brehme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Antworten. So klar und einfach fehlt mir das eigentlich
noch hier im AVR-Tutorial ...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann arbeite doch mal das andere Tutorial (obiger Link) durch. ;-)

...

Autor: M. Brehme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das kenne ich auch. Zu viele gleichzeitige Quellen beim lernen
verwirren aber manchmal mehr als es hilft. Ich hab hier noch ein Buch
liegen (Mikrocomputertechnik mit Controllern der Atmel
AVR-RISC-Familie. Programmierung in Assembler und C - Schaltungen und
Anwendungen) und halt die Tutorials des Forums. In das andere Tut. scha
ich momentan nur sporadisch rein ...

Martin

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.