User: alciro    User
 Original    Translate to:  Deutsch  English  Français  中文  
 

Microcontroladores 8051

5.3. Stack oder Stapel

Stack oder Stapel ist eine Datenstruktur, mit Zugriff auf die LIFO (Last In First Out), die zuletzt in, first out. Wie kann Ähnlichkeit mit der Lagerung in einem Stapel Bücher, die auf einander gelagert sind assoziiert werden, sind neue Elemente auf den letzten gestapelt und Bruder entfernt werden entfernt letzten gestapelt werden.

Diese Art der Datenstruktur ist einfach zu Systemen für Mikroprozessoren entwickeln und ist nützlich für die Arbeit mit Listen von Daten und ist für das Innenleben des Mikroprozessors in Unterprogramme und Interrupts unerlässlich.

Einige Chips kann der Innenseite Stack, was eine sehr schnelle, aber begrenzte Größe haben die meisten Mikroprozessoren der im externen Speicher-Stack, eine Tatsache, die eine große Speicherkapazität und Kontrolle der Lage sieht, obwohl der Zugang langsamer.

5.3.1. Stack-Zeiger (Stack Pointer)

Der Stack-Pointer SP (Stack Pointer), wie der Name schon sagt, ein Rekord Zeiger auf die Speicherstelle, an den Stapel. In der 8051-Familie Register SP Speicher 81F befindet sich im SFR.

Wenn Sie Datensätze einen Reset der SP Register Wert eingestellt ist automatisch mit dem 07H, 08H, so dass der Stapel gesetzt standardmäßig in der Lage, eine Fläche von Banken, die verwendet wird. Es ist ratsam, die Batterie in einem anderen Bereich des Speichers ändern, zum Beispiel 30H Position (außerhalb der Platte). So platzieren Sie den Stack-Pointer wird als die erste Anweisung des Programms gesetzt werden:

MOV SP,#2FH ; Situar el puntero del stack en la posición 30H

Stack-Zeiger (Stack Pointer)

5.3.2. PUSH

Der PUSH-Befehl, Anschrift befindet sich auf dem Stapel der Inhalt der zunächst zur Erhöhung der Stack-Pointer und folgen Sie dann den Inhalt der Adresse ist SP kopiert ins RAM Angabe der Stack-Pointer.

PUSH-Befehl Dir

1 º
(SP) = (SP) +1 Steigern Stack Zeiger auf die nächste Position
2 º
((SP)) = (Adresse)
Anlegen des Stacks (bei SP wies Adresse) Content Management

Beispiel:

MOV A,#3 ; Cargar el acumulador con la constante 3
MOV B,#5 ; Cargar el registro B con la constante 5
...
...
PUSH A ; Situar en el Stack el contenido del Acumulador
PUSH B ; Situar en el Stack el contenido del registro B

PUSH-Befehl

5.3.3. POP

POP-Anweisung liest den Inhalt der Adresse des Stacks zeigt die SP (Stack-Pointer) und legt es in die angegebene Adresse, dann dekrementiert den Stack-Pointer SP Verlassen der Position.

Dir POP Instruction

1 º
  (Adresse) = ((SP))
Erinnert daran, den Inhalt der Adresse des Stack (auf die SP)
2 º
  (SP) = (SP) -1 Stack-Zeiger auf die vorherige Position dekrementiert

Es sei daran erinnert, dass für das reibungslose Funktionieren des Stapels, den letzten Daten, die eingegeben werden muss die erste zu erholen, wenn wir uns auf das obige Beispiel, hat auf den Stapel gelegt den Inhalt des Registers A und dann B, beim Abrufen der Daten muss in umgekehrter Reihenfolge eingegeben werden, zuerst B und dann A.

Beispiel:

...
...
POP B ; Recupera en el registro B el contenido del Stack
POP A ; Recupera en el acumulador el contenido del Stack

POP Unterricht
Loading
copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |