Willkommen! Einloggen Ein neues Profil erzeugen

erweitert

Segmentwechsel und PC

geschrieben von PascalW 
Segmentwechsel und PC
23.11.2020 14:07:23
Hallo!

In unserer ReTi gibt es ja folgende zwei Phasen:

Fetch phase: Der Befehl wird geladen.
Execute phase: Der Befehl wird ausgeführt.

In der TI kannte ich die fetch phase folgendermaßen: Der PC liefert seine Daten an den Adressbus um dann aus dem Speicher (SRAM) an der jeweiligen Stelle den Befehl auf den Datenbus zu legen um diesen ins Instruktionsregister zu speichern.

Wie sieht das ganze nun mit dem EPROM aus? Wie funktioniert der PC noch einmal? Ich habe gerade folgendes Verständnisproblem:

Nehmen wir an im EPROM steht folgendes Programm welches man beim Systemstart ausführen möchte:

1. LOADI ACC 10
2. LOAD DS f (wobei f die Konstante wie auf ÜB 3 ist, also das Segement zum SRAM wechselt)
3. STORE ACC 0 (Man möchte in Speicherzelle 0 des SRAM speichern)
4. Befehl 4
5. Befehl 5
...
Ende

Mein Problem ist folgendes: Wird beim PC auch das Datensegment beachtet? Oder hat das gar nichts damit zu tun? Wie wird dann festgelegt welchen Speicher der PC als Programmspeicher betrachtet? Also meine Befürchtung war, dass nach ausführen des zweiten Befehls der PC dann Befehle innerhalb vom SRAM sucht und man gar nicht mehr zurück zum EPROM kommt weil das Datensegment nun gewechselt wurde. Verstehe ich hier etwas falsch?

Mit freundlichen Grüßen,
Pascal



2 mal bearbeitet. Zuletzt am 23.11.2020 17:00 von PascalW.
Re: Segmentwechsel und PC
23.11.2020 17:02:37
Hallo,

für den PC wird das Datensegment nicht beachtet.

Der PC hat einen eigenen Treiber PCAd zum Adressbus. Die Ergänzung durch die oberen Bits des DS Registers erfolgt nur in der Leitung vom Instruktionsregister I zum Adressbus (nochmal zusehen in Kap. 2.2 Folie 24).

Ansonsten wird nach der Execute-Phase der Befehle meistens der PC einfach um 1 erhöht (oder bei JUMP um einen beliebigen Wert). Das heißt man bleibt im Normalfall (Sonderfälle wie das Ende des EPROM Speichers erreicht mal ausgenommen) im selben "Speichersegment" in dem man vorher auch war.

Natürlich will man manchmal (z.B. wie in Aufgabe 1 zum Schluss gefordert ist) beispielhaft von der Ausführung eines EPROM Programm auf ein im SRAM gespeichtertes Programm wechseln. Dafür ist es dann nötig ein entsprechenden LOAD und/oder MOVE Befehl zu nutzen um den PC auf das richtige Speichersegment "zu verschieben".

Viele Grüße
Sorry, in diesem Forum dürfen nur registrierte Benutzer schreiben.

Hier klicken, um sich einzuloggen