Forum: Mikrocontroller und Digitale Elektronik [Assembler] Grundlagenfrage


von M. Brehme (Gast)


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

von Hannes L. (hannes)


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.

...

von Uwegw (Gast)


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.

von Rolf Magnus (Gast)


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.

von M. Brehme (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

Dann arbeite doch mal das andere Tutorial (obiger Link) durch. ;-)

...

von M. Brehme (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.