Notions sur les instructions d’un ordinateur -- 3311 --
CHAPITRE 3
3.1 Introduction
Les informations traitées par un ordinateur peuvent être de différents types
(texte, nombres, etc.) mais elles sont toujours représentées et manipulées par
l'ordinateur sous forme binaire.
3.2 Codage de l’information
Le codage d'une information consiste à établir une correspondance entre la
représentation externe (habituelle) de l'information et sa représentation interne
dans la machine (ordinateur) c’est à dire d’associer un nombre à un caractère.
Une information peut être représentée de plusieurs façons par exemple on
peut représenter le chiffre NEUF par 9 par IX ou encore par 1001
En effet toute information traitée par l’ordinateur est convertie en binaire. Un
nombre binaire, appelé aussi BIT (Binary digit) est constitué uniquement de 0 et de 1.
8 bits = 1 byte = 1 octet = 1 caractère = 1 « mot machine » dans les ordinateurs
Notions sur les instructions d’un ordinateur -- 3322 --
3.3 Représentation des caractères
Chaque système a un ensemble de caractères qu'il peut lire ou écrire. Au
minimum, cet ensemble devrait comporter les 26 lettres de l'alphabet (majuscules),
les 10 chiffres (digits) et quelques signes de ponctuation tels que virgule, point,
point-virgule, deux-points, signe plus, signe moins, parenthèses, etc.
De nombreux codes ont été utilisés pour représenter les caractères les plus connus
sont code ASCII, ANSI, Unicode...
3.3.1 Caractères ASCII
Le code ASCII (American Standard, Code for Information Interchange), aussi
appelé AI n°5 (Alphabet International 5), se compose de 128 caractères (de 0 à
127), ce qui nécessite 7 bits (27 = 128) pour les représenter. En général, on prendra
un huitième bit comme bit de parité pour vérifier la validité des sept autres.
Les caractères 0 à 31 sont des caractères spéciaux (saut de ligne,
tabulation, beep, etc.).
Les caractères 32 à 127 représentent (les minuscules, les majuscules,
les signes de ponctuation, etc.).
Cependant, il manque notamment à ce code toute une plage de caractères spéciaux
employés en Europe, comme â, ä et î, ainsi que d'autres formats de caractères,
comme l'alphabet cyrillique, etc.
3.3.2 Caractères ANSI
Microsoft a utilisé pour son produit Windows le jeu de caractères ANSI
(American National Standards Institute) qui a été peu à peu étendu pour inclure
les caractères absents du jeu de caractères ASCII.
Notions sur les instructions d’un ordinateur -- 3333 --
3.3.3 Caractères EBCDIC
Le code EBCDIC (Extended Binary Coded Decimal Interchange Code),
code de représentation interne d'information, est le concurrent de l’ASCII dans
le codage des caractères. Ce codage sur 8 bits, parfois 9 (avec parité) est utilisé
principalement par IBM.
3.3.4 Caractères BCD
Le code BCD (Binary Coded Decimal ou DCB Décimal Codé Binaire) conserve
la représentation décimale d'un nombre (centaines, dizaines, unités...), mais chaque
chiffre de ce nombre est reproduit en binaire sur 4 bits ou 6 bits. Beaucoup de
calculettes utilisent un code BCD qui facilite les opérations d’affichage.
3.4 Représentation des nombres
Dans la vie de tous jours, nous avons pris l'habitude de représenter les
nombres en utilisant dix symboles différents, à savoir les chiffres suivants:
0 1 2 3 4 5 6 7 8 9
Ce système est appelée le système décimal (déci signifie dix). Il existe
cependant une multitude de formes de numération (Systèmes de numération,
appelé aussi base), autant qu'il y a de nombres. Nous allons nous intéresser à
quelques-uns uns d'entre eux.
3.4.1 Système de numération en base b
Dans le cas général, en base b, on utilise ai symboles. Notons ai la suite des
chiffres utilisés pour écrire un nombre quelconque.
Tout nombre N peut se mettre sous la forme de :
N an b
n
a n 1 bn 1 ........... a1 b1 a 0 0
b a 1 b1 a 2 b
2
........ a p b
p
Partie entière Partie fractionnaire
Notions sur les instructions d’un ordinateur -- 3344 --
Avec 0 ai < b
0 p
C’est à dire N i
ai b ai b
i
i n i 1
Alors en base b N s’écrit :
N (a nan 1an 2....a1a0 , a a a
1 2 3
.....)b
Partie entière Partie fractionnaire
Avec an an1 an2 .... a1 a0 sont les restes successifs de la division de N par la
base b et a 1 a 2 .......a p sont les chiffres qui "glissent" successivement à gauche
de la virgule lors de multiplications successives par la base.
Donc nous utiliserons des représentations en base binaire (bi: deux), en octal
(oct: huit), en hexadécimal (hexa: seize) comme montre le tableau suivant :
Système Base Symboles utilisés a i
Binaire 2 0 et 1
Quaternaire 4 0, 1, 2 et 3
Octal 8 0, 1, 2, 3, 4, 5, 6 et 7
Décimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9
Hexadécimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E et F
Avec :
A représente le chiffre 10 B représente le chiffre 11
C représente le chiffre 12 D représente le chiffre 13
E représente le chiffre 14 F représente le chiffre 15
Notions sur les instructions d’un ordinateur -- 3355 --
3.4 Du Problème Au Programme
L’ordinateur est puissant et rapide mais il n’a aucune intelligence propre et
aucune imagination. Tout ce dont l’ordinateur est capable, c’est d’exécuter ce que
l’être humain lui commande de faire. Ainsi, vouloir résoudre un problème à l’aide
de l’ordinateur demandera de mettre en œuvre le processus suivant :
À charge de l’être humain de trouver une ou plusieurs solutions au
problème;
Au moins une des solutions trouvées est ensuite exprimée sous forme de
règles opératoires telles que des itérations, des conditionnelles, des tests
booléens, des opérations arithmétiques: c’est la construction de l’algorithme;
L’algorithme est codé sous forme d’instructions dans un langage
exécutable et compréhensible par l’ordinateur : c’est l’activité de
programmation qui construit un programme.
3.5 Les Différents Niveaux de Langage de L’ordinateur
La programmation est donc l’activité qui consiste à traduire par un programme
un algorithme dans un langage assimilable par l’ordinateur. On distinguera trois
niveaux de langage : langage machine (bas niveau), langage d’assemblage,
langage de haut niveau (évolué).
Notions sur les instructions d’un ordinateur -- 3366 --
3.5.1 Langage Machine (Machine Language)
Le langage machine fait référence au langage que les ordinateurs comprennent
directement. Il s'agit du langage binaire (0, 1) qui représente les instructions
exécutées par un processeur. Le langage machine est la forme la plus basse de
langage de programmation et est généralement utilisé pour écrire des programmes
directement exécutables par le matériel informatique.
Les principaux concepts associés au langage machine
o Représentation binaire : Le langage machine utilise une représentation
binaire (0,1) pour exprimer les instructions exécutables par le processeur
(ex : soustraction : 0101 1001).
o Instructions machine : Les instructions machine sont les commandes
élémentaires exécutées par le processeur (ex : soustraction : Sub).
o Codage des opérations : Les opérations de base, telles que l'addition, la
soustraction, le stockage, etc. de données, sont codées sous forme de séquences
spécifiques de bits dans le langage machine (ex : 0101 1001→ soustraction
o Adressage mémoire : Les instructions machine doivent souvent spécifier
des adresses mémoire pour indiquer où trouver ou stocker des données.
o Séquençage d'instructions : Les programmes en langage machine sont des
séquences ordonnées d'instructions. Le processeur exécute ces instructions
séquentiellement, suivant le flux défini par le programme.
o Jeu d'instructions : Chaque architecture de processeur a son propre jeu
d'instructions définissant les opérations que le processeur peut exécuter.
o Exécution : Le langage machine est directement exécutable par le
processeur. Chaque instruction en langage machine est une commande
directe pour le matériel.
o Dépendance matérielle : Le langage machine est étroitement lié à
l'architecture matérielle du processeur.
o Difficulté pour les Humains : Écrire directement en langage machine est
difficile pour un programmeur.
Notions sur les instructions d’un ordinateur -- 3377 --
3.5.2 Langage de haut niveau
Un langage est conçu pour être plus facile à lire à écrire c'est-à-dire
compréhensible par l’être humain. Il offre un haut niveau d'abstraction, facilitant le
développement de logiciels sans se préoccuper des détails de l'architecture matérielle
"ordinateur". C’est un langage qui se rapproche davantage de la compréhension
humaine que de la machine (COBOL, Python, Lisp, Java, C++, etc.).
Les principaux concepts associés au langage de haut niveau
o Abstraction élevée : Les langages de haut niveau permettent aux
programmeurs de s'exprimer en utilisant des concepts plus proches du
langage naturel.
o Facilité d'utilisation : Les langages de haut niveau sont généralement plus
faciles à apprendre pour les débutants en programmation en raison de leur
syntaxe plus simple.
o Portabilité : Les programmes écrits dans des langages de haut niveau
peuvent souvent être exécutés sur différentes plates-formes sans nécessiter
de modifications majeures.
o Productivité : Ces langages sont conçus pour améliorer la productivité des
développeurs. C'est-à-dire il permet de développer des applications plus
rapidement (se concentrer sur la résolution de problèmes plutôt que sur des
détails techniques).
o Pas de détails techniques : Le programmeur n'a pas besoin de gérer des
détails techniques tels que la gestion de la mémoire ou les registres, etc..
3.5.3 Langage Assembleur
L'assembleur est un langage de bas niveau qui se situe entre le langage machine et
les langages de haut niveau. Les instructions en assembleur sont plus proches du
langage machine que du langage de haut niveau, mais elles utilisent des
mnémoniques et des symboles qui les rendent plus lisibles pour les programmeurs
humains.
Notions sur les instructions d’un ordinateur -- 3388 --
Les principaux concepts associés à l’Assembleur
o Codes d’assembleur (Mnémonique) : Les mnémoniques sont des
symboles ou des codes mnémoniques qui représentent des opérations
spécifiques en langage assembleur. Chaque mnémonique correspond à une
instruction spécifique que le processeur peut exécuter. Voici quelques
mnémoniques couramment utilisés en assembleur x86 :
`MOV` : Déplace des données d'une source vers une destination.
`ADD` : Effectue une addition.
`SUB` : Effectue une soustraction.
`MUL` : Effectue une multiplication.
`DIV` : Effectue une division.
`CMP` : Compare deux valeurs.
`JMP` : Effectue un saut inconditionnel.
`JE`, `JNE`, `JG`, `JL`, etc. : Sauts conditionnels (en fonction
des résultats de la comparaison).
o Syntaxe des Instructions : Chaque instruction en assembleur suit une
syntaxe spécifique. La syntaxe varie légèrement d'une architecture à une
autre.
o Notation de Registres et d'Opérandes : Les mnémoniques utilisent
souvent des noms de registres pour spécifier les emplacements de données.
o Formats d'Instruction : Les architectures peuvent avoir différents formats
d'instruction, tels que les formats à un, deux ou trois opérandes.
o Modes d’adressage : les instructions en assembleur font toujours
références à des emplacements mémoire. Il existe plusieurs modes
d’adressage (adressage Immédiat, adressage Direct, adressage Indirect,
adressage Indexé, etc.).
o Symboles et étiquettes : L'assembleur permet l'utilisation de symboles et
d'étiquettes pour représenter des adresses mémoire, des registres
Le passage du haut niveau au bas niveau se fait généralement par le biais de
compilateurs ou d'interprètes, illustrant l'importance du processus de traduction
dans le domaine de la programmation informatique.
Notions sur les instructions d’un ordinateur -- 3399 --
Les instructions machine usuelles varient selon l'architecture du processeur.
Cependant, il existe une liste générale d'instructions qui sont couramment
présentes dans de nombreuses architectures de processeurs, comme par exemple :
Instructions arithmétiques : ADD, SUB, MUL, DIV, INC, etc.
Instructions logiques : AND, OR, XOR, etc.
Instructions de branchement : JMP, JZ, JE, etc.
Instructions de chargement et de rangement : MOV, LOAD, etc.
Instructions de gestion des interruptions, Instructions de contrôle de programme
Donc en résumé, le passage d’un programme « source » écrit en langage de
haut niveau vers un programme exécutable en langage machine est assuré par
un processus comportant plusieurs étapes dont l’une est la compilation.