Vous êtes sur la page 1sur 44

Programmation du microprocesseur

en langage machine
Version PC et outils MS-DOS
Patrick Cgielski
Juin 2013
Pour Irne et Marie
Legal Notice
Copyright c 2013 Patrick Cgielski
Universit Paris Est - Crteil IUT
Route forestire Hurtault
F-77300 Fontainebleau
cegielski@u-pec.fr
iv
Prface
De nos jours, tout le monde ou presque a dj utilis un ordinateur
1
, et en tous les cas certai-
nement ceux qui dsirent lire ce livre. Mais, de mme quon conduit une automobile sans savoir
comment elle fonctionne (tout au moins dans les moindres dtails), on se sert dun ordinateur sans
savoir comment il a t conu. On peut donc distinguer deux attitudes lgard des ordinateurs :
conception et utilisation.
Les deux attitudes sont importantes : on ne peut pas utiliser quelque chose qui nexiste pas,
do lintrt de la conception ; quoi bon concevoir quelque chose qui nest pas utilis, do
lintrt dun march dutilisateurs. On imagine bien que la conception doit tre complexe, que
ce soit celle dun ordinateur ou dune automobile. Mais contrairement lautomobile, dont luti-
lisation est relativement simple (sauf exception comme les formules 1, qui sont des automobiles
part), lutilisation des ordinateurs connat toute une gradation : simple (utiliser les ressources
dInternet, bureautique, jeux vido), un peu moins simple (programmation de petits utilitaires)
jusqu extrmement complexe (conception des logiciels de prvision du temps en mtorologie,
par exemple).
Lutilisateur a, quant aux ordinateurs, seulement besoin de savoir ce que peut faire un ordi-
nateur et considrer celui-ci comme une bote noire. Ce quil peut faire peut rester un niveau
informel ou se modliser comme machine de Turing (dont nous parlerons ci-aprs) ou tout autre
modle quivalent. On peut, et on doit, partir sur cette dernire base pour une utilisation intel-
ligente.
Si, donc, de nos jours, on aborde les ordinateurs en les utilisant on peut, dans une seconde ta-
pe, sintresser leur conception, soit par simple curiosit, soit parce quune connaissance mme
partielle permet quelquefois damliorer limplmentation
2
de certains algorithmes ou la para-
mtrisation (administration systme), soit parce quon veut eectivement concevoir une partie
1. Il sagit plus spciquement dun micro-ordinateur, mais ceci est un ranement de classication qui na
rien voir avec notre sujet.
2. Mais jamais la conception, insistons sur ce point !
v
vi BIBLIOGRAPHIE
dun nouveau systme informatique.
Les ordinateurs sont laboutissement dune longue qute doutils daide aux calculs
3
. Bien
entendu les plus utiliss et de trs loin (puisque les autres sont soit dune technologie dpasse,
soit au stade exprimental) sont les ordinateurs lectroniques
4
. Nous ne nous intresserons qu
ceux-ci dans la suite.
Les ordinateurs lectroniques ont eux-mmes connu une volution au cours de leur histoire :
ordinateurs utilisant des lampes lectroniques (celles-ci ayant t cres lorigine pour les besoins
de la TSF), ordinateurs transistors, ordinateurs circuits intgrs. Seuls ces derniers sont
utiliss de nos jours, sauf cas trs spcial.
On distingue ds labord deux aspects du point de vue de la conception : laspect matriel
et laspect logiciel. Le premier concerne les circuits lectroniques, les circuits lectriques et les
parties mcaniques (hardware en anglais, ce qui signie quincaillerie), le second concerne tout ce
qui est programmation (software en anglais, ce qui est un jeu de mot en remplaant hard par
soft).
La distinction de ces deux aspects provient de ce quils correspondent deux mtiers dirents
lorigine, et mme en grande partie de nos jours : laspect matriel est li la physique, plus
particulirement llectronique, alors que laspect logiciel est plutt li aux mathmatiques.
0.1 Bibliographie
[Wil-85] Williams, Michael R., A History of Computing Technology, IEEE Computer
Society Press, 1985, second edition, 1997, xi + 426 p.
3. Cet aspect est malheureusement trs mal trait dans la littrature. On pourra lire [Wil-85] pour une intro-
duction.
4. Mais ce nest pas la seule possibilit : le premier ordinateur, celui de Babbage (conu mais non ralis),
tait entirement mcanique ; puis vinrent les calculateurs lectro-mcanique (avec des relais tlphoniques) et
enn lectroniques ; il existe aussi des ordinateurs pneumatiques, optiques et biologiques.
Table des matires
Prface v
0.1 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
I Modle thorique 1
1 Modlisation thorique des ordinateurs 3
1.1 Donnes, opration et rsultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Notion de registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Notion dinstruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Registres de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.3 Instructions primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Structures de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.5 Unit arithmtique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.6 Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Fonctions calculables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.1 Machines daide aux calculs . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.2 Problmes calculables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
II Les principes de la ralisation physique 25
2 Codage de linformation 27
2.1 Le contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Codage des entiers naturels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Codage des textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 Appendice : conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.1 Utilisation de llectricit . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.2 Utilisation de la numration binaire . . . . . . . . . . . . . . . . . . . . . 34
2.5.3 Le codage des textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3 Les circuits combinatoires 45
vii
viii TABLE DES MATIRES
3.1 Les circuits combinatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1 Fonctions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 Table de vrit dune fonction logique . . . . . . . . . . . . . . . . . . . . 46
3.1.3 Les fonctions logiques naturelles . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.4 Circuits lectroniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1.5 Dnition des circuits combinatoires . . . . . . . . . . . . . . . . . . . . . 48
3.2 Analyse des circuits combinatoires . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3 Synthse des circuits combinatoires . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.1 Ralisation des circuits combinatoires de base . . . . . . . . . . . . . . . . 49
3.3.2 Ralisation des autres circuits combinatoires . . . . . . . . . . . . . . . . 51
3.3.3 Notation des circuits logique lmentaires . . . . . . . . . . . . . . . . . . 51
3.4 Ladditionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.1 Demi-additionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.2 tage dadditionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.3 Additionneur binaire complet . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.5.1 Shannon et les circuits de commutation . . . . . . . . . . . . . . . . . . . 56
3.5.2 Le premier additionneur (lectro-mcanique) . . . . . . . . . . . . . . . . 57
3.5.3 Application systmatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4 Ralisation des circuits combinatoires 61
4.1 Les circuits lectromcaniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.1.1 Principe de ralisation des circuits . . . . . . . . . . . . . . . . . . . . . . 62
4.1.2 Les relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.1.3 Ralisation des portes logiques . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 Les circuits lampes radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.2.1 Diode et triode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.2.2 Ralisation des portes logiques laide des lampes lectroniques . . . . . . 68
4.3 Les circuits lments semi-conducteurs discrets . . . . . . . . . . . . . . . . . . 70
4.3.1 Les circuits transistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3.2 Les circuits transistors et diodes semi-conductrices . . . . . . . . . . . . 73
4.4 Utilisation des circuits intgrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4.1 Notion de circuit intgr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4.2 Utilisation des circuits intgrs pour les circuits combinatoires . . . . . . . 79
4.5 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.5.1 Les circuits mcaniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.5.2 Les circuits lectromcaniques . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.5.3 Les circuits lampes lectroniques . . . . . . . . . . . . . . . . . . . . . . 83
4.5.4 Les circuits transistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.5.5 Les circuits intgrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.5.6 Lecture 1 : lENIAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5 Ralisation des registres et des mmoires 99
5.1 Ralisation des registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1.1 Bistable R.S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1.2 Registres bistables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.2 Des registres la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
TABLE DES MATIRES ix
5.3.1 Premires ralisations des registres . . . . . . . . . . . . . . . . . . . . . . 104
5.3.2 Les registres bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.4 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6 Les bus 115
6.1 Ralisation des transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.1.1 Transfert direct entre registres . . . . . . . . . . . . . . . . . . . . . . . . 116
6.1.2 Le problme topologique de la liaison entre registres . . . . . . . . . . . . 117
6.1.3 Les bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.1.4 Ralisation des transferts via un bus . . . . . . . . . . . . . . . . . . . . . 120
6.1.5 Pupitre de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.2 Ralisation des instructions primitives . . . . . . . . . . . . . . . . . . . . . . . . 121
6.2.1 Lunit arithmtique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.2.2 Ralisation des oprations . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.1 Calculateurs pupitre de commande . . . . . . . . . . . . . . . . . . . . . 123
6.3.2 Transcodage dcimalbinaire . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.4 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7 Enregistrement des programmes squentiels 125
7.1 Codage et dcodage des instructions primitives . . . . . . . . . . . . . . . . . . . 126
7.1.1 Codage des instructions primitives . . . . . . . . . . . . . . . . . . . . . . 126
7.1.2 Notion de registre dinstruction . . . . . . . . . . . . . . . . . . . . . . . . 127
7.1.3 Dcodage des instructions primitives . . . . . . . . . . . . . . . . . . . . . 127
7.2 Programmes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.2.1 Nouveaux composants lectroniques . . . . . . . . . . . . . . . . . . . . . 128
7.2.2 Excution du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.2.3 Droulement dun programme . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.3.1 Aspect matriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.3.2 Aspect logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
7.4 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
8 Programmes rupture de squence 155
8.1 Codage et dcodage des ruptures de squence . . . . . . . . . . . . . . . . . . . . 156
8.1.1 Codage de la rupture de squence . . . . . . . . . . . . . . . . . . . . . . 156
8.1.2 Dcodage des ruptures de squence . . . . . . . . . . . . . . . . . . . . . . 157
8.1.3 Droulement dun programme . . . . . . . . . . . . . . . . . . . . . . . . . 157
8.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.2.1 Notion de programme enregistr avec rupture de squence (1945) . . . . . 158
8.2.2 Construction du premier ordinateur (Angleterre, 1948) . . . . . . . . . . . 159
8.2.3 Le dploiement des ordinateurs . . . . . . . . . . . . . . . . . . . . . . . . 162
8.3 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
9 Architecture des ordinateurs 169
9.1 Vue densemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.1.1 Le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.1.2 Architecture primaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.2 Synchronisation et horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
x TABLE DES MATIRES
9.3 Les bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
9.3.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
9.3.2 Carte mre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
9.4 Interfaage de la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
9.4.1 Hirarchie des mmoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
9.4.2 lments de mmoire centrale . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.5 Dmarrage dun micro-ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.6 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.6.1 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.6.2 Apparition des microprocesseurs . . . . . . . . . . . . . . . . . . . . . . . 177
9.6.3 Apparition des micro-ordinateurs . . . . . . . . . . . . . . . . . . . . . . . 182
9.7 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
III La programmation des microprocesseurs 195
10 La programmation des microprocesseurs 197
10.1 Microprocesseur, mmoire et priphriques . . . . . . . . . . . . . . . . . . . . . . 198
10.1.1 Une modlisation des ordinateurs . . . . . . . . . . . . . . . . . . . . . . . 198
10.1.2 Les registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.1.3 Mmoire de masse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.1.4 Premire classication des instructions dun microprocesseur . . . . . . . 199
10.2 Un exemple de microprocesseur : Intel 8088 . . . . . . . . . . . . . . . . . . . . . 200
10.2.1 Aspect extrieur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.2.2 Les broches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.2.3 Les registres internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.2.4 Les units du microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.3 Faons de programmer un microprocesseur . . . . . . . . . . . . . . . . . . . . . . 204
10.3.1 Programmation physique du microprocesseur . . . . . . . . . . . . . . . . 204
10.3.2 Kit spcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
10.3.3 Programmation sur un systme informatique . . . . . . . . . . . . . . . . 204
10.4 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
10.5 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
10.6 Appendice : MS-DOS sur une cl USB . . . . . . . . . . . . . . . . . . . . . . . . 206
10.6.1 Premire tape : rcuprer MS-DOS . . . . . . . . . . . . . . . . . . . . . 206
10.6.2 Seconde tape : crer une cl USB bootable . . . . . . . . . . . . . . . . . 206
10.6.3 Troisime tape : version franaise complte . . . . . . . . . . . . . . . . . 209
11 Accs la mmoire vive du 8088 211
11.1 Modles de mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
11.1.1 La mmoire plate du i8085 . . . . . . . . . . . . . . . . . . . . . . . . . . 212
11.1.2 Segmentation de la mmoire du 8086/8088 . . . . . . . . . . . . . . . . . 212
11.2 criture et lecture en mmoire avec debug . . . . . . . . . . . . . . . . . . . . . . 214
11.2.1 Le logiciel debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.2.2 Contenu en hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.2.3 Analyse dune zone de mmoire avec debug . . . . . . . . . . . . . . . . . 214
11.2.4 Changer une zone de mmoire avec debug . . . . . . . . . . . . . . . . . . 215
12 Codage en langage machine 217
12.1 Premires instructions du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
TABLE DES MATIRES xi
12.1.1 Premires instructions de transfert du 8088 . . . . . . . . . . . . . . . . . 218
12.1.2 Instruction de retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
12.2 Programmer en langage machine avec debug . . . . . . . . . . . . . . . . . . . . . 223
12.2.1 Le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
12.2.2 Un apart : examen du contenu des registres . . . . . . . . . . . . . . . . 224
12.2.3 Codage en langage machine avec debug . . . . . . . . . . . . . . . . . . . 226
12.2.4 Visualisation dun programme . . . . . . . . . . . . . . . . . . . . . . . . . 228
12.3 Assembler avec debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.4 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.4.1 Les langages symboliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.4.2 CP/M et MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
12.4.3 Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
12.5 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
IV Le langage machine du microprocesseur 8088 233
13 Les instructions de transferts 235
13.1 Principe du stockage des mots chez Intel . . . . . . . . . . . . . . . . . . . . . . . 235
13.2 Autres instructions de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
13.2.1 Classication des instructions de transfert . . . . . . . . . . . . . . . . . . 236
13.2.2 Stockage du contenu de laccumulateur dans un lment de mmoire vive 236
13.2.3 Chargement dun lment de mmoire vive dans laccumulateur . . . . . . 237
13.2.4 Transfert entre registres ou registre et case mmoire . . . . . . . . . . . . 238
13.2.5 Choix du segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
13.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
13.4 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
14 Accs aux priphriques 241
14.1 Principe de laccs aux priphriques . . . . . . . . . . . . . . . . . . . . . . . . . 242
14.2 Cas du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
14.2.1 Aspect matriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
14.2.2 Entre dans laccumulateur . . . . . . . . . . . . . . . . . . . . . . . . . . 243
14.2.3 Sortie du contenu de laccumulateur . . . . . . . . . . . . . . . . . . . . . 243
14.3 Un exemple : voyants lumineux du clavier MF II . . . . . . . . . . . . . . . . . . 244
14.4 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
15 Calculs sur les entiers naturels 247
15.1 Incrmentation et dcrmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
15.1.1 Les oprations arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . 247
15.1.2 Reprsentation des entiers naturels . . . . . . . . . . . . . . . . . . . . . . 248
15.1.3 Incrmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
15.1.4 Dcrmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
15.2 Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
15.2.1 Addition sur un octet ou sur un mot . . . . . . . . . . . . . . . . . . . . . 252
15.2.2 Addition sur plusieurs mots . . . . . . . . . . . . . . . . . . . . . . . . . . 255
15.3 Soustraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
15.3.1 Soustraction sur un octet ou un mot . . . . . . . . . . . . . . . . . . . . . 258
15.3.2 Cas dune dirence ngative . . . . . . . . . . . . . . . . . . . . . . . . . 260
15.3.3 Soustraction sur plusieurs mots . . . . . . . . . . . . . . . . . . . . . . . . 261
xii TABLE DES MATIRES
15.4 Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.5 Division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
15.6 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
15.6.1 Les tous premiers programmes (en langage machine) . . . . . . . . . . . . 268
15.6.2 Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
15.7 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
16 Structures de contrle 283
16.1 Saut inconditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
16.1.1 Saut inconditionnel intrasegmentaire, direct et relatif . . . . . . . . . . . . 284
16.1.2 Autres sauts inconditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . 286
16.2 Sauts conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
16.2.1 Les dirents cas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
16.2.2 Exemple : lexponentiation . . . . . . . . . . . . . . . . . . . . . . . . . . 288
16.2.3 La comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
16.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
16.4 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
17 Les entiers relatifs 293
17.1 Entiers relatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
17.1.1 Reprsentation des entiers relatifs . . . . . . . . . . . . . . . . . . . . . . 294
17.1.2 Cas du microprocesseur 8086/8088 . . . . . . . . . . . . . . . . . . . . . . 296
17.2 Le dcimal cod binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
17.2.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
17.2.2 Addition en DCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
17.2.3 Soustraction en DCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
17.2.4 Cas de la multiplication et de la division . . . . . . . . . . . . . . . . . . . 303
17.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
17.3.1 Blaise Pascal et le complment neuf . . . . . . . . . . . . . . . . . . . 303
18 Programmation modulaire 305
18.1 Notions gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
18.2 Cas du microprocesseur 8086/8088 . . . . . . . . . . . . . . . . . . . . . . . . . . 307
18.2.1 Appel du sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
18.2.2 Retour dun sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . 307
18.2.3 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
18.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
19 La pile 311
19.1 La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
19.1.1 tude gnrale de la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
19.1.2 Cas du microprocesseur 8086/8088 . . . . . . . . . . . . . . . . . . . . . . 312
19.1.3 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
19.2 Le passage des paramtres un sous-programme . . . . . . . . . . . . . . . . . . 316
19.2.1 Utilisation des registres de donnes . . . . . . . . . . . . . . . . . . . . . . 316
19.2.2 Utilisation de la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
19.2.3 Utilisation de la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
20 Manipulation des bits 321
20.1 Instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
TABLE DES MATIRES xiii
20.1.1 Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
20.1.2 Application au masquage . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
20.2 Les dcalages logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
20.3 Les rotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
20.3.1 Les rotations sur un octet ou un mot . . . . . . . . . . . . . . . . . . . . . 327
20.3.2 Les rotations sur un octet ou un mot et lindicateur CF . . . . . . . . . . 329
20.4 Changer lindicateur de retenue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
20.5 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
21 Les interruptions 333
21.1 Types dinterruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
21.1.1 Trois types dinterruption . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
21.1.2 Les interruptions internes . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
21.2 Les interruptions logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
21.2.1 Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
21.2.2 Un exemple dappel dinterruption logicielle . . . . . . . . . . . . . . . . . 336
21.2.3 Un exemple de routine dinterruption logicielle . . . . . . . . . . . . . . . 337
21.3 Masquage des interruptions externes masquables . . . . . . . . . . . . . . . . . . 339
22 Les chanes de caractres 341
22.1 Dnition des chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . 342
22.1.1 Reprsentation des caractres . . . . . . . . . . . . . . . . . . . . . . . . . 342
22.1.2 Reprsentation des chanes de caractres . . . . . . . . . . . . . . . . . . . 342
22.1.3 Jeu de caractres utilis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
22.2 Adressage indirect par registre et tableaux . . . . . . . . . . . . . . . . . . . . . . 343
22.2.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
22.2.2 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
22.3 Primitives de manipulation des mots . . . . . . . . . . . . . . . . . . . . . . . . . 346
22.3.1 Copie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
22.3.2 Remplissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
22.3.3 Chargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
22.3.4 Comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
22.3.5 Recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
22.3.6 Choix de la direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
22.4 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
23 Dernires instructions 367
23.1 Adressage index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
23.2 Instructions dchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
23.3 Pas dopration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
23.4 Arrt du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
23.5 Tables de traduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
23.6 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
23.7 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
24 Assemblage et dsassemblage 373
24.1 Assemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
24.1.1 Champs dune instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
24.1.2 Instructions sans oprande . . . . . . . . . . . . . . . . . . . . . . . . . . 374
24.1.3 Instructions avec un seul oprande . . . . . . . . . . . . . . . . . . . . . . 375
xiv TABLE DES MATIRES
24.1.4 Instructions avec deux oprandes . . . . . . . . . . . . . . . . . . . . . . . 380
24.2 Dsassemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
24.2.1 Instructions sans prxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
V volution 387
25 volution des microprocesseurs 389
25.1 Le tout premier microprocesseur : le 4004 . . . . . . . . . . . . . . . . . . . . . . 390
25.2 Le 8008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
25.3 Le 8080 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
25.4 Le 8085 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
VI Programmation en langage dasemblage 395
26 Initiation aux langages dassemblage 397
26.1 Notion et mise en place de lassembleur . . . . . . . . . . . . . . . . . . . . . . . 398
26.1.1 Notion gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
26.1.2 Les assembleurs pour PC et MS-DOS . . . . . . . . . . . . . . . . . . . . 398
26.1.3 Installation de MASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
26.1.4 Un premier exemple de programme en langage dassemblage . . . . . . . . 399
26.2 Structure dun programme source en langage dassemblage . . . . . . . . . . . . . 401
26.2.1 Instructions et directives dassemblage . . . . . . . . . . . . . . . . . . . . 401
26.2.2 Segments dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
26.2.3 Prsentation dun programme dassemblage . . . . . . . . . . . . . . . . . 404
26.2.4 Programme et DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
26.2.5 Exemples de programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
26.2.6 Structure dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . 406
26.2.7 Dnition simplie des segments . . . . . . . . . . . . . . . . . . . . . . . 407
26.2.8 Dnition des segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
26.3 Les chiers utilitaires de lassembleur . . . . . . . . . . . . . . . . . . . . . . . . . 410
26.3.1 Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
26.4 Forme dun programme en langage dassemblage . . . . . . . . . . . . . . . . . . 413
26.4.1 Identicateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
26.4.2 Syntaxe dune instruction de langage dassemblage . . . . . . . . . . . . . 415
26.4.3 Les nombres entiers en langage dassemblage . . . . . . . . . . . . . . . . 416
26.4.4 Initialisation dun registre avec un caractre . . . . . . . . . . . . . . . . . 416
26.4.5 Accs la mmoire vive grce aux variables . . . . . . . . . . . . . . . . . 416
26.4.6 Les constantes en langage dassemblage . . . . . . . . . . . . . . . . . . . 419
26.4.7 Les structures de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
26.5 Les sous-programmes en langage dassemblage . . . . . . . . . . . . . . . . . . . . 424
26.5.1 Sous-programme intra-segmentaire . . . . . . . . . . . . . . . . . . . . . . 424
26.5.2 Sous-programme inter-segmentaire . . . . . . . . . . . . . . . . . . . . . . 426
26.5.3 Utilisation de la pile pour conserver les registres . . . . . . . . . . . . . . 427
26.6 Les chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
26.6.1 Dclaration des chanes de caractres . . . . . . . . . . . . . . . . . . . . . 428
26.6.2 Achage dune chane de caractre . . . . . . . . . . . . . . . . . . . . . . 428
26.6.3 Entre-sortie des chanes de caractres . . . . . . . . . . . . . . . . . . . . 429
26.7 Entres-sorties des entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
TABLE DES MATIRES xv
26.7.1 Achage dun entier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
26.7.2 Saisie dun entier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
26.8 La programmation modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
26.8.1 Le problme de linterface . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
26.8.2 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
26.8.3 Les bibliothques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
26.9 Langage dassemblage et langage volu . . . . . . . . . . . . . . . . . . . . . . . 444
26.9.1 Lier un programme C et un programme en langage dassemblage . . . . . 444
26.10Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Index 451
xvi TABLE DES MATIRES
Table des gures
1.1 Donnes, opration et rsultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Machine registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Machine registres avec registres de travail . . . . . . . . . . . . . . . . . . . . . 7
1.4 Machine avec unit arithmtique . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Vase de Darius ([Wil-85], p. 56) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Abaque de Salamis ([Wil-85], p. 57) . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 Principe de la transmission dun bit . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Principe de la transmission de linformation . . . . . . . . . . . . . . . . . . . . . 29
2.3 Numration binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4 Tableau de Frederic Remington . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Tlgraphe Chappe [Fig-68] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6 Code utilis pour le tlgraphe Chappe . . . . . . . . . . . . . . . . . . . . . . . . 37
2.7 Code Morse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.8 Clavier tlgraphique 5 touches dmile Baudot, Journal tlgraphique, vol.
8, n
o
12, dcembre 1884 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.9 Disposion des mains sur le clavier Baudot . . . . . . . . . . . . . . . . . . . . . . 40
2.10 Code Baudot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1 Reprsentation dun circuit lectronique . . . . . . . . . . . . . . . . . . . . . . . 47
3.2 Principe dun relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3 Reprsentation schmatique dun relais . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4 Principe de ralisation dun inverseur . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5 Principe de ralisation dune porte OU . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6 Principe de ralisation dune porte ET . . . . . . . . . . . . . . . . . . . . . . . . 51
3.7 Notation des portes logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.8 Ralisation dun demi-additionneur . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.9 Notation dun demi-additionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.10 Ralisation dun tage dadditionneur . . . . . . . . . . . . . . . . . . . . . . . . 53
3.11 Notation dun tage dadditionneur . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.12 Notation dun additionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.13 Additionneur binaire parallle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.14 Additionneur binaire parallle 16 bits . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.15 Schma du demi-additionneur de Stibitz ([Lig-87], p.227) . . . . . . . . . . . . . 57
3.16 Rplique du demi-additionneur de Stibitz ([Aug-84], p. 101) . . . . . . . . . . . 58
4.1 Principe dun relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2 Reprsentation schmatique dun relais . . . . . . . . . . . . . . . . . . . . . . . . 62
xvii
xviii TABLE DES FIGURES
4.3 Inverseur relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4 Porte OU relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5 Porte ET relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6 Lmission thermolectronique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.7 Principe de la diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.8 Trs faible passage de courant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.9 Passage de courant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.10 Une diode ([Bow-53], p. 40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.11 Principe de la triode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.12 Symbole de la triode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.13 Train dimpulsions ngatives ([Bow-53], p. 42) . . . . . . . . . . . . . . . . . . . . 68
4.14 Ralisation dune porte ET avec deux diodes ([Bow-53], p. 43) . . . . . . . . . . 68
4.15 Ralisation dune porte OU avec deux diodes ([Bow-53], p. 44) . . . . . . . . . . 69
4.16 Ralisation dun inverseur avec une deux triodes ([Bow-53], p. 46) . . . . . . . . 69
4.17 Courbes caractristiques dun transistor . . . . . . . . . . . . . . . . . . . . . . . 70
4.18 Utilisation dun transistor comme inverseur . . . . . . . . . . . . . . . . . . . . . 71
4.19 Utilisation de deux transistors comme porte NAND . . . . . . . . . . . . . . . . . 72
4.20 Utilisation de deux transistors comme porte NOR . . . . . . . . . . . . . . . . . 72
4.21 Prsentation des transistors lutilisateur . . . . . . . . . . . . . . . . . . . . . . 73
4.22 Symbole et caractristiques dune diode semi-conductrice . . . . . . . . . . . . . 73
4.23 Ralisation des portes ET et OU avec des diodes semi-conductrices . . . . . . . . 74
4.24 Aspect dune puce lectronique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.25 Botier de circuit intgr avec des broches DIL . . . . . . . . . . . . . . . . . . . 75
4.26 Schma fonctionnel du circuit intgr SN7400 ([TI-73], p. 62) . . . . . . . . . . . 76
4.27 Dure de propagation travers une porte . . . . . . . . . . . . . . . . . . . . . . 77
4.28 Le premier lectro-aimant, invent par Sturgeon in 1824. Dessin de larticle de
1824 dans British Royal Society of Arts, Manufactures, and Commerce. Il y a 18
tours de l de cuivre (non isol). . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.29 Le premier relais lectrique ([Lig-87], p. 184) . . . . . . . . . . . . . . . . . . . . 81
4.30 Relais lectromagntique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.31 Fig. 1 de [Ata-40] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.32 Table dans [Ata-40] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.33 Le premier prototype de circuit intgr ([Aug-84], p. 237) . . . . . . . . . . . . . 87
4.34 Schma gnral de lENIAC ([Lig-87], p. 321) . . . . . . . . . . . . . . . . . . . . 94
5.1 Principe du bistable R.S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.2 Notation du bistable R.S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.3 Principe dun registre bistables . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.4 Mise zro dun registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.5 Schma dun lment de mmoire ROM . . . . . . . . . . . . . . . . . . . . . . . 102
5.6 Entre dun nombre bit par bit ([Aug-84], p. 126) . . . . . . . . . . . . . . . . . . 104
5.7 Rplique de la machine Z3 de Zuse ([Wil-85], p. 217) . . . . . . . . . . . . . . . 105
5.8 Le micro-ordinateur Altair ([Aug-84], p. 274) . . . . . . . . . . . . . . . . . . . . 105
5.9 Une unit de lignes retard du BINAC ([Aug-84], p. 158) . . . . . . . . . . . . . 106
5.10 Le calculateur IAS la Smithsonian Institution Washington ([Aug-84], p. 155) 107
5.11 Mmoire tores de ferrite ([Aug-84], p. 194) . . . . . . . . . . . . . . . . . . . . . 108
5.12 Le premier basculeur ([Lig-87], p. 268) . . . . . . . . . . . . . . . . . . . . . . . . 109
5.13 Le premier bistable sur circuit intgr ([Aug-83], p. 11) . . . . . . . . . . . . . . . 110
5.14 La premire RAM : le 4100 de Fairchild ([Aug-83], p. 25) . . . . . . . . . . . . . 111
5.15 La premire RAM dynamique, de 1024 bits : le 1103 de Intel ([Aug-83], p. 27) . . 112
TABLE DES FIGURES xix
6.1 Transfert entre registres par deux impulsions . . . . . . . . . . . . . . . . . . . . 116
6.2 Premier systme de transfert entre registres entre force . . . . . . . . . . . . 116
6.3 Deuxime systme de transfert entre registres entre force . . . . . . . . . . . 117
6.4 Liaisons registres dentre bus des donnes . . . . . . . . . . . . . . . . . . . . . 118
6.5 Liaisons registres de sortie bus des donnes . . . . . . . . . . . . . . . . . . . . 119
6.6 Liaisons busregistres de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.7 Lunit arithmtique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.8 Transcodage dcimalbinaire ([Lig-87], p. 228) . . . . . . . . . . . . . . . . . . . . 123
7.1 Codage et dcodage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.2 Bistable J.K. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.3 Notation dun bistable J.K. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.4 lment de mmoire J.K. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.5 Notation dun lment de mmoire J.K. . . . . . . . . . . . . . . . . . . . . . . . 130
7.6 Bascule J.K. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.7 Train dimpulsions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.8 Registre dincrmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.9 Compteur de programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.10 Programmation par cblage ([Bur-80], p. 328) . . . . . . . . . . . . . . . . . . . . 133
7.11 Programmation par cblage ([Bur-80], p. 317) . . . . . . . . . . . . . . . . . . . . 134
7.12 ([WR-50], p. 419) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.13 ([WR-50], p. 421) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.14 Le code de lEDSAC (1949) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.15 Format dinstruction de lEDSAC ([Cam-01], p. 14) . . . . . . . . . . . . . . . . . 151
9.1 Architecture primaire dun ordinateur . . . . . . . . . . . . . . . . . . . . . . . . 170
9.2 Circuit non asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.3 Dlai de propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.4 Circuit synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.5 Dlai synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
9.6 Architecture trois bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.7 Aspect extrieur du microprocesseur 4004 ([Mal-95], p. 11) . . . . . . . . . . . . 177
9.8 La premire calculatrice avec microprocessur ([Mal-95], p. 4) . . . . . . . . . . . 178
9.9 Vue interne du microprocesseur 4004 ([Aug-84], p. 266) . . . . . . . . . . . . . . 179
9.10 Publicit pour le microprocesseur 4004 ([Aug-84], p. 264) . . . . . . . . . . . . . 180
9.11 Vue interne du microprocesseur 8008 ([Aug-84], p. 266) . . . . . . . . . . . . . . 181
9.12 Vue interne du microprocesseur 8080 ([Aug-84], p. 266) . . . . . . . . . . . . . . 181
9.13 PDP-1 ([Aug-84], p. 256) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
9.14 PDP-8 ([Aug-84], p. 256) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.15 Le premier Micral photographi ct de sa carte mre ([Lil-03], p. 93) . . . . . 184
9.16 La couverture de Radio-Electronics de juillet 1974 ([Aug-84], p. 269) . . . . . . . 185
9.17 La couverture de Popular Electronics de janvier 1975 ([Aug-84], p. 273) . . . . . 186
9.18 IMSAI 8080 ([Lil-03], p. 114) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9.19 Apple I ([Aug-84], p. 278) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.20 Apple II ([Lil-03], p. 116) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.21 KIM-I (Bolos Computer Museum, http://www.bolo.ch) . . . . . . . . . . . . . 190
9.22 Le Pet de Commodore ([Lil-03], p. 124) . . . . . . . . . . . . . . . . . . . . . . . 191
9.23 IBM PC (1981) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
10.1 Botier du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
xx TABLE DES FIGURES
10.2 Cur du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
10.3 Broches du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.4 Structure fonctionnelle du 8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.5 Fentre de HP USB Disk Storage Format Tool . . . . . . . . . . . . . . . . . . 207
10.6 Fentre davertissement de HP USB Disk Storage Format Tool . . . . . . . . . 208
11.1 Segmentation de la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
12.1 Dsignation des registres gnraux du 8088 . . . . . . . . . . . . . . . . . . . . . 219
12.2 Dsignation des registres de segment du 8088 . . . . . . . . . . . . . . . . . . . . 220
13.1 Modes dadressage du 8088 lorsque mod = 00 . . . . . . . . . . . . . . . . . . . . 238
15.1 Le premier programme (18 juillet 1948) . . . . . . . . . . . . . . . . . . . . . . . 268
15.2 Premire routine (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
15.3 Deuxime routine (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
15.4 Troisime routine (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
15.5 Premier organigramme (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . 272
15.6 Second organigramme (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . 273
15.7 Troisime organigramme (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . 274
15.8 Table des carrs (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
15.9 Table des nombres premiers (Worsley 1950) . . . . . . . . . . . . . . . . . . . . . 276
Premire partie
Modle thorique
1
Chapitre 1
Modlisation thorique des
ordinateurs
La programmation des ordinateurs exige une connaissance dun modle de ceux-ci. Un modle
thorique peut et doit tre susant. Les modles thoriques sont dailleurs apparus historiquement
avant la ralisation.
3
4 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
1.1 Donnes, opration et rsultat
On dnit en mathmatiques la notion gnrale de fonction, rsume par la notation bour-
bakiste :
f : E A B
o A et B sont des ensembles. Lensemble de dnition E est lensemble des lments x de A
pour lesquels f(x) est dni.
Un ordinateur est une

bote noire

qui permet dobtenir la valeur f(x) lorsque f et x sont
donns : on entre une suite de nombres
1
, appele les donnes, on lui indique une opration ou
fonction eectuer (dans un sens trs large, bien au-del des quatre oprations arithmtiques
que sont laddition, la multiplication, la soustraction et la division) et il en sort une autre suite
de nombres
2
, appele le rsultat, conformment au schma de la gure 1.1 :
rsultat
opration
donnes
Figure 1.1 Donnes, opration et rsultat
Pour les oprations courantes (addition, soustraction, multiplication, division...) les donnes
sont au nombre de deux : on parle de fonction binaire. Elles sont quelquefois au nombre
de un (carr, cube, racine carre...) : on parle de fonction unaire. Elles peuvent mme tre
dun nombre plus grand (oprations sur les matrices par exemple). Il en est de mme pour les
rsultats qui se prsentent souvent sous la forme dun nombre unique (cas de laddition, de la
multiplication, de lextraction de racine carre...) mais peut comporter plusieurs nombres (cas
des oprations sur les matrices mais aussi plus simplement division euclidienne o lon donne le
quotient et le reste).
1. ou de caractres ou de ce quon veut.
2. ou ce quon veut.
1.2. NOTION DE REGISTRE 5
1.2 Notion de registre
Appelons registre tout mcanisme capable de stocker une donne et de la
restituer au moment voulu.
e1
e2
e3
en
s1
s2
opration
s3
sp
Figure 1.2 Machine registres
Un ordinateur peut alors tre dcrit dune faon un peu plus ne de la faon suivante :
on a une pile de registres dentre, numrots e
1
, e
2
, e
3
, . . . , e
n
, . . ., potentiellement in-
nie, chaque registre pouvant contenir un entier naturel ;
on a une pile de registres de sortie, numrots s
1
, s
2
, s
3
, . . . , s
n
, . . ., potentiellement innie
galement, chaque registre pouvant contenir galement un entier naturel.
Si on veut faire eectuer lopration op dont on sait quelle a besoin de n entres et de p sorties,
on place les n entres dans les registres e
1
e
n
(dans cet ordre si lordre est important) et on
indique la machine quelle doit eectuer lopration op : celle-ci va chercher les n entres dans
les n premiers registres dentre, les triture par un procd inconnu pour linstant et place les
rsultats dans les p premiers registres de sortie. On peut alors aller rcuprer les rsultats dans
les registres de sortie quand on veut.
Le traitement de lopration na videmment aucune raison dtre immdiat. Il faut donc pr-
voir un signal de n pour indiquer que la machine a termin deectuer lopration an quon
naille pas chercher des rsultats errons.
Remarque.- Lordinateur est dcrit dune faon un peu plus ne mais beaucoup sexclameront

mais pas de faon raliste



. En eet on ne voit pas comment concevoir une pile innie de
registres. En fait nous avons parl dune pile potentiellement innie : on peut partir dune pile
nie plus ou moins grande ; si elle nest pas susante on ajoute des registres. Cependant la
6 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
thorie de la relativit gnrale a pour consquence quil nexiste quun nombre ni de particules
lmentaires dans lunivers ; il est donc impossible dtendre une telle pile au-del dune certaine
taille.
Il nen demeure pas moins quil est plus simple de raisonner sur une pile (potentiellement)
innie. Nous tudierons plus tard lincidence de cette hypothse.
De mme on ne voit pas comment concevoir un registre capable de recevoir un entier naturel
aussi grand que lon veut. Le mme commentaire sapplique cette deuxime restriction.
1.3. INSTRUCTIONS 7
1.3 Instructions
1.3.1 Notion dinstruction
Problme.- Comment indiquer lopration eectuer ?
Voil la question que lon se pose naturellement ce point de lexpos. Pour les oprations l-
mentaires (addition, multiplication, extraction des racines carres, logarithme, sinus...) on peut
penser munir la machine dune srie de touches sur lesquelles sont indiqus les noms des op-
rations. Il sut dappuyer sur la touche dsire pour dclencher lopration (cest ce qui se fait
pour les calculettes). Ce systme nest pas envisageable dans le cas dun ordinateur car le nombre
des fonctions calculables est inni.
Un espoir : gnration nie du nombre inni doprations.- On a de la chance. Bien que le nom-
bre doprations soit inni, toute opration calculable sobtient partir dun nombre ni dopra-
tions primitives (ou lmentaires) grce un nombre ni de constructeurs doprations composes.
Instruction.- On prfre parler dinstruction en informatique plutt que dopration, bien que
ce soit la mme chose, car on donne des instructions la machine comme on le ferait une
personne pour eectuer un certain travail.
e1
e2
e3
en
s1
s2
opration
s3
sp
r1 r2 r3 rk
Figure 1.3 Machine registres avec registres de travail
8 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
1.3.2 Registres de travail
On a quelquefois besoin dentreposer des rsultats intermdiaires : lorsquon eectue une
soustraction, par exemple, on a besoin de place pour marquer les retenues sur une feuille de
papier. On considrera donc quon dispose, outre des deux piles de registres de donne et de
registres de rsultat, dune pile de registres de travail, nots r
1
, r
2
, r
3
, . . . , r
n
, . . ., chacun tant
capable de contenir un entier naturel, comme le montre la gure 1.3.
1.3.3 Instructions primitives
Classication des instructions primitives.- On peut voir immdiatement un certain nombre dins-
tructions primitives utiles, que lon peut rpartir en trois types :
Les instructions de transfert permettent de copier le contenu dun registre dans un
autre :
du registre dentre n dans le registre de travail k, note r
k
:= e
n
.
du registre de travail n dans le registre de travail k, note r
k
:= r
n
.
du registre de travail k dans le registre de sortie n, note s
n
:= r
k
.
Les instructions arithmtiques permettent des calculs lmentaires :
La remise zro du registre de travail k, note r
k
:= 0.
Lincrmentation du registre de travail k, cest--dire le fait de lui ajouter 1, note
r
k
:= r
k
+ 1.
La dcrmentation du registre de travail k, cest--dire le fait de lui retrancher - 1 sil
est non nul (il reste zro sil est nul), note r
k
:= r
k
1.
Les instructions de contrle primitives sont essentiellement reprsentes par :
Linstruction darrt de la machine, note STOP, qui fait, par exemple, clignoter une
lampe pour indiquer que lon peut aller chercher les rsultats dans les registres de sortie.
Exercice.- Voyez-vous dautres instructions primitives possibles ?
1.3.4 Structures de contrle
On appelle programme le concept prcis dinstruction complexe construite partir des ins-
tructions primitives laide des constructeurs dinstructions.
On appelle constructeur dinstructions ou structure de contrle ce qui permet dobtenir
dautres instructions partir des instructions primitives. Voyons quelques structures de contrle
naturelles.
1.3.4.1 Squencement
Notion.- La premire structure de contrle qui nous vient lesprit est certainement le squen-
cement : il sagit dexcuter une suite dinstructions lune aprs lautre.
Exemple.- Linstruction compose suivante permet de placer 3 dans le premier registre de sortie :
r
1
:= 0
r
1
:= r
1
+ 1
r
1
:= r
1
+ 1
r
1
:= r
1
+ 1
1.3. INSTRUCTIONS 9
s
1
:= r
1
STOP
1.3.4.2 Rupture de squence
tiquetage des instructions.- On va reprer les instructions par des tiquettes, de la forme q
n
suivi de deux points, o n est un entier naturel.
Le programme prcdent peut tre rcrit de la faon suivante en utilisant des tiquettes :
q
0
: r
1
:= 0
q
1
: r
1
:= r
1
+ 1
q
2
: r
1
:= r
1
+ 1
q
3
: r
1
:= r
1
+ 1
q
4
: s
1
:= r
1
q
5
: STOP
Ceci est optionnel : on peut mettre des tiquettes, ne pas en mettre, en mettre certaines et pas
dautres.
Branchement.- Linstruction de branchement :
SI r
k
= 0 ALLER_A q
k
permet une rupture de squence : si le contenu du registre de travail r
k
est nul alors on va,
non pas linstruction suivante dans lordre dans lequel les instructions sont crites, mais celle
dtiquette q
k
.
Bien que les tiquettes soient facultatives, il faut ncessairement, dans le cas dune rupture
de squence, que linstruction laquelle on veut renvoyer soit tiquete.
Exemple.- (Addition)
Le programme suivant permet dadditionner les contenus des deux premiers registres dentre
et den placer le rsultat dans le premier registre de sortie :
r
1
:= e
1
r
2
:= e
2
r
3
:= 0
q
1
: SI r
2
= 0 ALLER_A q
2
r
2
:= r
2
1
r
1
:= r
1
+ 1
SI r
3
= 0 ALLER_A q
1
q
2
: s
1
:= r
1
STOP
1.3.5 Unit arithmtique
Pour ne pas tenir compte du choix spcique des instructions primitives, prsentons un nou-
veau modle.
On appelle unit arithmtique (arithmetic unit en anglais) lorgane de la machine capable
deffectuer les instructions arithmtiques primitives que nous avons choisies.
On considre en gnral, pour simplier, que lunit arithmtique ne travaille quavec les
registres de travail. Nous obtenons alors le schma de la gure 1.4 :
10 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
travail sortie entre
arithmtique
unit
Figure 1.4 Machine avec unit arithmtique
1.3.6 Programme
Programme.- On appelle programme toute suite dinstructions, que ce soient des instructions
primitives ou des structures de contrle.
Lide est quun programme permet deectuer une opration. On a donc une faon nie de
gnrer un grand nombre doprations.
Exercice.- Montrer que lensemble des programmes et celui des oprations calculables sont innis.
Pour tout entier naturel a lapplication constante f
a
dnie par f
a
(n) = a peut tre calcule
par un programme analogue au premier programme, calculant 3, que nous avons considr ci-
dessus.
Registres dinstruction.- Lide fondamentale de von Neumann fut de placer les instructions, et
donc le programme, dans des registres.
Nous avons prcdemment numrot les instructions an de pouvoir eectuer des ruptures
de squence. Introduisons maintenant de nouveaux registres, appels registres dinstruction,
nots i
1
, i
2
, i
3
, ..., i
n
, ... Mettons des tiquettes toutes les instructions. Plaons linstruction
dtiquette q
1
(sans son tiquette) dans le registre i
1
, celle dtiquette q
2
dans i
2
et ainsi de suite.
Pointeur dinstruction.- Introduisons un nouveau registre, appel pointeur dinstruction qui
contient une adresse dinstruction, cest--dire un entier naturel non nul.
Le programmeur na accs au registre dinstruction que de faon indirecte. Au dbut de
lexcution du programme, le registre dinstruction a la valeur 1. Aprs lexcution de chaque
instruction, la valeur du registre dinstruction est incrmente sauf sil sagit dune rupture de
squence : dans ce dernier cas, le registre dinstruction prend la valeur indique.
Mise en uvre dun programme.- On voit alors comment faire excuter un programme : on place
les instructions et les donnes dans les registres adquats et on fait dmarrer le programme.
Linstruction i
1
est alors eectue ; on passe ensuite linstruction suivante, celle de numro
suivant en gnral sauf si linstruction est une instruction de rupture de squence ; le programme
sarrte lorsquon rencontre linstruction STOP.
Remarque.- Que se passe-t-il si on ne tombe jamais sur linstruction STOP ? Le programme ne
sarrte pas : on dit quil boucle. Vous tes certainement dj tombs (involontairement) sur un
tel cas si vous avez programm. Voici par exemple un programme qui boucle :
1.4. FONCTIONS CALCULABLES 11
q
1
: r
1
:= 0
q
2
: SI r
1
= 0 ALLER_A q
1
q
3
: STOP
1.4 Fonctions calculables
Introduction.- Nous venons de voir le principe de ralisation des ordinateurs. Une telle machine
peut-elle calculer tout ce qui est calculable ? Navons-nous pas oublier une instruction primitive
ou une structure de contrle ? Pire, sommes-nous srs quil existe un jeu en nombre ni bien
choisi dentre elles ?
Il a exist au cours de lhistoire de nombreuses machines daide aux calculs : abaques et
bouliers, machine arithmtique de Pascal, ... Lide intuitive de ce quest une opration (nous
dirons fonction dornavant) calculable est une opration dont le rsultat peut tre obtenu grce
une machine (daide aux calculs), quimporte la nature de celle-ci. Rien ne dit dailleurs a priori
quil existe des fonctions non calculables (nous verrons cependant plus tard quil en existe).
Un programme utilise n entres et p sorties. On peut considrer que les entres et les sorties
sont des entiers naturels. tout programme est donc associ une fonction, visiblement calculable
en notre sens intutif.
On dit quune fonction sur les entiers naturels et valeurs dans les entiers
naturels est rcursive si, et seulement si, il existe (au moins) un programme
(au sens ci-dessus) permettant de la calculer.
Remarques.- 1
o
) La restriction apparente concernant les entiers naturels nest pas fondamentale.
Les mots, par exemple, peuvent tre reprsents par des entiers naturels en utilisant un codage
adquat.
- 2
o
) Une fonction rcursive peut tre calcule par plusieurs programmes. Il y en a
mme toujours une innit : il sut, si on a un programme dans lequel le registre r
n
nest jamais
utilis, dintroduire, par exemple au dbut, autant de fois que lon veut linstruction :
r
n
:= r
1
- 3
o
) Les fonctions rcursives sont visiblement calculables, mais est-ce que toutes les
fonctions calculables sont rcursives ? Il est dlicat dy rpondre puisquon est en prsence, dune
part, dune notion mathmatique prcise (celle de fonction rcursive) et, dautre part, dune
notion intuitive (celle de fonction calculable). Cependant on a tout lieu de penser que lassertion
suivante est vraie.
Thse de Church (1936)
Les fonctions calculables sont les fonctions rcursives.
Justication de la thse de Church.- La thse de Church est justie par les faits suivants :
Dans les annes 1930 plusieurs auteurs ont essay de mathmatiser la notion de fonction
calculable.
Ils sont arrivs des rsultats dirents, certes, mais on est toujours arriv montrer que
lensemble des fonctions correspondant un modle donn est identique lensemble des
fonctions correspondant au moins un autre et donc tous les autres.
12 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
Lun des modles, celui des machines de Turing, a russi convaincre entirement.
On saperoit jour aprs jour que toute fonction intuitivement calculable est bien calculable
sur ordinateur.
1.5. HISTORIQUE 13
1.5 Historique
Nous avons dj vu, lors de lintroduction la programmation, deux moments cls de lhistoire
de la notion dordinateur :
le contexte, cest--dire les besoins en calculs de plus en plus complexes, depuis la Prhis-
toire ;
la cration des bureaux de calculs pour eectuer les calculs complexes.
Nous allons voir maintenant deux autres moments cls :
la ralisation de machines daide aux calculs ;
la dnition de ce qui peut tre rsolu algorithmiquement au milieu des annes 1930, cris-
tallise par la thse de Church-Turing.
Figure 1.5 Vase de Darius ([Wil-85], p. 56)
1.5.1 Machines daide aux calculs
Nous avons dj signal le livre [Wil-85] pour une initiation lhistorique des outils daide
aux calculs, y compris les ordinateurs qui nen sont quune tape, la plus volue. On pourra sy
rfrer.
1.5.1.1 Abaques
Des outils daide aux calculs apparurent dans lAntiquit sous le nom dabaque, ce qui a
dsign des techniques direntes et dont lhistoire est en grande partie perdue (voir [Sch-01]).
Dmosthne (384 av. J.C., 322 av. J.C.) crit ([227] et [229]) que nous avons besoin
dutiliser des cailloux pour eectuer les calculs qui sont trop diciles faire la main.
Hrodote ([Her], II 36) crit propos des gyptiens :

Ils crivent leurs caractres et
calculent avec des cailloux, de droite gauche l o les Grecs le font de gauche droite

.
14 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
Le vase grec dit de Darius, trouv en 1851 et maintenant conserv au muse de Naples, montre
un trsorier tenant une tablette la main alors quil semble manipuler des compteurs sur une
table avec lautre (gure 1.5, voir aussi une photo dans [Smi-25], vol. II, p. 161).
Une table dabaque a t trouve dans lle de Salamis prs du Pire (gure 1.6).
Figure 1.6 Abaque de Salamis ([Wil-85], p. 57)
On sait que la manipulation des cailloux sur de la poussire, ou lutilisation dun doigt ou
dun stylet sur de la poussire ne ou du sable dpos sur une table, est utilise depuis les temps
les plus anciens. Le mot smite abaq (poussire) semble tre lorigine du mot abaque. Les Grecs
utilisaient le mot abax pour dsigner une surface plane sur laquelle ils eectuaient leurs calculs.
Le terme abaque a dsign plusieurs choses au cours de son histoire, y compris les bouliers au
XIX
e
et XX
e
sicles.
1.5.1.2 Calculatrices mcaniques
On appelle calculatrice une machine permettant deectuer rapidement lune ou la totalit
des quatre oprations sur les entiers naturels : addition, soustraction, multiplication et division.
Un bon rsum de lhistoire des calculatrices se trouve dans le livre A history of Compu-
ting Technology [Wil-85] de Michael Williams, avec des rfrences bibliographiques. Nous nous
contenterons ici den donner les grandes tapes.
La dtermination des impts donne lieu la naissance de la premire machine calculer
mcanique de Blaise Pascal (16231662) en 1642, dont le pre tait fermier gnral, cest--dire
charg de la dtermination et du recouvrement des impts. Celle-ci connat un trs grand intrt
1.5. HISTORIQUE 15
de curiosit mais pas le succs commercial escompt.
On a dcouvert tardivement que Pascal a t devanc par Wilhem Schickard (15921635),
qui a certainement construit une calculatrice permettant les additions en 1623, mais qui est
perdue.
Gottfried Wilhem Leibniz (16461716) construit une machine capable deectuer des multi-
plications en 1670.
La premire calculatrice connatre un succs commercial, inspire de la machine de Leibniz,
est larithmomtre de Thomas de Colmar, mise sur le march en 1820 et qui fut vendue jus-
qu la premire guerre mondiale. Dautres machines, toutes mcaniques, furent commercialises
jusquau dbut des annes 1970. Elles sont alors remplaces par les calculettes lectroniques,
sous-produit des ordinateurs.
1.5.1.3 Machines ddies
On appelle machine ddie tout outil daide aux calculs conu pour un besoin bien dni.
Il sagit dabord de calculateurs analogiques (et non numriques), tels que ceux qui servent
la prvision des mares (en particulier celui de lord Kelvin), qui sont dcrits dans la premire
partie de [Gol-72]. Il sagit ensuite de calculateurs mcaniques tels que la machine Z1 de Konrad
Zuse (19101995) construite en 1938 puis des machines lectro-mcaniques (utilisant des relais)
tels que le Model I de Georges Stibitz aux tablissements Bell pour eectuer des calculs sur les
nombres complexes. Une premire description de ces machines se trouve dans [Wil-85].
1.5.1.4 Calculateurs gnralistes
On appelle calculateur gnraliste tout outil daide aux calculs capable deectuer des
calculs plus compliqus que les quatre oprations sans tre une machine universelle.
Il sagit des machines Z2, Z3 et Z4 de Konrad Zuse construites avant la n de la seconde guerre
mondiale, des Model II Model VI de Georges Stibitz aux tablissements Bell, des machines
de Harvard de Howard Aiken (Mark I Mark IV) et des premiers calculateurs IBM. Viennent
enn les calculateurs lectroniques telles que la machine ABC de John Atanasoff (19031995)
et Cliord Berry (19181963) et surtout lENIAC de luniversit de Pennsylvanie. Une premire
description de ces machines se trouve dans [Wil-85].
1.5.1.5 Machines universelles ou ordinateurs
On appelle machine universelle, ou ordinateur, tout outil daide aux calculs capable def-
fectuer tout calcul qui lest par une machine, quimporte la nature de celle-ci.
Le premier ordinateur (conu mais non construit) est la machine analytique de Charles Bab-
bage (17911871), entirement mcanique. Lide du premier ordinateur jamais ralis, due
essentiellement John von Neumann est lEDVAC conu en 1945. Mais cause des dissensions
au sein de lquipe, il ne sera termin quen 1950, aprs la mise en service de lEDSAC de Cam-
bridge en Angleterre (1949), conu par Maurice Wilkes. On pourra trouver une introduction
la naissance des ordinateurs, avec des rfrences bibliographiques, dans [Wil-85].
Vint ensuite la commercialisation des ordinateurs, avec la toute puissance dIBM durant une
priode, puis lapparition des micro-ordinateurs.
16 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
1.5.2 Problmes calculables
1.5.2.1 Premiers doutes sur les limites des calculs par programme
Les calculs apparaissent depuis la naissance des cits pour des raisons de comptabilit (les
quatre oprations arithmtiques) puis pour des raisons astronomiques (lies la dtermination
des saisons pour lagriculture). Apparaissent ensuite de plus en plus de programmes de calculs,
non pas, historiquement, les programmes dordinateur mais les programmes dans les bureaux de
calculs. Deux problmes, cependant, vont inciter sinterroger sur les limites de ceux-ci.
Attitude gnrale.- Pendant longtemps les mathmaticiens ont rsolu des problmes particuliers
par des mthodes gnrales, des mthodes souvent plus gnrales que ce pourquoi elles ont
t recherches. On sinterroge, par exemple, sur la contenance dun tonneau de telle forme.
La mthode la plus gnrale de lAntiquit, apele mthode dexhaustion, consiste deviner la
formule (exacte) donnant le volume dun solide dune forme dtermine puis la dmontrer en
approximant le solide par des polydres de plus en plus proches. Au XVII
e
sicle, la mthode du
calcul intgral de Newton et Leibniz permet de calculer des volumes sans avoir dide a priori
sur le rsultat. On ne commence sinterroger sur la notion gnrale de volume quau troisime
tiers du XIX
e
sicle.
Le XIX
e
sicle est un sicle la fois de rigueur et de classication. On ne sintresse plus tel
ou tel problme particulier, on veut formuler le cas gnral et obtenir des thormes gnraux
sur celui-ci.
Premier problme : thorie des invariants.- Considrons une courbe dans le plan, une surface
dans lespace ou lanalogue (une hypersurface) dans un espace de dimension arbitraire. Certains
de ces objets sont des varits, dont les coordonnes, dans un repre donn, vrient une quation
polynomiale. Lorsquon change de repre, lquation de la varit change mais on peut mettre en
vidence sur lquation des proprits invariantes par rapport un changement de repre. Ces
invariants traduisent les proprits gomtriques intrinsques de la varit.
Une varit algbrique dans un espace de dimension n est dnie, dans un repre donn, par
P(x
1
, ..., x
n
) = 0, o P est un polynme homogne de degr m. Un invariant est un polynme
I en les coecients des polynmes homognes n variables de degr m tel que pour toute
transformation linaire, de dterminant 1, on ait I(a) = I(a

), si a est la liste des coecients de


P et a

celle de lquation P

aprs la transformation.
Le problme de la thorie des invariants consiste dterminer les invariants de la varit
algbrique.
En 1868 [Gor-68], Paul Gordan (18371912) trouve une mthode pour dterminer les in-
variants dune courbe algbrique plane. Pendant vingt ans, personne ne russit amliorer les
rsultats de Gordan. En 1890, David Hilbert [Hil-90] donne une rponse en dimension quel-
conque, en montrant que, dans un espace de dimension donne, il existe une famille nie qui
engendre lensemble des invariants par des oprations simples (Thorme de la base de Hilbert).
Cependant la dmonstration ne donne pas de procdure pour calculer la famille gnratrice.
Cette voie abstraite rencontre une vive opposition. Gordan dclare :

Ce nest pas des math-
matiques, cest de la thologie

(cf. [McL-08]). Hilbert reprend le problme et, en 1893 [Hil-93],
russit donner une dmonstration constructive qui permet de calculer la famille gnratrice des
invariants
3
.
Cest certainement la premire fois que lon insiste sur leectivit ou calculabilit dun pro-
blme.
3. Pour une introduction luvre de Hilbert, on pourra se reporter [Cas-01].
1.5. HISTORIQUE 17
Deuxime problme : quations direntielles et axiome du choix.- Le dveloppement des ma-
thmatiques classiques est fortement li celui de la physique. Ce dont a besoin la physique,
cest la rsolution dquations direntielles. Pour les cas simples, on a pu trouver des solutions

exactes

certaines dentre elles, cest--dire exprimable laide des fonctions connues. Au
XIX
e
sicle, on commence comprendre que lon na pas toujours de

solution analytique

exacte. Les solutions approches sont susantes pour la physique condition de disposer de
thormes sur certaines proprits gnrales. Augustin Cauchy (17891857) [Cau-], avec des
hypothses prcises par Rudolph Lipschitz (18321903), montre lexistence et lunicit de la
solution dune quation direntielle avec des conditions initiales donnes [Yus-81], ce qui rete
bien lexprience physique.
Guiseppe Peano (18581932) amliore le rsultat de Cauchy et Lipschitz en montrant
lexistence dans le seul cas de la continuit, mais sans unicit comme le montre lexemple classique
y

=
3

x.
On saperoit rapidement que Peano utilise implicitement une hypothse pour dmontrer
son rsultat, hypothse qui va tre connue sous le nom daxiome du choix. Un nonc simple
de celui-ci dit que le produit cartsien (inni) densembles non vides est un ensemble non vide.
mile Borel sinterroge sur la notion deectivit propos de la justication de laxiome du
choix dans ses Leons sur les fonctions de 1898 [Bor-98].
1.5.2.2 Retour en arrire : mergence des problmes de possibilit
Au dix-neuvime sicle nat une nouvelle faon de rpondre aux problmes, le type de rponse
tant inattendu pour un mathmaticien de lpoque. Jusqualors, lorsquon posait un problme,
on sattendait ce quil soit rsolu, tt ou tard, sous la forme sous laquelle il a t pos. Le
nouveau type de rponse est : il nexiste pas de rponse au problme sous la forme sous laquelle
il est pos.
Cette nouvelle attitude apparat propos de problmes anciens sur la rsolution des quations
algbriques et sur le problme des constructions gomtriques.
Le premier exemple en est donn par Ruffini en 1799 [Ruf-04]. Les quations algbriques
sont apparues pour des raisons diverses (mais non vraiment explicites) trs tt. La rsolution
des quations du second degr date de la Msopotamie ancienne. La rsolution des quations
du troisime et du quatrime degr date du XVI
e
sicle (Tartaglia, Ferrari...). On cherche
alors activement rsoudre lquation du cinquime degr, plus exactement par radicaux, cest-
-dire que les solutions sont exprimes partir des coecients en utilisant les quatre oprations
arithmtiques et le passage la racine n-ime. Ruffini montre que cest impossible, ou tout au
moins larme puisque son article est considr comme incomprhensible. Quimporte puisque
les dmonstrations dAbel (en 1824) puis le thorme gnral de Galois de 1832 (qui va plus
loin puisquindique dans quel cas une quation algbrique est rsoluble par radicaux) conrment
ce rsultat.
Le second problme concerne les constructions gomtriques laide de la rgle et du com-
pas. LAntiquit laisse trois problmes non rsolus ce propos : la duplication du cube (en
terme moderne il faut construire la racine cubique de 2), la trisection dun angle quelconque
(la construction de la bissectrice est connue depuis longtemps) et la quadrature du cercle (tant
donn le rayon dun cercle, autrement dit un segment de droite, construire le ct, un autre
segment, dun carr ayant mme aire que le cercle). Wantzel montre en 1837 [Wan-37] quil est
impossible de rsoudre les deux premiers problmes : les longueurs des segments constructibles
laide de la rgle et du compas par rapport un segment de longueur un sont appels les nombres
constructibles ; Wantzel commence par montrer que les nombres constructibles sont ceux des
18 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
extensions quadratiques itres du corps des rationnels ; il montre ensuite que ni
3

3, ni sin(10
o
)
ne sont des nombres constructibles. Lindemann [Lin-82] conclut en montrant limpossibilit de la
quadrature du cercle en 1882, plus prcisment en dmontrant que le nombre est transcendant,
cest--dire quil nest solution daucune quation polynomiale coecients rationnels.
Beaucoup dautres solutions de ce type apparaissent. David Hilbert y fait rfrence dans
son clbre expos Sur les problmes futurs des Mathmatiques de 1900 :
Il se peut aussi que lon seorce dobtenir une solution en se basant sur des hy-
pothses insusantes ou mal comprises et que, par suite, on ne puisse atteindre le
but. Il sagit alors de dmontrer limpossibilit de rsoudre le problme en se servant
dhypothses telles quelles ont t donnes ou interprtes. Les Anciens nous ont
donn les premiers exemples de pareilles dmonstrations dimpossibilit ; ils ont d-
montr ainsi que dans un triangle rectangle isocle lhypotnuse et le ct de langle
droit sont dans un rapport irrationnel. Dans les Mathmatiques contemporaines, la
question de limpossibilit de certaines solutions joue un rle prpondrant ; cest
ce point de vue de la dmonstration de limpossibilit que danciens et diciles pro-
blmes, tels que ceux de la dmonstration de laxiome des parallles, de la quadrature
du cercle et de la rsolution par radicaux de lquation du cinquime degr, ont reu
une solution parfaitement satisfaisante et rigoureuse bien quen un sens tout di-
rent de celui quon cherchait primitivement. Le fait remarquable dont nous venons
de parler et certains raisonnements philosophiques ont fait natre en nous la convic-
tion que partagera certainement tout mathmaticien, mais que jusquici personne na
taye daucune preuve, la conviction, dis-je, que tout problme mathmatique dter-
min doit tre forcment susceptible dune solution rigoureuse, que ce soit par une
rponse directe la question pose, ou bien par la dmonstration de limpossibilit de
la rsolution, cest--dire de linsuccs de toute tentative de rsolution.
[Hil-00], p. 1112.
Il est dailleurs curieux que, alors quil ait bien conscience de solutions inattendues, Hilbert
ne remette absolument pas en doute les possibilits du calcul. Lune des preuves les plus agrantes
de cette dernire constatation est lanalyse faite par Yuri Matiiassevich en 1999 de la faon
dont David Hilbert pose son dixime problme (sur les mathmatiques futures) en 1900 :
Le dixime problme occupe moins despace quaucun autre problme dans larticle
de Hilbert. Durant son expos il nen dit pas un mot, ainsi que sur quelques autres
problmes. Son expos dura deux heures et demi mais ceci ne fut pas susant pour
prsenter les vingt-trois problmes ; ainsi quelques problmes, dont le dixime, ne
furent pas prsents oralement mais seulement inclus dans la version imprime de
lexpos.
Ainsi Hilbert ne donna-t-il pas de motivation pour le dixime problme. Nous pouvons
seulement deviner pourquoi il ne parla que des solutions en

entiers rationnels

.
Nous avons vu que cela est quivalent rechercher un algorithme pour rsoudre les
quations diophantiennes en entiers naturels. Mais, en fait, Diophante lui-mme ne
rsolvait les quations ni en entiers naturels, ni en entiers relatifs, il cherchait des
solutions rationnelles. Donc pourquoi Hilbert ne demanda-t-il pas une procdure pour
dterminer lexistence de solutions rationnelles ? La rponse est plus ou moins vi-
dente. Hilbert tait optimiste et croyait en lexistence dun algorithme pour rsoudre
les quations diophantiennes en entiers. Un tel algorithme nous permettrait galement
de rsoudre les quations en rationnels.
[Mat-99], p. 297
1.5. HISTORIQUE 19
Bien sr on ne peut pas en dduire a priori propos dun problme particulier quHilbert
ne se posa jamais la question de la calculabilit. Mais en fait aucun des problmes ne porte sur
la calculabilit et on ne retrouve pas de trace de cette intrrogation dans ses uvres.
1.5.2.3 Le besoin de caractriser les fonctions calculables
Nous avons vu ci-dessus survenir quelques doutes sur la calculabilit de certaines oprations,
en particulier par mile Borel, mais sans quil y ait de dnition de ce qui est calculable. La
ncessit de dnir rigoureusement la calculabilit dune fonction se fait ressentir propos de
deux problmes : celui de la dcidabilit de larithmtique lmentaire et lnonc du thorme
dincompltude de Gdel.
Le problme de la dcidabilit de larithmtique lmentaire.- Tout le monde se souvient des pro-
blmes de Gomtrie quil a rencontrs au collge. Il faut, suivant la capacit de chacun, plus ou
moins de temps pour les rsoudre. Certains sont mme si diciles quil faut attendre la solution
du professeur. Dautres, encore plus diciles, faisaient lobjet dnoncs dans des revues telle que
feue la Revue de Mathmatiques lementaires en France.
Alfred Tarski montre la n des annes 1920 (publi tardivement [Tar-48, Tar-51]) quen fait
il ny a nul besoin de crativit pour rsoudre ces problmes. On peut automatiser la gomtrie
lmentaire, cest--dire que lon peut construire une machine laquelle on donne lnonc et
celle-ci en donne la rponse. Il sagit dun rsultat thorique, une telle machine ntant pas
construite lpoque. Ce nest que dans les annes 1970 quelle commencera apparatre comme
programme dordinateur.
Puisque la gomtrie lmentaire est automatisable, il doit bien en tre galement ainsi de
larithmtique lmentaire, se dit-on lpoque. Des recherches sont alors eectues dans ce sens,
mais on saperoit rapidement que le cas est plus coriace. On commence mme se dire quil
ne doit pas en tre ainsi. Mais comment le dmontrer ? Et dabord comment dmontrer quun
problme nest pas automatisable. Il faudrait dj prciser ce quest un problme automatisable.
Le thorme dincompltude de Gdel.- En 1931, Kurt Gdel rpond Hilbert (plus exacte-
ment son propos que

la conviction, dis-je, que tout problme mathmatique dtermin doit
tre forcment susceptible dune solution rigoureuse, que ce soit par une rponse directe la
question pose, ou bien par la dmonstration de limpossibilit de la rsolution, cest--dire de
linsuccs de toute tentative de rsolution

) par son clbre thorme dincompltude : quelle
que soit la thorie mathmatique considre, il existe un nonc du langage de celle-ci qui ne peut
ni tre dmontr, ni rfut dans cette thorie.
Gdel [God-31] a besoin dun minimum dhypothses sur ce quest une thorie mathmati-
que pour dmontrer son thorme. Une thorie mathmatique est une thorie logique du premier
ordre, avec un certain ensemble daxiomes. Dans ce contexte, lensemble des axiomes ne peut
pas tre ni mais on doit savoir si un nonc du langage de la thorie est un axiome ou non.
Autrement dit on doit pouvoir dcider si cest un axiome.
Pour dmontrer son thorme, Gdel donne lui-mme une dnition de ce quest une fonc-
tion calculable, inspire, dit-il, dune suggestion non publie de Jacques Herbrand. Il ne sera
cependant lui-mme convaincu quil a bien ainsi apprhend la notion de fonction calculable qu
lapparition du modle de Turing en 1936 (et de lquivalence avec son modle), comme il le dit
dans un postcriptum la rdition de son article dans [Dav-65] :
En consquence davances ultrieures, en particulier au fait que, dus aux travaux de
A. M. Turing, une dnition prcise et adquate sans discussion du concept gnral de
systme formel peut maintenant tre donne, lexistence de propositions arithmtiques
indcidables et la non-prouvabilit de la consistance dun systme dans ce systme lui-
20 CHAPITRE 1. MODLISATION THORIQUE DES ORDINATEURS
mme peuvent maintenant tre dmontrs rigoureusement pour tout systme formel
contenant une certaine quantit de thorie des nombres nitaire.
Les travaux de Turing donnent une analyse du concept de

procdure mcanique

(alias

algorithme

ou

procdure calculatoire

ou

procdure combinatoire -
nie

). On a montr que ce concept est quivalent celui de

machine de Turing

.
[Dav-65], p. 71
1.5.2.4 Caractrisation des fonctions calculables
Venons-en donc la dnition de Turing. Sous la direction de Neumann, Alan Turing
passe de la thorie des groupes lhypothse de Riemann et, pour cela, au calcul des zros de la
fonction dzta. Les moyens thoriques sont hors de porte ; il sagit donc deectuer des calculs
sur les dcimaux (avec les erreurs inhrentes) pour obtenir des rsultats sur les rels.
Il abandonne ce problme pour une rexion globale sur les rels qui peuvent tre calculables
et plus gnralement sur

ce qui est calculable

. Il rpond la question en 1936 [Tur-36] en
dnissant son clbre modle de machines abstraites. Sa rponse est immdiatement accepte.
La mme anne Alonzo Church [Chu-36] clame que toute notion de calculabilit est rductible
aux machines de Turing (ce qui est connu sous le nom de thse de Church) :
Le fait que deux dnitions trs direntes et (dans lopinion de lauteur) galement
naturelles de la calculabilit eective soient quivalentes ajoute la force des raisons
donnes ci-dessous pour croire quelles constituent une caractrisation gnrale de
cette notion cohrente avec la comprhension intuitive de celle-ci.
[Chu-36], note 3
Plusieurs autres modles de calculabilit sont proposs, dont on montre facilement quils sont
tous quivalents celui des machines de Turing.
1.5.2.5 Autres modles et machines RAM
Plusieurs modles thoriques de caractrisation des fonctions calculables ont t proposs,
presque tous la mme anne 1936.
Modle des fonctions rcursives.- Comme nous lavons dj dit, le premier modle est propos
par Herbrand.
Kurt Gdel est le premier mathmaticien avoir besoin dune caractrisation de lensemble
des fonctions calculables. Il utilise une variante de celle de Herbrand dans [God-31] mais sans
tre en tre satisfait.
-calcul.- Alonzo Church [Chu-33] et Stephen Cole Kleene [Kle-35] proposent un second mo-
dle en 1933, qui sera appel plus tard -calcul (prononcez lambda calcul). Lquivalence avec le
modle de HerbrandGdel est due principalement Kleene [Kle-36] mais aussi partiellement
Church et Rosser [CR-36].
Machines de Turing.- Ce quon appelle de nos jours machines de Turing a t propos par Alan
Turing [Tur-36] et, indpendamment et de faon plus approfondie, par Emil Post [Pos-36]. L-
quivalence avec la -dnissabilit est esquisse dans lappendice de larticle mme de Turing
puis prouve dans [Tur-37].
Quelques variations Markov et les machines RAM
1.6. BIBLIOGRAPHIE 21
1.6 Bibliographie
[Bor-98] Borel, mile, Leons sur la thorie des fonctions, Gauthier-Villars, 1898,
quatrime dition 1950, XIII + 295 p.
[Cas-01] Cassou-Nogus, Pierre, Hilbert, Les Belles Lettres, 2001, 171 p.
[Cau-] Cauchy, Augustin, Leons de calcul direntiel et intgral, 26
e
leon, pp.
385396.
[Chu-33] Church, Alonzo, A Set of Postulates for the Foundation of Logic (Part II), Annals
of Mathematics, vol. 34, 1933, pp. 839864 (voir p. 863).
[Chu-36] Church, Alonzo, An unsolvable problem of elementary number theory, American
journal of mathematics, vol. 58, 1936, pp. 345363. Reprinted in [Dav-65], 1965,
pp. 88107.
[CR-36] Church, Alonzo et Rosser, J. B., Some properties of conversion, Trans. Ame-
rican Math. Soc., vol. 39, 1936, pp. 472482.
[Dav-65] Davis, Martin, The undecidable : Basic papers on undecidable proposi-
tions, unsolvable problems and computable functions, Raven press, New-
York, 1965. Reed. Dover, 2004, 413 p., ISBN 0486432289.
[God-31] Gdel, Kurt, ber formal unentscheidbare Stze der Principia mathematica und
verwandter Systeme I, Monatshefte fr Mathematik und Physik, vol. 38, 1931,
pp. 173198.
Engl. tr. in [Van-67], 1967 and in Collected Works, vol.1, Oxford University Press,
1986.
Traduction franaise in Le thorme de Gdel, Seuil, 1989, 184 p.
[Gol-72] Goldstine, Herman H., The computer : from Pascal to von Neumann, XI
+ 378 p., Princeton University Press, 1972.
[Gor-68] Gordan, Paul, Beweis, dass jede Covariante und Invariante einer binren Form
eine ganze Function mit numerischen Coecienten einer endlichen Anzahl solcher
Formen ist, Journal fr die reine und angewandte Mathematik, vol. 69,
1968, pp. 323-354.
[Her] Hrodote, Histoires, Livre II : Euterpe, texte grec tabli et traduit par Ph.-E.
Legrand, Socit des Belles-Lettres, 1936, 182 pages ddoubles.
[Hil-90] Hilbert, David, ber einen allgemeinen gesichtspunkt fr invariantentheoretische
Untersuchung, Mathematische Annalen, vol. 28, 1890, pp. 473534.
[Hil-93] Hilbert, David, ber die vollen Inaviantentsysteme, Mathematische Annalen,
vol. 42, 1893, pp. 313370.
[Hil-00] Hilbert, David, Mathematische Problem. Vortrag gehalten auf dem internationalen
Mathematiker-Kongress zu Paris, 1900, Arch. der Math. und Physik, vol. 1,
1900, pp. 4463 et 213237. Aussi Nachrichten von der Knigliche Gesellschaft
der Wissenschaften zu Gttingen, pp. 253297 et David Hilbert, Gessammelte
Abhandlungen, pp. 290329, Springer, Berlin, 1935.
22 BIBLIOGRAPHIE
Traduction franaise par L. Laugel avec corrections et additions Sur les problmes
futurs des mathmatiques dans Compte rendu du Deuxime congrs inter-
national des mathmaticiens tenu Paris du 6 au 12 aot 1900, Gauthier-
Villars, 1902, pp. 58114. Rdition J. Gabay, Sceaux, 1990.
Traduction anglaise Mathematical problems. Lecture delivered before the Interna-
tional Congress of Mathematicians at Paris in 1900, Bulletin of the American
Mathematical Society, vol. 8, pp. 437479, 1902. Repris dans Mathematical
Developments Arising from Hilbert Problems, volume 28 of Proceedings of
Symposia on Pure Mathematics, pp. 134, American Mathematical Society, 1976.
[Kle-35] Kleene, Stephen Cole, A Theory of Positive Integers in Formal Logic, Ph.D. diss.,
Princeton University, September, 1933. Revised June 1934. American Journal of
Mathematics, vol. 57 (1935), pp. 153173 et 219244 (voir p. 219).
[Kle-36] Kleene, Stephen Cole, General recursive functions of natural numbers, Math.
Annalen, vol. 112, 19356, pp. 727742. Rd. in [Dav-65], pp. 236253.
[KU-58] Kolmogorov, A. N. and Uspenskii, V. A., On the denition of an algorithm, en
russe, Uspekhi Mat. Nauk, vol. 13, pp. 328, 1958.
English translation in AMS translations, 2nd series, vol. 29, 1963, pp. 217245.
[Lin-82] Lindemann, C.-L., ber die Zahl , Mathematische Annalen, vol. 20, 1882, pp.
213225. Rd. dans ? ?
[Mat-99] Matiiassvitch, Yuri, Le dixime problme de Hilbert : que peut-on faire avec des
quations diophantiennes ?, in Michel Serfati, La recherche de la vrit, pp.
281305, 1999, ACL Les ditions du Kangourou. Disponible en ligne sur :
http://www.kangmath.com/cite/confC01.html
[McL-08] McLarty, Colin, Theology and its discontents : the origin myth of modern mathe-
matics, 2008.
http://www.institut.math.jussieu.fr/~harris/theology.pdf
[Pos-36] Post, Emil, Finite combinatory processes formulation 1, The Journal of Sym-
bolic Logic, vol. 1, 1936, pp. 103105. Rd. in [Dav-65], pp. 289291.
[Ruf-04] Ruffini, P., Sopra la determinazione della radici nelle equazioni nume-
rische di qualunque grado, Modena, 1804. Rdition dans Opere Mathema-
tische, t. II, Edizioni Cremonese, Rome, 1953.
[Sch-01] Schrlig, Alain, Compter avec des cailloux : le calcul lmentaire sur
labaque chez les anciens Grecs, Presses polytechniques et universitaires ro-
mandes, 2001, 339 p.
[Smi-25] Smith, David Eugene, History of Mathematics, Ginn and Company, 1925. Reed.
Dover, 1958, vol. 1 XII + 596 p., vol. 2 XII + 725 p. Il existe une version lectronique
tlchargeable.
[Tar-48] Tarski, Alfred, A decision method for elementary algebra and geometry,
Rand Corporation, Santa Monica, 1948, III + 60 p. Traduction franaise de la
premire dition (alors indite) dans [Tar-74], 1974, pp. 203242.
[Tar-51] Tarski, Alfred, A decision method for elementary algebra and geometry,
BIBLIOGRAPHIE 23
2nd ed., University California Press, Berkeley, 1951, III + 63 p.
[Tar-74] Tarski, Alfred, Logique, smantique, mtamathmatique 19231944, vol.
2, Armand Colin, Paris, 1974.
[Tur-36] Turing, Alan Mathison, On computable numbers, with an application to the Ent-
scheidungsproblem, Proceedings of the London Mathematical Society, vol.
42, 1936, pp. 230265, Correction, ibid., vol. 43, pp. 544546. Reprinted in [Dav-65],
1965, pp. 116154. Tr. fr. in [Tur-95]
[Tur-37] Turing, Alan Mathison, Computability and -denability, The Journal of Sym-
bolic Logic, vol. 2, 1937, pp. 153163.
[Tur-95] Turing, Alan and Girard, Jean-Yves, La machine de Turing, Seuil, 1995, pp.
47102.
[Van-67] Van Heijenoort, Jean, From Frege to Gdel : A source book in mathe-
matical logic, 18791931, Harvard University Press, 1967, 4th printing, 1981,
corrected.
[Wan-37] Wantzel, L., Recherches sur les moyens de reconnatre si un problme de gomtrie
peut se rsoudre avec la rgle et le compas, Journal de Mathmatiques Pures
et Appliques, vol. 2, 1837, pp. 366372. Disponible en ligne :
http://portail.mathdoc.fr/JMPA/afficher_notice.php?id=JMPA_1837_1_2_A31_0
[Wil-85] Williams, Michael R., A History of Computing Technology, IEEE Computer
Society Press, 1985, second edition, 1997, XI + 426 p.
[Yus-81] Yushkevich, A. P., Sur les origines de la mthode de Cauchy-Lipschitz dans la
thorie des quations direntielles ordinaires, Rev. Histoire Sci. Appl., vol. 34
(3-4), 1981, pp. 209215.
24 BIBLIOGRAPHIE
1.7 Exercices
Exercice 1.- (Soustraction)
La soustraction nest pas une opration totale sur lensemble N des entiers naturels. On parle
de soustraction complte lorsquon prolonge cette opration par 0 pour un premier oprande
plus petit que le second oprande.
crire un programme qui calcule la dirence complte de lentier naturel contenu dans le
registre e
1
par celui contenu dans le registre e
2
et place le rsultat dans le registre s
1
.
Exercice 2.- (Codage des mots par des entiers naturels)
Exercice 3.- (Gnration des ensembles innis)
Nous avons dit que nous avions de la chance car, bien que lensemble des oprations calculables
par un ordinateur soit inni, toute opration calculable peut tre engendre partir dun ensemble
ni par un nombre ni de constructeurs doprations.
- 1
o
) Tout ensemble inni est-il engendr partir dun sous-ensemble ni par un nombre ni
de constructeurs ?
- 2
o
) Tout ensemble dnombrable est-il engendr partir dun sous-ensemble ni par un
nombre ni de constructeurs ?
Exercice 4.- Nous avons vu que le nombre de programmes et le nombre de fonctions calculables
sont innis.
Se pourrait-il que le nombre de programmes soit inni alors que le nombre de fonctions cal-
culables soit ni ?