Forum: Projekte & Code 2 Register vertauschen (AVR Assembler)


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn die Register knapp werden und man 2 Register vertauschen muss, kann 
man sich den Umweg über ein 3. Register als Zwischenspeicher sparen:

1. Möglichkeit: Stack
Unpraktisch, da pop und push jeweils 2 Takte brauchen.

push R1
push R2
pop R1
pop R2

2. Möglichkeit: XOR
Besser, eor benötigt nur 1 Takt.

eor R1, R2
eor R2, R1
eor R1, R2

von Koopmeiners, Bernhard (Gast)


Lesenswert?

zu 2. Möglichkeit:

Hallo Andreas,

sogar mein EDV-Prof ( Prof. Kanne Bochum ) kannte keine bessere Lösung.
Einfach genial. Genial einfach.

Bernhard

von Peter D. (peda)


Lesenswert?

Jeder Prozessor hat so seine eigenen Tricks.

Beim 8051 geht das z.B. so:

xch a, r0
xch a, r1
xch a, r0

Damit sind R0 und R1 vertauscht und ACC unverändert.

Vorteil beim 8051: Das geht nicht nur mit den 32 Registern sondern mit 
allen 128 Bytes im RAM:

xch a, 055h
xch a, 077h
xch a, 055h


Peter

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.