8085; Warum erfordert RET keinen 6-T-States-Fetch-Zyklus?

Der CALLBefehl erfordert 5 Maschinenzyklen, nämlich OPCODE-FETCH, MEMORY READ, MEMORY READ, MEMORY WRITE, MEMORY WRITE. Der OPCODE-FETCH-Zyklus von CALL hat 6 T-Zustände, um sich um die Dekremente des Stapelzeigers zu kümmern .

RETBefehl erfordert 3 Maschinenzyklen , OPCODE-FETCH, MEMORY READ, MEMORY READ, auch hier muss der Mikroprozessor den Stapelzeiger wie zuvor zweimal inkrementieren , um zu platzen. Aber der OPCODE-FETCH-Zyklus hat nur 4 T-Zustände, warum ist das so?

Ich habe eine vage Ahnung, warum; in CALLund PUSHder SP muss im Gegensatz zu REToder zuerst dekrementiert werden POP. Dieses erste Dekrement allein wird in den letzten zwei T-Zuständen des Zyklus berücksichtigt FETCH. Aber warum sollte das zwei T-States erfordern? Auch hier bin ich mir wirklich nicht sicher. Freundlich helfen.

Antworten (1)

Es wäre aufschlussreich, CALLden Unterricht noch einmal zu analysieren, bevor man über RETden Unterricht spricht.

ANWEISUNG IN 8085 ANRUFEN

Wie Sie sagten, besteht es aus: Opcode Fetch, Memory Read, Memory Read, Memory Write,Memory Write

8085 folgt der Dekrement- und Push- Methodik beim Pushen zum Stapeln.

Opcode Fetchin 8085 sind typischerweise 4 T-Zustände. Für CALLden Unterricht sind jedoch 2 zusätzliche T-Zustände erforderlich. Dies liegt daran, dass - nach dem Holen und Decodieren der Stack-Zeiger vor dem ersten Memory WriteZyklus dekrementiert werden muss, der das MSB des aktuellen PCs im Stack speichert.

Während des ersten Memory Writewird der Wert gepusht und der Stapelzeiger vom Prozessor erneut dekrementiert. Dies erfolgt parallel, sodass der nächste Memory WriteZyklus sofort beginnen kann, ohne dass zusätzliche T-Zustände verloren gehen. Im zweiten Memory Writewird das LSB von PC auf den Stapel geschoben, aber der Stapelzeiger muss nicht dekrementiert werden, da keine weiteren Schreibvorgänge kommen.

Memory ReadZyklus ist, wo die Verzweigungsadresse in WZ-internen Registern gespeichert wird.

Jeder Memory Writehat 3 T-Zustände und jeder Memory Readhat auch 3 T-Zustände.

Also T-Zustände insgesamt = 4 + 2 + 3 + 3 + 3 + 3 = 18

RET-ANWEISUNG IN 8085

Es besteht aus: Opcode Fetch, Memory Read,Memory Read

Auch hier Opcode Fetchsind 4 T-Zustände. 8085 folgt jedoch der Pop- und Inkrement- Methodik, während es vom Stack springt. Der Stapelzeiger zeigt bereits auf das LSB der Rücksprungadresse, sodass der Zeiger nicht vorher erhöht werden muss.

Während des ersten Memory Readwird der Wert, auf den gezeigt wird, gelesen, und der Stapelzeiger wird ebenfalls parallel vom Prozessor inkrementiert. Beim nächsten Memory Readwird das MSB der Rücksprungadresse gelesen und der Stackpointer parallel wieder inkrementiert.

Also insgesamt T Zustände = 4 + 3 + 3 = 10

Also in werden im Gegensatz zu in RETkeine zusätzlichen T-Zustände benötigt .Opcode FetchCALL

Meine Vermutung war also richtig. Aber da ist diese naive Frage: Warum braucht ein Dekrement 2 T-Zustände?
Stapelzeiger ist nur ein Register, es wird nur ein Taktzyklus oder T-Zustand benötigt, um ihn zu dekrementieren oder zu inkrementieren. Der Wert des Registers kann dann im nächsten Zyklus an den Adressbus weitergegeben werden. Extra-Zyklus sollte aufgrund der Registrierung dazwischen liegen.
Wunderbare Antwort. Ich habe die Klarheit sehr genossen! Ich habe meinen vagen Kommentar gelöscht.