Assembler - IN / OUT vs. LDS / STD

OP #3368375
Lesenswert?

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 #3368391
Lesenswert?

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 #3373215
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren