Microprocesseur - 8086 Unités fonctionnelles

Le microprocesseur 8086 est divisé en deux unités fonctionnelles, à savoir, EU (Unité d'exécution) et BIU (Unité d'interface de bus).

UE (unité d'exécution)

L'unité d'exécution donne des instructions à BIU indiquant où chercher les données, puis décode et exécute ces instructions. Sa fonction est de contrôler les opérations sur les données à l'aide du décodeur d'instructions et de l'ALU. EU n'a pas de connexion directe avec les bus système comme le montre la figure ci-dessus, il effectue des opérations sur les données via BIU.

Parlons maintenant des parties fonctionnelles des microprocesseurs 8086.

ALU

Il gère toutes les opérations arithmétiques et logiques, comme les opérations +, -, ×, /, OR, AND, NOT.

Registre du drapeau

C'est un registre 16 bits qui se comporte comme une bascule, c'est-à-dire qu'il change d'état en fonction du résultat stocké dans l'accumulateur. Il a 9 drapeaux et ils sont divisés en 2 groupes - les drapeaux conditionnels et les drapeaux de contrôle.

Drapeaux conditionnels

Il représente le résultat de la dernière instruction arithmétique ou logique exécutée. Voici la liste des indicateurs conditionnels -

  • Carry flag - Cet indicateur indique une condition de débordement pour les opérations arithmétiques.

  • Auxiliary flag- Lorsqu'une opération est effectuée à ALU, il en résulte un report / barrow du quartet inférieur (c'est-à-dire D0 - D3) au quartet supérieur (c'est-à-dire D4 - D7), alors ce drapeau est positionné, c'est-à-dire que le report donné par le bit D3 à D4 est Drapeau AF. Le processeur utilise cet indicateur pour effectuer une conversion binaire en BCD.

  • Parity flag- Ce drapeau est utilisé pour indiquer la parité du résultat, c'est-à-dire que lorsque les 8 bits d'ordre inférieur du résultat contiennent un nombre pair de 1, le drapeau de parité est positionné. Pour un nombre impair de 1, l'indicateur de parité est réinitialisé.

  • Zero flag - Cet indicateur est mis à 1 lorsque le résultat d'une opération arithmétique ou logique est égal à zéro, sinon il est mis à 0.

  • Sign flag - Ce drapeau contient le signe du résultat, c'est-à-dire lorsque le résultat de l'opération est négatif, alors le drapeau de signe est mis à 1 sinon mis à 0.

  • Overflow flag - Cet indicateur représente le résultat lorsque la capacité du système est dépassée.

Drapeaux de contrôle

Les drapeaux de contrôle contrôlent les opérations de l'unité d'exécution. Voici la liste des indicateurs de contrôle -

  • Trap flag- Il est utilisé pour le contrôle en une seule étape et permet à l'utilisateur d'exécuter une instruction à la fois pour le débogage. S'il est défini, le programme peut être exécuté en une seule étape.

  • Interrupt flag- C'est un drapeau d'activation / désactivation d'interruption, c'est-à-dire utilisé pour autoriser / interdire l'interruption d'un programme. Il est défini sur 1 pour une condition d'interruption activée et sur 0 pour une condition d'interruption désactivée.

  • Direction flag- Il est utilisé dans le fonctionnement des chaînes. Comme son nom l'indique lorsqu'il est défini, les octets de chaîne sont accessibles de l'adresse mémoire supérieure à l'adresse mémoire inférieure et vice-versa.

Registre à usage général

Il existe 8 registres à usage général, c'est-à-dire AH, AL, BH, BL, CH, CL, DH et DL. Ces registres peuvent être utilisés individuellement pour stocker des données 8 bits et peuvent être utilisés par paires pour stocker des données 16 bits. Les paires de registres valides sont AH et AL, BH et BL, CH et CL, et DH et DL. Il se réfère respectivement à AX, BX, CX et DX.

  • AX register- Il est également connu sous le nom de registre d'accumulateur. Il est utilisé pour stocker les opérandes pour les opérations arithmétiques.

  • BX register- Il est utilisé comme registre de base. Il est utilisé pour stocker l'adresse de base de départ de la zone de mémoire dans le segment de données.

  • CX register- Il est appelé compteur. Il est utilisé dans l'instruction de boucle pour stocker le compteur de boucle.

  • DX register - Ce registre est utilisé pour contenir l'adresse du port d'E / S pour l'instruction d'E / S.

Registre de pointeur de pile

Il s'agit d'un registre 16 bits, qui contient l'adresse du début du segment à l'emplacement mémoire, où un mot a été le plus récemment stocké sur la pile.

BIU (unité d'interface de bus)

BIU prend en charge tous les transferts de données et d'adresses sur les bus pour l'UE, tels que l'envoi d'adresses, l'extraction d'instructions de la mémoire, la lecture des données des ports et de la mémoire ainsi que l'écriture de données sur les ports et la mémoire. EU n'a pas de connexion directionnelle avec les bus système, c'est donc possible avec la BIU. EU et BIU sont connectés au bus interne.

Il comprend les éléments fonctionnels suivants -

  • Instruction queue- BIU contient la file d'attente d'instructions. BIU obtient jusqu'à 6 octets d'instructions suivantes et les stocke dans la file d'attente d'instructions. Lorsque EU exécute des instructions et est prêt pour sa prochaine instruction, il lit simplement l'instruction à partir de cette file d'attente d'instructions, ce qui augmente la vitesse d'exécution.

  • La récupération de l'instruction suivante pendant l'exécution de l'instruction en cours est appelée pipelining.

  • Segment register- BIU dispose de 4 bus de segment, à savoir CS, DS, SS et ES. Il contient les adresses des instructions et des données en mémoire, qui sont utilisées par le processeur pour accéder aux emplacements mémoire. Il contient également 1 registre de pointeur IP, qui contient l'adresse de la prochaine instruction à exécuter par l'UE.

    • CS- Cela signifie segment de code. Il est utilisé pour adresser un emplacement mémoire dans le segment de code de la mémoire, où le programme exécutable est stocké.

    • DS- Il signifie segment de données. Il se compose de données utilisées par le programme et est accessible dans le segment de données par une adresse de décalage ou le contenu d'un autre registre qui contient l'adresse de décalage.

    • SS- Il signifie Stack Segment. Il gère la mémoire pour stocker les données et les adresses pendant l'exécution.

    • ES- Il signifie Extra Segment. ES est un segment de données supplémentaire, qui est utilisé par la chaîne pour contenir les données de destination supplémentaires.

  • Instruction pointer - C'est un registre 16 bits utilisé pour contenir l'adresse de la prochaine instruction à exécuter.