Was ist der Zweck von CS und IP-Register in die Intel 8086 assembly?
So, wie die Frage besagt, was ist der Sinn von CS und IP-Register in die intel 8086
Fand ich diese Erklärung:
Code-segment (CS) ist ein 16-bit register enthält die Adresse des 64 KB-segment mit Prozessor
Anweisungen. Der Prozessor verwendet CS-segment für alle Zugriffe auf die Anweisungen verwiesen wird
instruction-pointer (IP) registrieren. CS register kann nicht direkt geändert werden. Das CS-register
Sie wird automatisch aktualisiert, während weit springen, weit Ruf und weit return-Anweisungen.
und diese IP:
Instruction Pointer (IP) ist ein 16-bit register.
Ich nicht wirklich verstehen, was dies bedeutet im Grunde, also, wenn jemand könnte eine "anschauliche" Erklärung, das wäre toll 🙂
InformationsquelleAutor der Frage idjuradj | 2013-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da der Instruction-Pointer (IP) ist 16 bit, das heißt Sie können nur 64 Kb Anweisungen (2^16), das war nicht viel, selbst in den 80er Jahren. So erweitern Sie den Adressbereich ein zweites register, das Adressen 64 Kb Blöcke. Kann man cs:ip zusammen als ein 32-bit-register, das ist dann in der Lage der Adressierung 2^32 bytes...ie 4G, die ist, was Sie erhalten, das auf einem Prozessor, die verwendet 32-bit-Adressen. Der 8086 war mit 20 bit-Adressen, so können Sie Zugriff auf 1M Speicher.
InformationsquelleAutor der Antwort user1666959
Die physikalische Adresse berechnet sich aus 2 teilen.
i) die segment-Adresse.
ii) offset-Adresse.
Die CS(code-segment-register) genutzt werden, um das code-segment des Speichers ich.e eine Position im Speicher, wo der code gespeichert ist. Die IP(Instruction pointer) enthält, der offset im code-segment des Speichers. Also CS:IP zeigen auf den Ort (ich.e zur Berechnung der physischen Adresse)der code im Speicher.
InformationsquelleAutor der Antwort kiran james
Die Anweisung, die ausgeführt wird weiter, dass bei der Speicheradresse gleich:
Diese ermöglicht 20 bits der Speicher angesprochen werden, trotz Register nur 16 bit breit (und schafft es auch zwei verschiedene Arten zu Kodieren die meisten der Adressen).
Die Wirkung von CS ist Analog zu der des anderen segment-Register. E. g.,
DS
Schritten Daten-Zugriffe (die nicht angeben, dass ein anderes segment register), indem Sie16 * DS
.CS
Den Anweisungen, ändern CS:
CS nicht mich geändert
mov
wie die anderen Segmentregister. Sie versuchen zu codieren, es mit der standard-Kennung für CS, die GNU-GAS-2.24 macht, ohne sich zu beschweren, wenn Sie schreiben:führt zu einem ungültigen code exception bei der Ausführung.
Zu beobachten, die Wirkung von CS, versuchen Sie eine der folgenden boot-Sektor und es läuft in QEMU, wie hier beschrieben https://stackoverflow.com/a/32483545/895245
IP -
IP erhöht sich automatisch, sobald eine Anweisung ausgeführt wird, durch die Länge der Kodierung der Anweisung: dies ist der Grund, warum das Programm bewegt sich vorwärts!
IP wird geändert, indem Sie die gleichen Anweisungen für die Bearbeitung von CS, und durch die nicht-weit-Versionen der Anleitung als auch (häufiger Fall).
IP kann nicht direkt beobachtet werden, so ist es schwieriger zu spielen. Prüfen Sie diese Frage nach alternativen:
Lesung Programm-Counter direkt
InformationsquelleAutor der Antwort Ciro Santilli 新疆改造中心 六四事件 法轮功
Wenn Sie schreiben .code in der assembly-Programm text, das .code-Punkte der cs-Wert. jeder Befehl später oder früher in der Datei angesprochen werden als pro cs:ip , wobei ip ist ein offset-Wert von cs.
Natürlich, Sie haben zu Bedenken, dass die Montage-compiler konvertiert den text in Maschinencode-Anweisungen zuerst.
InformationsquelleAutor der Antwort zeimer
seit dem 8086 Prozessor verwendet 20 bit Adressierung, können wir auf 1-MB-Speicher, aber die Register des 8086 ist nur 16 bit,so dass der Zugriff auf die Daten aus dem Speicher verbinden wir die Werte vorhanden im code-segment-Register und instruction-pointer-Register zum erzeugen einer physikalischen Adresse erfolgt durch verschieben der Wert von CS 4 bits
nach Links und dann hinzufügen mit dem Wert IP
BEISPIEL:
Wert von CS ist 1234Hex(hexa dezimal)
Wert von IP ist 5678Hex
nun den Wert von CS nach dem Umzug 4 bits nach Links ist 12340Hex dann nach dem hinzufügen mit der IP-Wert ist es 179B8Hex die physikalische Adresse
InformationsquelleAutor der Antwort Amrish Ak
IP - register IP Instruction-Pointer. Seine Funktion ist die gleiche wie PC (Programm counter) mit anderen Mikroprozessoren, die zeigen, um die nächste Instruktion geholt werden, die von BIU-Einheit zu Futtermittel in die EU-Einheit.
InformationsquelleAutor der Antwort masood qazi