Assembler - IN / OUT vs. LDS / STD

OP #3368375
Hallo zusammen,

ich versuche die Assemblerdirektiven der 8Bit-Controller von Atmel (am 
Beispiel AVR 2560) "zu durchdringen" und stehe vor dem Problem, dass ich 
nicht verstehe, warum man

a) warum es zu den Load & Store Befehlen noch die In/Out Befehle 
existieren. Ich kann doch mit "IN" und "LDS" genau das gleiche bewirken?

b) warum sich zwei Addressierungen auf den gleichen Speicherbereich 
beziehen ($00 bis $3F)? Einmal sind die GPIO Register mit im Boot und 
das andere mal nicht ...

c) Genau dafür haben sich die Jungs von der avrlibc die Makros
    _SFR_IO_ADDR()
ausgedacht, weil dabei einfach +0x20 gerechnet wird?

Freue mich auf Eure Hinweise

Sebastian
Gast
Sebastian Z. schrieb:
> a) warum es zu den Load & Store Befehlen noch die In/Out Befehle
> existieren. Ich kann doch mit "IN" und "LDS" genau das gleiche bewirken?
IN ist 2byte lang, LDS 4byte. IN kann aber weniger Register adressieren.
> b) warum sich zwei Addressierungen auf den gleichen Speicherbereich
> beziehen ($00 bis $3F)? Einmal sind die GPIO Register mit im Boot und
> das andere mal nicht ...
Die I/O Register inkl. GPIO sind immer mit dabei, die Adressierung 
geht beim AVR durch alle I/O-Register, CPU-Register und SRAM.
> c) Genau dafür haben sich die Jungs von der avrlibc die Makros
>     _SFR_IO_ADDR()
> ausgedacht, weil dabei einfach +0x20 gerechnet wird?
Hä? das +0x20 braucht man für die Adressierung bei STS weil IN/OUT 
direkt bei 0x20 anfängt.

Sebastian Z. schrieb:
> (am
> Beispiel AVR 2560)
Meinst du ATmega2560?
OP
Hallo Dr. Sommer,

danke für die Antwort.

>> c) Genau dafür haben sich die Jungs von der avrlibc die Makros
>>     _SFR_IO_ADDR()
>> ausgedacht, weil dabei einfach +0x20 gerechnet wird?
>Hä? das +0x20 braucht man für die Adressierung bei STS weil IN/OUT
>direkt bei 0x20 anfängt.

Die 0x20 sind doch genau die 32 General Purpose Register? Also ist der 
Gedanke doch richtig?

Grüße

Sebastian

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.