mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stackpointer? Im RAM-Bereich oder eigenes Register


Autor: lupi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich würde gerne mal wissen, ob der Stackpointer ein im RAM definierter 
Bereich ist oder ob es ein eigenes Register ist? (Nicht unbedingt 
Controllerabhängig sondern eher generell)

Grüße

lupi

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der stackpointer ist i.d.r. ein eigenes register.

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts 2 Begriffe die man nicht verwechseln darf: Der "Stackpointer" 
ist ein Register, das auf aktuelle Adresse oder Position des "Stack" 
zeigt. der Stack ist Teil des Speichers.

Gerhard

Autor: lupi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
supi, vielen Dank für die Erklärung!

Grüße

lupi

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meistens ist der Stack Teil des Speichers, aber nicht immer:
es gibt auch Controller die für den Stack ein paar Extraregister haben. 
Dann sind z.B. nur 3 Unterprogrammaufrufe möglich.

Grüße
Walter

Autor: Jörg Rehrmann (Firma: Rehrmann Elektronik) (j_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Stackpointer ist ein wichtiges Arbeitsregister, auf das ständig 
zugegriffen werden muß. Da es sich nur um ein einziges Wort handelt, 
kann man das problemlos im CPU-Bereich unterbringen. Eine Auslagerung in 
den Arbeitsspeicher würde wegen der zusätzlichen Zugriffe auf das RAM 
die CPU unnötig ausbremsen. Der Stack selbst befindet sich dagegen 
meistens im RAM. Bei PIC-Controllern besteht z.B. auch der Stack aus 
eigenen Registern.

Jörg

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau bewirke ich mit dem Befehl

MOV SP, #7Fh

?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lade den Stackpointer unmittlebar mit der Konstanten 7Fh.

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er zeigt nun also auf die Adresse 7Fh? Wenn ich jetzt etwas PUSHe, zeigt 
er dann auf 7Eh?

Auf welche Adresse zeigt er normalerweise?

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

was meinst Du mit "normalerweise"?

Wenn es einen Default-Wert gibt, den er nach Reset enthält, steht es im 
Datenblatt des konkreten Prozessors.

Wenn es eine 8Bit-CPU ist und Du ein 8Bit-Register gePUSHd hast, sollte 
er auf 7Eh zeigen.

Das konkrete Verhalten bei den stackbeeinflussenden Befehlen (PUSH, POP, 
CALL, RET, RETI oder wie sie jeweils heißen), verrät auch das 
Datenblatt.

Üblich ist post-decrement/increment, also erst den Wert in die Adresse 
speichern, auf die der SP zeigt, dann diesen verringern und erst den 
Wert von Stack holen und dann den SP erhöhen.
Es gab auch CPUS, die das anders gemacht haben (6502/6510 z.B.).

Gruß aus Berlin
Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maxim W. wrote:
> Was genau bewirke ich mit dem Befehl
>
> MOV SP, #7Fh

Wenn man jetzt noch errät, welchen Core Du im Kopf hast.

Ich rate mal, es ist ein 8052-Core, denn beim 8051 ist bei 7F ja schon 
Schluß.

SP = 7F bedeutet beim 8052, daß von 80..FF der Stack liegt.

In der Regel setzt man aber den Stack einfach unmittelbar hinter die 
letzte Variablenadresse.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.