Lycée   >   Premiere   >   NSI   >   Exécuter une séquence d'instructions

Exécuter une séquence d'instructions

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectif

Comprendre des instructions du langage machine, le seul langage compréhensible par le processeur.

Points clés
  • Un programme est stocké dans la mémoire d’un ordinateur sous la forme d’une suite d’instructions, on appelle cela le langage machine.
  • Le langage machine est cependant difficile à utiliser. On passe donc par un assembleur qui va représenter le langage machine par un langage compréhensible par les humains.
Pour bien comprendre
  • Architecture d’un ordinateur
  • Notions de registres et de mémoires
1. Le fonctionnement général d’un processeur
Le langage machine (ou code machine) est la suite de bits directement utilisable par le processeur, qui compose une suite d’instructions. Cette suite d’instruction permet ainsi d’exécuter des programmes qui sont stockés dans la mémoire de l’ordinateur.
a. Le principe d’exécution d’une instruction machine

Ces instructions, réalisées au rythme de l’horloge du processeur, se font en trois temps.

  1. L’instruction est chargée.
    Le CPU (processeur) récupère l’instruction à l’adresse indiquée par le registre IP, puis stocke cela sur le registre IR.
  2. Le CPU utilise les données du registre IR. 
    C’est à ce moment que les données dont le CPU a besoin sont chargées dans d’autres registres ou dans la RAM.
  3. L’instruction est exécutée.
    Cela implique une mise à jour de la valeur dans le registre IP pour continuer le programme.
b. La composition d’une instruction machine
Une instruction machine est une opération élémentaire qu'un programme demande à un processeur d'effectuer.

Elle est composée de deux parties :

  • le champ code opération (« opcode » en abrégé) qui indique au CPU l’opération à effectuer ;
  • le champ opérande qui peut être :
    • une valeur immédiate ;
    • un registre de la CPU ;
    • une donnée à aller chercher dans la RAM.
c. Le type d’instruction machine

Pour simplifier, les instructions machines sont de trois types :

  • les instructions arithmétiques (addition, soustraction, multiplication, etc.) sur des entiers ou des flottants ;
  • les instructions de transferts pour permettre l’acheminement d’une donnée d’un registre du CPU vers la RAM et vice-versa ;
  • les instructions de sauts pour permettre de réaliser d’autres opérations.

Ces différentes instructions sont codées en binaire ou en hexadécimal.

Exemple
Voici une portion d’une instruction machine en hexadécimal.
2. L’initiation au langage assembleur

Le langage machine est très difficile à manipuler, on utilise donc un langage assembleur : ce langage représente le langage machine sous une forme lisible par un humain.

On va utiliser le langage assembleur x86 d’Intel car c’est le langage assembleur le plus documenté.

a. Les sections d’un programme en langage assembleur

Un programme en langage assembleur est constitué de trois parties, appelées sections.

Première section .data
La première section .data définit des zones mémoire non modifiables pour stocker des constantes sous la forme suivante.

adresse typage valeur

Pour le typage (la nature des valeurs), on utilise : db pour un octet (8 bits), dw pour 2 octets (16 bits) et dd pour 4 octets (32 bits).

Exemple
section .data    La section .data du programme en assembleur
alpha db 3 initialise à l’adresse mémoire nommée alpha un mot d’un octet contenant 3. (« db » pour define byte)
Deuxième section .bss
La deuxième section .bss réserve des zones mémoire modifiables pour des variables avec les mots clés resb pour un octet, resw pour 2 octets et resd pour 4 octets.
Exemple
section .bss    La section .bss du programme en assembleur
a resb 3 permet de réserver 3 mots de 1 octet à l’adresse a (pour la variable a)
b db 6 et permet de réserver un mot d’un octet à l’adresse b (variable b) initialisée à 6.

Pour utiliser la variable contenue dans la mémoire d’adresse a, on devra taper [a].

Troisième section .text
La dernière section .text contient le programme.
b. Description d’un programme en assembleur

Le langage assembleur x86 d’Intel possède 8 registres, qui sont A, B, C, D, E, F, G et H pour simplifier.

Voici quelques instructions associées à ce langage afin de mieux le comprendre.

Des instructions de calculs
Ce langage possède des instructions de calculs, qui ont la forme suivante.

nom_opération destination, source

Les opérations valides sont add pour additionner, sub pour soustraire, puis and et or pour les opérations logiques.

Exemples
  • add B,1 va permettre d’ajouter la valeur 1 à la valeur B.
  • sub A,2 va permettre de soustraire le nombre 2 à la valeur A.
Les instructions de test et de saut
Le langage assembleur possède une instruction de test entre deux valeurs v1 et v2 :

cmp v1, v2.

Cette instruction compare la différence v1 - v2 à 0 et indique le résultat en levant (stockant 1 à l’intérieur) un drapeau, c’est-à-dire en stockant 1 :

  • dans un registre nommé zf s’il y a égalité ;
  • dans un registre nommé sf s’il n’y a pas égalité.

Ces drapeaux (registres zf et sf) permettent de diriger le saut vers une autre ligne ou vers une boucle du programme.

Si v1 - v2 = 0
Pour indiquer un saut s’il y a égalité, on utilise l’instruction de saut : je adresse.

Cette instruction de saut permet de faire un saut à l’adresse indiquée si le drapeau zf vaut 1, donc s’il y a égalité entre les valeurs testées.

Si v1 - v2 ≠ 0
Pour indiquer un saut s’il n’y a pas égalité, on utilise la commande jne.

Cette instruction de saut permet de faire un saut à l’adresse indiquée si le drapeau sf vaut 1, donc s’il y n’y a pas égalité entre les valeurs testées.


Il existe aussi :

  • l’instruction jg (pour jump greater) pour indiquer un saut si v1 > v2 ;
  • l’instruction jl (pour jump lower) pour indiquer un saut si v2 > v1 ;
  • et enfin l’instruction jmp (pour jump) pour indiquer un saut sans aucune condition.
Les instructions de transfert
Le langage assembleur possède des instructions de transfert pour copier et donc déplacer des données entre des registres ou des adresses mémoires.

La commande mov destination, source permet ainsi de copier le contenu de la source dans la destination.
Exemple
Langage assembleur Explication
mov A, 10 Copie 10 dans le registre A
mov B, 5 Copie 5 dans le registre B
bcl: On entre dans une boucle nommée bcl.
cmp A, B Comparaison des registres A et B
je fin Si A=B, on saute vers la boucle fin.
add B, 1 Ajout de 1 dans le registre B
Le registre B contient 5 et on ajoute 1, B contient donc la valeur 6.
fin : On entre dans une boucle nommée fin.
mov C, 8 Copie 8 dans le registre C

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Reçois l’intégralité des bonnes réponses ainsi que les rappels de cours associés

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

NSI

Comprendre la notion de réseau et de protocole

NSI

Comprendre les protocoles de la couche physique

NSI

Comprendre les protocoles de la couche liaison dans un réseau local

NSI

Comprendre les protocoles de la couche réseau

NSI

Comprendre les protocoles de la couche transport

NSI

Décrire des protocoles de récupération de paquets

NSI

Découvrir le système d'exploitation

NSI

Différencier les principaux systèmes d'exploitation

NSI

Utiliser les commandes de base sur un système d'exploitation

NSI

Gérer les différents droits sur les fichiers