Forum: Mikrocontroller und Digitale Elektronik Anfänger+ Assembler=Fragen


von Max (Gast)


Lesenswert?

Hallo,

ich bin ein Anfänger und versuche mit myAVR Assembler zu lernen.

Ich verstehe nicht warum am Anfang immer diese Befehle stehen?
Was passiert da?

ldi r16, lo8(RAMEND)
out spl, r16
ldi r16, hi8(RAMEND)
out spl, r16


Was heißt RAMEND?
Ich habe schon versucht mich da einzulesen, aber ich komme nicht 
dahinter.

Gruß
Max

von Simon K. (simon) Benutzerseite


Lesenswert?

Der Stackpointer (wichtig bei unter anderem bei Call's bzw. 
Funktionsaufrufen) wird auf die Letzte Stelle des Speichers gesetzt. 
Legt man nun einen Wert auf den Stack, so wird der Pointer um eins 
erniedrigt. Liest man wieder was oben vom Stack, wird er wieder erhöht.

(http://de.wikipedia.org/wiki/Stapelspeicher)

Sprich: Ohne diese Initialisierung werden deine CALL's und Interrupts 
schiefgehen.

PS: Da der Stackpointer aus 2*8Bit Registern besteht, wird die Konstante 
"RAMEND" in zwei Teile zerlegt und die Register mit diesen beiden Teilen 
geladen.

von spess53 (Gast)


Lesenswert?

Hi

RAMEND ist die höchste Speicherstelle im RAM . Wird normalerweise in der 
zugehörigen .inc Datei definiert.

MfG Spess

von Markus -. (mrmccrash)


Lesenswert?

Glück Auf!

RAMEND ist eine Konstante, die entweder über die Includes oder selber am 
Anfang der Datei definiert wird. Die Großschreibung hat sich dafür so 
eingebürgert.

Schau mal nach "#define"

Edit: spess53 war schneller...

_.-=: MFG :=-._

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.