L'instruction est l'élément clé de l'ordinateur car c'est elle qui permet de spécifier
au processeur l'action à effectuer. Toutes les instructions sont stockées en mémoire et un compteur
dans le processeur permet de passer de l'une à l'autre.
Une instruction est composée de deux éléments:
- le code opération: action à effectuer par le processeur
- le champ opérande: donnée ou bien adresse de la case mémoire contenant une donnée
La taille d'une instruction dépend de l'instruction et de l'opérande, elle est généralement de quelques octets
(1 à 8).
La taille des insructions dépend également de l'architecture du processeur. Elle peut ainsi
atteindre 4 octets dans le cas de processeurs 32 bits, voir 8 octets pour les processeurs x86 64 bits.
L'octet est l'unité qui est utilisée généralement car elle est pratique pour le stockage de certaines données
(notamment les caractères).
code opération |
champ opérande |
L'ensemble des instructions est appelé jeu d'instruction. On peut les répartir selon plusieurs
catégories selon le type d'action que son exécution déclenche.
Les instructions d'affectations permettent de faire des transferts de données entre
les registres et la mémoire, c'est-à-dire:
- soit une écriture (du registre vers la mémoire)
- soit une lecture (de la mémoire vers un registre)
Ce type d'instructions porte sur le registre AX (l'accumulateur). Elle permettent
d'effectuer une opération entre le registre AX et une donnée puis stocker
le résultat dans AX. Ces instructions sont:
- l'addition: AX = AX + donnée
- la soustraction: AX = AX - donnée
- incrémentation: AX = AX + 1
- décrémentation: AX = AX - 1
- décalage à gauche
- décalage à droite
Permet de comparer le registre AX à une donnée. Le résultat de
la comparaison est indiquée grâce à ... des indicateurs...
Ces instructions (ainsi que les instructions de branchements) sont nécessaires
pour permettre une "interactivité", c'est-à-dire qu'en fonction de certains
paramètres le programme va pouvoir avoir divers comportement. Sans ces indicateurs
les programmes auraient un comportement déterminé et le programme ferait
constamment les mêmes actions (comme un film ...).
Ce type d'instruction permet de sauter à une instruction non consécutive à
l'instruction en cours. En l'absence de ce type d'instruction le processeur passe automatiquement
à l'instruction suivante (c'est-à-dire l'instruction contiguë (en mémoire) à l'instruction
en cours). C'est le registre IP qui repère l'instruction suivante à exécuter.
Les instructions de branchement permettent donc de modifier la valeur de ce registre et ainsi de
choisir la prochaine instruction à exécuter.
On distingue deux sortes de branchements:
- Les branchements conditionnels: en fonction d'une condition à satisfaire le processeur traitera le
branchement indiqué ou l'instruction suivante.
- condition satisfaite: exécution de l'instruction située à l'adresse indiquée
- condition non satisfaite: exécution de l'instruction suivante
Les branchements conditionnels sont très utiles, notamment pour créer des boucles
ou des structures conditionnelles.
- Les branchements inconditionnels: on affecte une valeur définie au registre IP, c'est-à-dire que l'on ira exécuter
l'instruction vers laquelle il pointe après celle en cours quoi qu'il arrive!
|