2015-11-21 4 views
2

Ma question est pourquoi y at-il des états 6T dans l'extraction de code de l'instruction CALL alors qu'il y en a 4 pour d'autres instructions dans le microprocesseur 8085. J'ai beaucoup cherché mais je n'ai pas trouvé de réponse satisfaisante.Pourquoi y-a-t-il des états 6T dans l'extraction de code d'opération de CALL au lieu de 4?

Ici: http://www.edaboard.com/thread201650.html il est dit que cela a quelque chose à voir avec les modes d'adressage double utilisés dans le cas de CALL. Mais n'explique pas vraiment pourquoi les états 6T.

Une idée?

EDIT

Cette question a été soulevée quand je suis venu à savoir que CALL prend 18 T-états.

Selon mes calculs, il devrait être: 4 (pour opcode fetch) + 3 + 3 (deux mémoire lit pour lire l'adresse du sous-programme) + 3 + 3 (pour deux mémoire écrit sur la pile) = 16

Ainsi, sur la recherche Internet je suis arrivé à savoir que l'opcode chercher en cas d'une partie CALL prend 6T indique au lieu de 4.

MISE à JOUR

maintenant, après avoir lu les commentaires et en repensant, je suis arrivé à savoir que PUSH prend normalement 12 états-T comme instruction. Nous pouvons ignorer la partie d'extraction de code d'opération pour PUSH en cas d'appel car il n'y a pas d'instruction PUSH explicite, nous avons maintenant 8 (12 - 4). Donc, je pense que c'est à cause de la décrémentation du pointeur de la pile? Parce que même en poussant ça aurait dû être 6 (3 + 3 pour les écritures mémoire), mais ici c'est 8 (4 + 4).

+1

La poussée n'est pas gratuite. –

+0

@ IgnacioVazquez-Abrams: Pousser est simplement l'écriture de la mémoire - prend 3 t-états que j'ai déjà considéré dans mes calculs. Voir mon Edit. – tapananand

+0

@ IgnacioVazquez-Abrams: Est-ce que ce que j'ai mis à jour dans ma question est correct? – tapananand

Répondre

3

6 (opcode fetch) + 3 + 3 (deux mémoire lit pour lire l'adresse du sous-programme) + 3 + 3 (deux mémoire écrit sur la pile) = 18

Je crois donc que ce que vous embrouille est le 6 T indique l'extraction par opcode au lieu de 4 T comme dans le cas habituel.4 Les états T sont utilisés pour récupérer l'opcode comme dans n'importe quelle autre instruction. 2 états T sont utilisés pour gérer le Stack Pointer (SP). Parce qu'au-dessus de la pile, rien n'est stocké. Lorsqu'un appel est rencontré, le contenu actuel du compteur de programme (l'adresse de la ligne dans laquelle l'appel est écrit) est poussé vers la pile. A la fin de l'exécution, le contenu de la pile doit être remis. Ainsi, l'appel nécessite deux états supplémentaires par rapport aux autres instructions.

1

4 états T sont utilisés pour récupérer l'opcode; 2 états T sont utilisés pour décrémenter le Stack Pointer (SP). Parce qu'au dessus de la pile rien n'est stocké.

+1

S'il vous plaît élaborer plus sur votre réponse. – SteveFest