variable Registeradressierung (Assembler, ATmega8)

Gast #1192112
Lesenswert?

Hallo,

Hoffe der Titel ist wenigstens ansatzweise aussagefähig...

Mich quält gerade folgendes Problem für das ich keine Lösung ersinnen 
kann:

ich möchte eine Opertation (z.B. ADD) mit einem Register durchführen, 
welches von einem anderen definiert wird.

Konkretes Beispiel:
1
ldi r16, 20    ; Register definieren, mit dem gerechnet werden soll
2

3
ADD r17, rX    ; Anstelle von X soll aber die Zahl aus r16 stehen (also 20)

Das es auf diese Wiese nicht funktioniert hab ich schon bemerkt...

Ich möchte das für Schleifen nutzen um die gleiche Operation mehrmals 
hintereinander mit diversen Registern ausführen zu können.

Wie geht das?

Bin euch dankbar für die Antworten...
Gast #1192135
Lesenswert?

Hey...

ich bin noch ein ziemlicher Neuling was AVR angeht und wäre froh, wenn 
ihr so grob erklären könntet, was ihr euch unter einem Makro o.ä. 
vorstellt.

Nachvollziehbarer Sourcecode wäre natürlich grandios! :-D

Trotzdem danke für die schnellen Antworten!

so long...
Moderator Persönliche Seite #1192159
Lesenswert?

JayJay wrote:

> ich bin noch ein ziemlicher Neuling was AVR angeht und wäre froh, wenn
> ihr so grob erklären könntet, was ihr euch unter einem Makro o.ä.
> vorstellt.

Da frage ich mich allerdings, warum du dann überhaupt die Dinger
in Assembler programmieren willst...
1
.macro  addX r
2
        add     \r, r24
3
.endm
4

5
.global foo
6
foo:
7
        addX r16
8
        addX r17
9
        ret

(Da du in der GCC-Gruppe fragst, ist das Ganze in der Syntax des
GNU-Assemblers namens "gas" geschrieben.)

Das Ergebnis ist dann:
1
Disassembly of section .text:
2

3
00000000 <foo>:
4
   0:   08 0f           add     r16, r24
5
   2:   18 0f           add     r17, r24
6
   4:   08 95           ret
Gast #1192174
Lesenswert?

Jörg Wunsch wrote:
> Sven P. wrote:
>> Mit einem der drei Zeigerregister und LD dürfte das gehen, auch im Ram.
>
> Nein, da der AVR indirekt nur Transportoperationen durchführen kann,
> keine Rechenoperationen.
Ja das schon, aber ich hab mal vorausgesetzt, dass ihm das klar ist. 
Muss er halt nochn Akku dazunehmen.

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