Wenn Sie beim Zugriff auf den Speicher die BP-Adressierung verwenden, ist das Standardsegmentregister „SS“, das Stapelsegment. Das SS-Stapelsegment bezieht sich normalerweise auf einen Speicherbereich, der im Stapelmodus arbeitet. In einer Architektur, die eine segmentierte Speicherverwaltung für die Programmspeicherzuweisung verwendet, wird das Stapelsegment zum Speichern lokaler Variablen und Funktionsrückgabeadressen verwendet.
Das Segmentregister ist für die segmentierte Speicherverwaltung eingestellt. Computer müssen Speicher segmentieren, um ihn verschiedenen Programmen zuzuweisen (ähnlich wie beim Festplatten-Paging). Bei der Beschreibung der Speichersegmentierung sind folgende Segmentinformationen erforderlich: 1. Größe des Segments; 2. Verwaltungsattribute des Segments (Schreiben verboten/Ausführung verboten/systemexklusiv usw.). Zum Speichern dieser Informationen müssen 8 Byte (64 Bit) verwendet werden, das Segmentregister verfügt jedoch nur über 16 Bit, sodass nur die Segmentnummer (Segmentselektor, auch übersetzt als „Segmentselektor“) im Segmentregister gespeichert werden kann. Anschließend wird die Segmentnummer der vorhandenen GDT (globale (Segment-)Deskriptortabelle, globale Segmentnummern-Datensatztabelle) im Speicher zugeordnet und liest Segmentinformationen.
8086CPU verfügt über 20 Adressleitungen und der maximal adressierbare Speicherplatz beträgt 1 MB. Die 8086-Register sind nur 16 Bit groß, und der Befehlszeiger (IP) und das Indexregister (SI, DI) sind ebenfalls 16 Bit groß. Es ist unmöglich, 1 MB Speicherplatz mit einer 16-Bit-Adresse zu adressieren. Daher muss der Speicher segmentiert werden, dh der 1-MB-Speicherplatz wird in 2 ^ 4, dh 16 Segmente, unterteilt, wobei jedes Segment 64 KB nicht überschreitet (2 ^ 16, 16-Bit-Datenleitungen können adressiert werden). Im 8086 sind vier 16-Bit-Segmentregister eingerichtet, um vier Arten von Segmenten zu verwalten: CS ist das Codesegment, DS ist das Datensegment, SS ist das Stapelsegment und ES ist das zusätzliche Segment. Nachdem der Speicher segmentiert ist, verfügt jedes Segment über eine Segmentbasisadresse. Das Segmentregister speichert die höherwertigen 16 Bits der Segmentbasisadresse. Diese 16-Bit-Adresse kann durch Verschieben der 16-Bit-Adresse um vier gebildet werden Bits (mit 4 Nullen dahinter).
Das Segmentregister CS zeigt auf das Speichersegment, in dem das Programm gespeichert ist. Durch Zusammensetzen wird der Offset des nächsten auszuführenden Befehls im Speicher abgerufen Segment.
Das Segmentregister SS zeigt auf das für den Stapel verwendete Speichersegment, und SP wird verwendet, um auf die Oberseite des Stapels zu zeigen. Durch Zusammensetzen kann auf die oberste Einheit des Stapels zugegriffen werden. Wenn der Offset außerdem das Zeigerregister BP verwendet, ist sein Standardsegmentregister auch SS, und BP kann verwendet werden, um auf den gesamten Stapel und nicht nur auf die Oberseite des Stapels zuzugreifen.
Das Segmentregister DS zeigt auf das Datensegment und ES zeigt auf das zusätzliche Segment. Beim Zugriff auf den Operanden wird einer der beiden mit einem Offset kombiniert, um die physikalische Adresse der Speichereinheit zu erhalten. Der Offset kann ein bestimmter numerischer Wert, eine symbolische Adresse, der Wert eines Zeigerregisters usw. sein. Die spezifische Situation wird durch den Adressierungsmodus des Befehls bestimmt.
Normalerweise ist das Standarddatensegmentregister DS, mit einer Ausnahme: Bei der Ausführung von Zeichenfolgenoperationen wird das Segmentregister der Zieladresse als ES angegeben. Natürlich können wir in allgemeinen Anweisungen auch das Segmentregister des Operanden ändern, indem wir das Feld „Segmentersetzung“ im Präfix ändern.
„Optionale Segmentregister“ sind Segmentadressen, mit denen die Werte dieser Segmentregister als Operandenadressen erzwungen werden können.
Das obige ist der detaillierte Inhalt vonWenn beim Zugriff auf den Speicher die BP-Adressierung verwendet wird, welches ist das Standardsegmentregister?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!