Architecture des Ordinateurs
et Assembleur
2021/2022
Plan du Cours
I. Représentation de l’information
II. Architecture de base d’un ordinateur
III.Algèbre de Boole & Logique combinatoire
IV.Structure interne des Microprocesseurs
V. Programmation en assembleur
2
Objectif du cours
Connaître les composants d’un ordinateur moderne et les technologies qu’ils utilisent
Comprendre les grands principes de fonctionnement d’un ordinateur
Comment s’exécutent les programmes ?
Comment fonctionnent les divers périphériques ?
Maîtriser la programmation en assembleur
3
Introduction
4
Historique
1642: Blaise Pascal invente la machine d'arithmétique
1673: Gottfried Wilhelm Von Leibniz ajouta à la Pascaline la multiplication et la
division.
1854: George BOOLE publie un essai sur une algèbre pour simuler les raisonnement
logiques (vrai / faux)
1938: Konrad Zuse invente un ordinateur qui fonctionne grâce à des relais
électromécaniques : le Z3. (Utilisation du binaire au lieu du décimal).
1943: Howard Aiken met au point un ordinateur programmable (Mark I d'IBM)
1945: John Von Neumann : définit l’architecture des ordinateurs modernes : la
machine de von Neumann
5
Historique
1948: le transistor est créé par la firme Bell Labs.
1960: l'IBM 7000 est le premier ordinateur à base de transistor.
1971: le premier microprocesseur, l'Intel 4004, fait son apparition. Il permet d'effectuer
des opérations sur 4 bits simultanément.
1976: Steve Wozniak et Steve Jobs créent le Apple I. Cet ordinateur possède un clavier,
un microprocesseur, RAM et mémoire vidéo.
1981: IBM commercialise le premier « PC » composé d'un processeur 8088
…
6
Définitions
Architecture d’un système ?
Représente l’organisation des différentes unités/ composants d’un
système et leurs interconnexions
Un ordinateur?
Une machine de traitement de l’information, capable de:
Recevoir une information à travers un périphérique d’entrée.
Mémoriser une information sur une mémoire.
Effectuer automatiquement un traitement sur une information
suivant un programme.
Délivrer une information sur un périphérique de sortie.
7
Besoin du codage d’information
Un ordinateur manipule toute sorte d’information :
Numérique
Alphabétique
Graphique
Audio
Vidéo
Programmes.
...
8
Besoin du codage d’information
Information numérique = information binaire
= 1 bit (l’unité de de l’information)
Représentée par 2 signaux électriques
Chaque signal élémentaire peut alors se trouver dans l’un de ces deux
états 0 ou 1.
Codage : Codée par « 0 » logique ou « 1 » logique
Différents codages pour représenter une information
9
Les systèmes de numération
Historique
Codage des nombres : dans un but de calcul
Systèmes et bases de numérotation pour représenter des nombres
Méthodes pour compter et calculer
Un système de numération est un ensemble de règles qui permet de former les
nombres, les dire, les écrire et calculer.
Exemple: Représentation usuelle du 145 = ?
= 1 × 102 + 4 × 101 + 5 × 100
10
Les systèmes de numération
Les systèmes de numération les plus courants :
Le système décimal (base 10) : utilise les 10 chiffres : 0, 1, 2, 3, 4, 5,
6, 7, 8 et 9.
Le système binaire (base 2) : utilise les 2 chiffres : 0 et 1.
Le système octal (base 8) : utilise les 8 chiffres : 0, 1, 2, 3, 4, 5, 6 et 7.
Le système hexadécimal (base 16) : utilise les 16 chiffres : 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A, B, C, D, E et F.
11
Les systèmes de numération
Trois notions interviennent dans un système:
• La base B du système, c'est un nombre entier quelconque.
• Les digits du système sont des caractères tous différents et
représentent chacun un élément de la base; il y en a donc B au total.
• Poids du digit selon son rang.
Expression d’un nombre X en base B :
X = aNBN + aN-1BN-1 + … + a1B1 + a0B0
• 0 ≤ ai < B, quelque soit l’indice i (de 0 à N).
• On écrit X, en ignorant les puissances de B : X = (aNaN-1…a1a0)B
12
Les systèmes de numération
Expression d’un nombre X en base B :
X = aNBN + aN-1BN-1 + … + a1B1 + a0B0
Exemple:
9810 = 9 x 101 + 8 x 100
1012 = 1 x 22 + 0 x 21 + 1 x 20 = 4+1 = 510
1368 = 1 x 82 + 3 x 81 + 6 x 80 = 64+24+6 = 9410
13
Les systèmes de numération: Changement de base
Décimal vers base B:
On procède par une série de divisions entières par B
Division du nombre décimal N par B : donne une valeur v0 et un reste r0
On divise v0 par B : donne v1 et reste r1
On recommence pour v1 et ainsi de suite
Quand vi < B, c'est fini
Le résultat de la prochaine division donnera 0
On écrit: (N)B = viri-1...r1r0
14
Les systèmes de numération: Changement de base
Décimal vers base B:
Exemple : (1234)10 en décimal
1234÷10 = 123 , reste 4 1234 10
123÷10 = 12, reste 3 4 123 10
12÷10 = 1, reste 2 3 12 10
1 < 10, donc on arrêt la division 2 1
On a donc : (1234)10 = (1234)10
15
Les systèmes de numération: Changement de base
Décimal vers base B:
Exemple : (25)10 en binaire
25÷2 = 12, reste 1 25 2
12÷2 = 6, reste 0 1 12 2
6÷2 = 3, reste 0 0 6 2
3÷2 = 1, reste 1 0 3 2
1 < 2, donc on arrêt la division 1 1
On a donc : (25)10 = (11001)2
16
Les systèmes de numération: Changement de base
Décimal vers base B:
Exemple : (7172)10 en hexadécimal
7172 ÷ 16 = 448, reste 4 7172 16
448 ÷16 = 28, reste 0 4 448 16
28 ÷16 = 1, reste 12 = C 0 28 16
1 < 16, donc on arrêt la division 12
1
On a donc : (7172)10 = (1C04)16
17
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du binaire à l'octal
• 1 chiffre octal = un groupe de 3 chiffres binaires
• Avec 3 bits on code les 8 chiffres de la base octale
(000)2 = 0
(001)2 = 1
(010)2 = 2
(011)2 = 3
(100)2 = 4
(101)2 = 5
(110)2 = 6
(111)2 = 7
18
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du binaire en octal
Exemple 1: (10110001101)2 en octal
• On regroupe par groupes de 3 bits : 010 110 001 101
• On rajoute des zéros au début au besoin
• (10110001101)2 = (2615)8
Exemple 2: (1111100110)2 en octal
• (1111100110)2 = (001 111 100 110)2 = (1746)8
19
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du l'octal en binaire
Exemple 1: (254) 8 en binaire
• 2 = (010)2, 5 = (101)2, 4 = (100)2
• On concatène dans l'autre base ces groupes de 3 bits :
(254)8 = (10101100)2
Exemple 2: (761)8 en binaire
• (761)8 = (111110001)2
20
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du binaire en hexadécimal
1 chiffre hexadécimal = un groupe de 4 chiffres binaires
(0000)2 = 0 (1000)2 = 8
(0001)2 = 1 (1001)2 = 9
(0010)2 = 2 (1010)2 = 10 = (A)
(0011)2 = 3 (1011)2 = 11 = (B)
(0100)2 = 4 (1100)2 = 12 = (C)
(0101)2 = 5 (1101)2 = 13 = (D)
(0110)2 = 6 (1110)2 = 14 = (E)
(0111)2 = 7 (1111)2 = 15 = (F)
21
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du binaire en hexadécimal
Exemple 1: (10110001101)2 en hexadécimal
• On regroupe par groupes de 4 bits : 0101 1000 1101
• (10110001101)2 = (58D)16
Exemple 2 : (1111111100111)2 en hexadécimal
• (1111111100111)2 = (1FE7)16
22
Les systèmes de numération: Changement de base
Cas particuliers : Conversion du hexadécimal en binaire
Exemple 1: (D46C)16 en binaire
• D = 13 = (1101)2, 4 = (0100)2, 6 = (0110)2, C = 12 = (1100)2
• On concatène dans l'autre base ces groupes de 4 bits :
(D46C)16 = (1101010001101100)2
Exemple 2: (EF2A)16 en binaire
• (EF2A)16 = (1110111100101010) 2
23
Les systèmes de numération: Les entiers signés
Entiers non-signés : ensemble d’entiers positifs
Entiers signés: ensemble d’entiers positifs et négatifs
Comment représenter des entiers négatifs ?
Convention de recodage des chaînes de bits
Valeur signée
Complément à 1
Complément à 2
24
Les systèmes de numération: Les entiers signés
Représentation par valeur signée
Réserver un bit pour le signe (le bit le plus à gauche appelé le bit de poids
fort), les autres bits codent la valeur absolue du nombre.
• 0 = positif et 1 = négatif
Exemple (sur 4 bits) :
• +310= 00112
• −310= 10112
Exemple (sur 8 bits) :
• +2510 = 00011001 2
25
• −2510 = 10011001 2
Les systèmes de numération: Les entiers signés
Représentation par valeur signée
Réserver un bit pour le signe (le bit le plus à gauche appelé le bit de poids
fort), les autres bits codent la valeur absolue du nombre.
Difficultés: Deux représentations de la valeur zéro
• + 010 = 000000002
• − 010 = 100000002
Sur 8 bits : -127…….+127
26
Les systèmes de numération: Les entiers signés
Complément à 1
Le bit de poids fort correspond au signe :
0 = positif 1 = négatif
Un nombre négatif s’obtient en complémentant bit à bit sa valeur
absolue avec 1. Ou on prend la représentation de la partie entière et
on inverse tous les bits.
Exemple: représentation de −410 sur 4 bits
410 =01002 donc − 410 =10112
Exemple: représentation de −2510 sur 8 bits :
2510 = 000110012 donc −2510 :111001102
27
Les systèmes de numération: Les entiers signés
Complément à 1
Le bit de poids fort correspond au signe :
0 = positif 1 = négatif
Deux représentations pour 0 :
000000002 et 111111112
Nombres représentés sur 8 bits : -127……+127
Valeur max (complément à 1):
• Positive de 000000002 à 011111112 => de 0 à 12710
• Négative de 100000002 à 111111112 => de -127 à -010
28
Les systèmes de numération: Les entiers signés
Complément à 2
Le bit de poids fort correspond au signe :
0 = positif 1 = négatif
Un nombre négatif s’obtient en ajoutant 1 au complément à 1 de sa valeur
absolue. Ou on prend la représentation de la partie entière et on soustrait 1
puis on inverse tous les bits.
Exemple (sur 4 bits): représentation de −610
• + 610 =01102
• Complément à 1 de +610 = 10012
• Ajout de 1: 10012 + 1 = 10102
• −610 = 10102
29
Les systèmes de numération: Les entiers signés
Complément à 2
Le bit de poids fort correspond au signe :
0 = positif 1 = négatif
Un nombre négatif s’obtient en ajoutant 1 au complément à 1 de sa valeur
absolue. Ou on prend la représentation de la partie entière et on soustrait 1
puis on inverse tous les bits.
Exemple (sur 8 bits): représentation de −2510
• +2510 = 000110012
• Complément à 1 de +2510 = 111001102
• Ajout de 1: 111001112 + 1 = 111001112
• −2510 = 111001112
30
Les systèmes de numération: Les entiers signés
Complément à 2
Le bit de poids fort correspond au signe :
0 = positif 1 = négatif
Une seule représentation pour 0 : 000000002
Nombres représentés sur 8 bits : -128..+127
Valeur max (complément à 2):
• Positive de 000000002 à 011111112 => de 0 à 12710
• Négative de 100000002 à 111111112 => de -128 à -110
31
Les systèmes de numération: Les entiers signés
Exercice:
Convertir en décimal:
• (11001000)CA2
• (00100111)CA2
Solution:
• (11001000)CA2 = -56
• (00100111)CA2 = 39
32
Les systèmes de numération: Les entiers signés
Capacité de représentation
Les valeurs positives: intervalle [0, 2 nombre bits -1]
Les valeurs négative (complément à 1): intervalle [1-(2 nombre bits)/2, -1+(2 nombre bits)/2]
Pour négative (complément à 2): intervalle [-(2 nombre bits)/2, -1+(2 nombre bits)/2]
Exemple pour 3 bits:
Valeurs positifs: intervalle [0, 23 -1]=>[0, 7]
Valeurs négatives (complément à 1): intervalle [1-(23 )/2, -1+(23)/2]
=>[1-4, -1+4] = [-3,3]
Valeurs négatives (complément à 2): intervalle [-(23 )/2, -1+(23)/2]
=>[-4, -1+4] = [-4,3]
33
Les systèmes de numération: Les entiers signés
Application: Compléter le tableau suivant
Décimal
Valeur signée Complément à 1 Complément à 2
011
010
001
000
111
110
101
100
34
Les systèmes de numération: Les entiers signés
Application:
Décimal
Valeur signée Complément à 1 Complément à 2
011 3 3 3
010 2 2 2
001 1 1 1
000 0 0 0
111 -3 -0 -1
110 -2 -1 -2
101 -1 -2 -3
100 -0 -3 -4
35
Les systèmes de numération: Les entiers signés
Binaire Décimal Valeur signée Complément à 1 Complément à 2
0000 0 0 0 0
0001 1 1 1 1
0010 2 2 2 2
0011 3 3 3 3
0100 4 4 4 4
0101 5 5 5 5
0110 6 6 6 6
0111 7 7 7 7
1000 8 -0 -7 -8
1001 9 -1 -6 -7
1010 10 -2 -5 -6
1011 11 -3 -4 -5
1100 12 -4 -3 -4
1101 13 -5 -2 -3
1110 14 -6 -1 -2
36 1111 15 -7 -0 -1
Retenu & Débordement
Retenu est rencontrée lorsqu’une retenue existe à la fin de
l’opération d’addition ou soustraction(comme décimal).
Débordement : la taille allouée (8, 16 ... bits) au codage d'un
nombre est trop petite pour coder ou stocker correctement le
résultat d'un calcul.
Exemple avec addition, sur 8 bits, non signé :
• 10110011 + 10000101 = 100111000
• Besoin de 9 bits pour coder le nombre
• Stockage du résultat impossible sur 8 bits
Exemple avec addition, sur 8 bits, signé :
• 01110011 + 01000101 = 10111000
37 • Addition de 2 positifs donne un négatif !
Retenu & Débordement
Exemple 1 :(4bits signé )
• 7+3=?
0111
+ 0 011
----------------------
1010 -6 !!!
Exemple 2:(8bits signé )
• 110 + 43 = ?
01101110 110
+ 00101011 43
----------------------
10011001 (-103) !! (et non 153)
38
Représentation des nombres réels
Méthode de la virgule fixe
La position de la virgule reste inchangée.
On code un nombre réel R sur 3 champs :
• Le bit de poids fort (MSB) est réservé pour le signe de R.
• La partie entière de R est codé en binaire (sur un nombre de
bits précis).
• La partie fractionnaire de R est également codé en binaire
(sur un nombre de bits précis).
Bit de signe Partie entière en binaire Partie fractionnaire en binaire
39
Représentation des nombres réels
Méthode de la virgule fixe
Exemple 1:
• R = -10.25
• Signe = - donc MSB = 1
• Partie entière de R = 10 = (1010)2
• Partie fractionnaire de R = 0.25 = (01)2
• 0,25 x 2 = 0.5
• 0,5 x 2 = 1
• La représentation complète de R sur 2 octets (1 octet pour la
partie entière plus le signe et 1 octet pour la partie
fractionnaire):
• R = 1000101001000000
40
Représentation des nombres réels
Méthode de la virgule fixe
Exemple : conversion de 14.37510 en base 2 ?
• 1410 = 11102
• 0.37510 = (?) 2
• 0.375 x 2 = 0.75
• 0.75 x 2 = 1.5
• 0.5 x 2 = 1.0
• Résultat = 14.37510 = 1110.011 2
Exemple de conversion:
• 110.011= 1x22+1x21 +0x20 +0x2-1 +1x2-2 +1x2-3 = 6.375 10
41
Représentation des nombres réels
Méthode de la virgule fixe
Exercice:
Trouver la représentation binaire de 0.2357 sur 8 bits?
• 0.2357 × 2 = 0 + 0.4714
• 0.4714 × 2 = 0 + 0.9428
• 0.9428 × 2 = 1 + 0.8856
• 0.8856 × 2 = 1 + 0.7712
• 0.7712 × 2 = 1 + 0.5424
• 0.5424 × 2 = 1 + 0.0848
• 0.0848 × 2 = 0 + 0.1696
• 0.1696 × 2 = 0 + 0.3392
(0.2357)10 = (0.00111100)2
42
Représentation des nombres réels
Méthode de la virgule flottante
La position de la virgule est variable.
On écrit le nombre réel sous la forme :
R = (±1) × M × 2E
• un bit de signe
• une mantisse M
• un exposant E
Exemple de représentation
• 0.0000111010 · 20
• 0.000000111010 · 22
• 1.111010 · 2 − 5
43
Représentation des nombres réels
Méthode de la virgule flottante
Codage IEEE 754
• Le signe + est représenté par 0 et le signe − par 1
• La mantisse appartient à l’intervalle [1, 2[
• L’exposant est un entier relatif et il est établi de manière à ce que la mantisse soit de
la forme « 1,… »
Plusieurs formats:
• Simple précision : 32 bits (soit 4 octets) 1 bit de signe, 8 bits d’exposant, 23 bits de
mantisse
• Double précision : 64 bits (soit 8 octets) 1 bit de signe, 11 bits d’exposant, 52 bits
de mantisse
44
Représentation des nombres réels
Méthode de la virgule flottante
Codage IEEE 754 (simple précision)
• Au lieu de coder E (en binaire ), on code E + 127.
• C’est l’exposant biaisé Eb : Eb = E + 127
• Cela permet d’avoir un exposant non signé
45
Représentation des nombres réels
Méthode de la virgule flottante
Codage IEEE 754 (simple précision 32 bits )
Application:
• R = −6.625
• 6.62510 = 110.1012
• 110.10102 = 1.10101 × 22
• M = 10101000000000000000000
• E= 2 => Eb = 2+127 = 12910 = 100000012
• Résultat : 1 10000001 10101000000000000000000
46
Représentation des nombres réels
Méthode de la virgule flottante
Codage IEEE 754 (simple précision 32 bits )
Application:
• R = −0.75
• 0.7510 = 0.112
• 0.112 = 1.1 × 2-1
• M = 10000000000000000000000
• E= -1 => Eb = -1+127 = 12610 = 11111102
• Résultat : 1 01111110 10000000000000000000000
47
Représentation des caractères
Plusieurs formats pour représenter des caractères (symboles alphanumériques)
sous forme binaire :
EBCDIC (Extended Binary-Coded Decimal Interchange Code)
• Représentation sur 8 bits (256 caractères possibles)
• Utilisé autrefois sur les mainframes IBM
ASCII (American Standard Code for Information Interchange)
• Représentation sur 7 bits (pas d’accents)
• ASCII étendu : sur 8 bits mais pas de normalisation
Unicode : encodage sur 16 bits (65536 possibilités) pour représenter tous
les caractères de toutes les langues (Arabic, Basic Latin…)
48
Représentation des caractères
Exemple table code ASCII
49
…
50