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
> 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. ...
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.
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.
Danke für Eure Antworten. So klar und einfach fehlt mir das eigentlich noch hier im AVR-Tutorial ...
Dann arbeite doch mal das andere Tutorial (obiger Link) durch. ;-) ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.