You are on page 1of 96

1

Notes de cours en Assembleur


Bas sur les notes de cours de Philippe Gabrini
(http://www.grosmax.uqam.ca/inf2170/gabrini_p/Notes_cours.htm) et sur WARFORD, J. Stanley,
Computer Systems : Third Edition , Jones and Bartlett Publishers, tats-Unis, 2005, 675 p.

STRUCTURE VON NEUMANN : 5 CRITERES ESSENTIELS QUI DEFINISSENT UN


ORDINATEUR ................................................................................................................ 6
1.

Mdium dentre .................................................................................................................................................6

2.

Mdium de sortie ................................................................................................................................................6

3.

Unit de calcul (arithmtique et logique) ..........................................................................................................6

4.

Unit de contrle .................................................................................................................................................6

5.

Unit de mmoire ................................................................................................................................................7

VARIETE DE TYPES DORGANISATIONS DE MEMOIRE ........................................... 8


AUTRES CARACTERISTIQUES .................................................................................... 9
Lhorloge ......................................................................................................................................................................9
Les bus ..........................................................................................................................................................................9
Les registres ............................................................................................................................................................... 10
Les registres ............................................................................................................................................................... 11

LEXECUTION DUN PROGRAMME ........................................................................... 13

INSTRUCTIONS ET DONNEES ................................................................................... 15


DEUX GRANDS TYPES DE MICROPROCESSEURS ................................................. 16
CISC (Complex instruction-set computer) .............................................................................................................. 16
RISC (Reduced instruction-set computer) .............................................................................................................. 16

LE CODAGE DE LINFORMATION.............................................................................. 17
Conversion : Binaire -> Dcimal .............................................................................................................................. 17
Conversion : Dcimal -> Binaire .............................................................................................................................. 18
Conversion : Binaire -> Hexadcimal ...................................................................................................................... 19
Conversion : Hexadcimal -> Binaire ...................................................................................................................... 19
Conversion : Hexadcimal -> Dcimal ..................................................................................................................... 19
Conversion : Dcimal -> Hexadcimal ..................................................................................................................... 19
La reprsentation de linformation .......................................................................................................................... 20
Larithmtique relle ................................................................................................................................................. 20

LE LANGAGE DASSEMBLAGE ................................................................................. 24


Gnralits.................................................................................................................................................................. 24
Une instruction en langage assembleur ................................................................................................................... 25
Un programme en Assembleur ................................................................................................................................. 26

ARITHMTIQUE EN COMPLMENT........................................................................... 27
ADRESSAGE DES OPRANDES................................................................................ 28
Gnralit ................................................................................................................................................................... 28
Adressage immdiat .................................................................................................................................................. 28
Adressage direct ......................................................................................................................................................... 28
Adressage base (non-utilis)...................................................................................................................................... 29

Adressage index........................................................................................................................................................ 29
Adressage indirect ..................................................................................................................................................... 30
Adressage direct sur la pile ....................................................................................................................................... 30
Adressage index sur la pile ...................................................................................................................................... 31
Adressage indirect sur la pile.................................................................................................................................... 31
Adressage indirect index sur la pile........................................................................................................................ 32

LES SOUS-PROGRAMMES ........................................................................................ 33


Gnralits.................................................................................................................................................................. 33
La pile ......................................................................................................................................................................... 33
Les paramtres ........................................................................................................................................................... 34
Identificateurs ............................................................................................................................................................ 36
Constantes .................................................................................................................................................................. 36
Instructions et directives ........................................................................................................................................... 36
Format des instructions ............................................................................................................................................. 36
Liste dassemblage ..................................................................................................................................................... 37

ASSEMBLEUR : DIRECTIVES .................................................................................... 38


Directives qui engendrent une rservation de mmoire ......................................................................................... 38
Directives qui nengendrent pas de rservation de mmoire ................................................................................. 38

ASSEMBLEUR : INSTRUCTIONS ............................................................................... 39


Instructions unaires simples ..................................................................................................................................... 39
Instructions de chargement et de rangement .......................................................................................................... 39
Instructions arithmtiques ........................................................................................................................................ 39
Instructions dentre-sortie....................................................................................................................................... 40
Instructions logiques.................................................................................................................................................. 41

Instructions de branchement .................................................................................................................................... 41


Instructions lies aux sous-programmes .................................................................................................................. 42
Instructions non-ralises ......................................................................................................................................... 43

DOCUMENTATION DES PROGRAMMES ................................................................... 44


Gnralit ................................................................................................................................................................... 44
Structures de base ...................................................................................................................................................... 44
Guide dutilisation ..................................................................................................................................................... 45
La documentation externe ........................................................................................................................................ 46
La documentation interne ......................................................................................................................................... 46

MISE AU POINT DES PROGRAMMES........................................................................ 48


Principes ..................................................................................................................................................................... 48
Outils........................................................................................................................................................................... 48

LE SYSTEME DEXPLOITATION DE PEP/8 ............................................................... 49


Gnralits.................................................................................................................................................................. 49
La pile systme et le tampon dentre-sortie ........................................................................................................... 49
Le chargeur (Loader) ................................................................................................................................................ 50

SYSTEME DINTERRUPTION DU PROCESSEUR (TRAPS) ...................................... 52


Gnralits.................................................................................................................................................................. 52
Le traitement dune interruption ............................................................................................................................. 53
Exemple dinterruptions sur un processeur rel (MC68000) ................................................................................ 53
Le mcanisme ............................................................................................................................................................. 55
Linstruction RETTR ................................................................................................................................................ 56
Le traitement des interruptions : trap ..................................................................................................................... 57
Vrification du mode dadressage : assertAd .......................................................................................................... 58

Calcul de ladresse de loprande : setAddr ............................................................................................................ 60


Traitement des instructions NOP : opcode24-28 .................................................................................................... 62
Traitement de linstruction DECI : opcode30 ......................................................................................................... 63
Traitement de linstruction DECO : opcode38 ....................................................................................................... 67
Traitement de linstruction STRO : opcode40 ........................................................................................................ 69
Exemple de traitement dune instruction causant une interruption ..................................................................... 70

ANNEXE A : GLOSSAIRE ........................................................................................... 87


ANNEXE B : EXEMPLE DUNE DOCUMENTATION INTERNE .................................. 88
ANNEXE C : LORIGINE DU CHARGEUR .................................................................. 93
Les systmes moniteurs : Le traitement par lots..................................................................................................... 93
Rduction des dlais de chargement et de compilation .......................................................................................... 95

Structure Von Neumann : 5 critres essentiels qui dfinissent un ordinateur

Entre
(Clavier, souris, etc.)

5 Mmoire

Sortie
(cran, imprimante, etc.)

Unit de contrle

Bus

3 Unit arithmtique et

Registres

logique

1. Mdium dentre
2. Mdium de sortie
3. Unit de calcul (arithmtique et logique)
-

Dfinition : Lunit de calcul, souvent appele UAL pour Unit Arithmtique et Logique, sert
excuter les oprations logiques et arithmtiques sur des oprandes fournis par lunit de
contrle.

4. Unit de contrle
-

Dfinition : Partie de lUCT (Unit Centrale de Traitement) qui interprte les instructions et
choisit des actions en consquence.

Fonctionnement
o Lit les instructions en mmoire, les dcode et envoie les signaux aux autres lments de
lordinateur pour quune instruction soit excute.
o Elle reoit aussi des rsultats de lunit de calcul pour complter lexcution des
instructions qui permettent des choix.

5. Unit de mmoire
-

Dfinition : Lunit de mmoire est une unit spare de lUCT qui doit, entre autre, contenir les
instructions, les oprandes et les rsultats.

Fonctionnement
o Au cours de lexcution dun programme, les instructions, les oprandes et les rsultats rsident
en mmoire
o

Compos de bits regroups en cellules pour former des mots de mmoire


 Chaque cellule peut contenir une quantit fixe dinformation.
 Chaque cellule est associe une adresse. Le nombre dadresse va de 0 au nombre de
cellules 1
 Chaque cellule ne peut contenir quune seule valeur la fois. Le stockage dune nouvelle
valeur dtruit lancienne valeur contenue dans la cellule.
Exemples de processeurs et leurs mots de mmoire
Processeur
INTEL 8080
MC68000
IBM 370
VAX 11
DEC 10
CYBER 170
CYBER 180



Mot de mmoire
mot de 8 bits, 1 cellule de 8 bits
mot de 16 bits, 2 cellules de 8 bits
mot de 32 bits, 4 cellules de 8 bits
mot de 32 bits, 4 cellules de 8 bits
mot de 36 bits, 1 cellule de 36 bits
mot de 60 bits, 10 cellules de 60 bits
mot de 64 bits, 8 cellules de 8 bits

Les cellules ne peuvent contenir que des valeurs binaires. Ainsi, toute linformation
traite par lordinateur doit tre code sous forme binaire.
Accs aux cellules : Trs rapide. Se calcule en nanosecondes (un milliardime de
seconde)

Varit de types dorganisations de mmoire


Stairway to Heaven
Rapide

cot

Petite
-

Mmoire vive  RAM (Random Access Memory)


o Volatile : Les donnes seffacent sans la prsence dlectricit.
o Accs alatoire
o Modifiable : Lecture / criture

Mmoire morte  ROM (Read-Only Memory)


o Non-volatile : Retient les informations mme sans lectricit
o Non-modifiable : Lecture seulement
o Place sur un circuit intgr principal (motherboard) sous forme de puce spare
o Cot dinsertion des donnes lev
o Aucune marge derreur

PROM (Programmable Read-Only Memory)


o Mmes caractristiques que la ROM
o Processus dcriture lectronique qui fait en sorte que la puce peut tre programm un autre
moment que la fabrication.

EPROM (Erasable Programmable Read-Only Memory)


o Mmes caractristiques que le ROM
o PROM avec possibilit deffac et de reprogramm le contenu.

EEPROM (Electrically Erasable Programmable Read-Only Memory)


o Mmes caractristiques que la ROM
o Possibilit de rcriture du contenu sans tout effacer.

Autres caractristiques
Lhorloge
-

Dfinition : Lhorloge est un dispositif de synchronisation mettant un signal intervalle rgulier

But : Synchroniser les activits de lunit centrale de traitement

Fonctionnement
o Un cycle dhorloge : Intervalle de temps entre chaque signal.
o La frquence dhorloge : Nombre de signaux dhorloge engendrs par unit de temps.
o Lhertz est lunit de mesure pour les activits de lUCT.
 1 million dhertz : 1 Megahertz (MHz)
 1 milliard dhertz : 1 Gigahertz (GHz)
o Exemple de calcul : Si un UCT volue 1.5GHz, le nombre de cycles dhorloge est de 1 milliard
500 millions (1 500 000 000) cycles par seconde. Si une opration requiert 10 cycles dhorloge,
-9
elle sera excute en un temps de : 10(1/1 500 000 000) = 6,66ns (6,66 x 10 )

chelles de temps
o Nanoseconde : 1 milliardime de seconde
o Microseconde : 1 millionime de seconde

Les bus
-

Dfinition : Le bus est un ensemble de lignes de communication qui permet lUCT de communiquer avec
la mmoire et les dispositifs priphriques. Elle permet le transfert dadresses, de donnes et de signaux
qui reprsentent de linformation entre les divers composants du systme.

Les diffrents types de bus


o Bus dadresses
 Dfinition : Permet lUCT daccder une position mmoire


Fonctionnement
Le nombre de lignes du bus dadresses dtermine le domaine des adresses
possibles.
16
Exemple : Bus de 16 bits. Nombre dadresses possible : 2 = 65536
Si ladresse dpasse le nombre dadresses possible, il se produit une erreur de
bus ( bus error ).

Quantities of bytes
SI prefixes

Binary prefixes

10

Name
(Symbol)

12

15

18

21

24

10

megabyte (MB)

10

gigabyte (GB)

10

terabyte (TB)

10

petabyte (PB)

10

exabyte (EB)

10

zettabyte (ZB)

10

yottabyte (YB)

10

Name
(Symbol)

Value

10

kibibyte (KiB)

10

20

mebibyte (MiB)

30

gibibyte (GiB)

40

tebibyte (TiB)

50

pebibyte (PiB)

60

exbibyte (EiB)

70

zebibyte (ZiB)

80

yobibyte (YiB)

20

30

40

50

60

70

80

LUCT place une adresse sur le bus dadresse en spcifiant le type dopration
(lecture ou criture)

Bus de donnes
 Dfinition : Le bus de donnes permet lUCT et aux priphriques de schanger des
donnes.


kilobyte (kB)

Standard Alternate
SI
Use

Fonctionnement
La quantit de donnes transfre en un cycle mmoire est dtermine par le
nombre de lignes du bus de donnes.
Exemple
o Bus de donnes de 8 lignes
o Peut transfrer 8 bits la fois
o Si le mot mmoire est de 2 octets, a prend 2 cycles pour le transfert

Bus de contrle
 Dfinition : Lignes de transmission des signaux pour contrler les diffrents vnements
qui se produisent dans les diffrentes parties du systme.

Les registres
-

Dfinition : Cellule de taille fixe contenue dans lUCT dont laccs est plus rapide que la mmoire vive.

But : Utilis pour le contrle de lordinateur et pour ranger les rsultats intermdiaires des calculs.

Fonctionnement

11

o
o
o

Les instructions utilisent gnralement linformation qui se trouve dans les registres du
processeur
De faon gnrale, un ordinateur est quip de 16 ou 32 registres de 32 bits
Types de registres
 Registres dindex
 Registres de calcul
 Sous PEP/8, il nexiste que deux registres. Le registre X peut tre utilis comme registre
dindex ou de calcul tandis que le registre A ne peut tre utilis que comme registre de
calcul.
Numrots de 0 15, de droite gauche
Bit le moins significatif : 0
Bit le plus significatif : 15

15

Les registres
-

A : Accumulateur (16 bits)


o But : Sert effectuer les oprations logiques, arithmtiques ou daccs mmoire

X : Index (16 bits)


o But : Comme pour le registre A, et peut aussi servir indexer la mmoire quand on lutilise avec
le mode index

SP : Stack Pointer (16 bits)


o But : Pointe le sommet de la pile

PC : Program Counter (16 bits, compteur ordinal)


o Dfinition : Registre spcial de lUCT qui contient ladresse de la cellule de mmoire contenant la
prochaine instruction excuter.
o

Fonctionnement
 La taille du registre dpend de la taille de lespace mmoire utilis
 Sous PEP/8, la taille du compteur ordinal est de 2 octets (16 bits)
 Mis jour pendant lexcution de chaque instruction.

IR : Instruction Registrer (24 bits)


o Contient linstruction actuellement en cours dexcution

NZVC : Status Bits (4 bits, Les codes de condition)


o Dfinition : Codes qui varient selon le processeur et dont les valeurs changent selon lexcution
de certaines instructions.

12

Fonctionnement
 Ngatif (N) : Vaut 1 si le rsultat est infrieur 0
 Zro (Z) : Vaut 1 si le rsultat est gal 0
 Dbordement (V pour overflow ) : Vaut 1 lorsquil y a un dbordement
 Retenue (C pour carry ) : Mis 1 si retenue, zro autrement

Diffrence entre V et C
 Loverflow et carry servent tous les deux indiquer un dbordement. Cependant,
overflow indique un dbordement en supposant que le nombre est sign et carry
suppose que le nombre nest pas sign.
 Un dbordement survient lorsque lopration effectue fait sortir le nombre des bornes.
Par exemple, sur 16 bits, un nombre doit tre compris entre -32768 (0x8000) et 32767
(0x7FFF). Un nombre non-sign sur 16 bits doit tre compris entre 0 (0x0000) et 65535
(0xFFFF)

-32768

Nombre SIGN sur 16 bits


Domaine
0

32767

Reprsentation interne
Carry
Overflow

32767

65535

-32768

-1

Overflow
Carry




Exemple doverflow (V = 1) avec la soustraction : (-32768) 1


Exemple de carry (C = 1) avec la soustraction : 0 1
Exemple doverflow ET de carry (V = 1, C = 1) : 0x9000 + 0x8000

13

Lexcution dun programme


-

LUCT ne sarrte jamais. Elle excute continuellement des instructions contenues dans la mmoire
centrale.

LDA valeur,d
Compteur ordinal
0x0F60

0x0F63
4

Registre adresse
du bus dadresse
0x0F60

0xF5B
0xF5C
0xF5D
0xF5E
0xF5F
0xF60
0xF61
0xF62
0xF63
0xF64
0xF65
0xF66
0xF67
0xF68

0x0F61
Registre du bus de
donnes

0x0F66
0xC9
0x0F
0x66

0xC9
0x0F66
0xD2F5

3
0xC9 0x0F66
5
2
Registre dinstruction

1.

0xD2
0xF5
0xD2F5
Registre X

N:0

Z:0

V:0

C:0

Extraire linstruction de la mmoire dont ladresse se trouve dans le compteur ordinal


a.

Placer le contenu du compteur ordinal dans le registre adresse du bus dadresse

b.

Un accs mmoire est effectu et rcupre 0xC9 dans le registre du bus de donnes

c.

Le contenu du registre du bus de donnes est transfr au registre dinstruction

2.

Dcoder linstruction (Instruction, type de registre, type dadressage Voir Une instruction en langage
assembleur ). C9 (1100 1001) indique un chargement dans le registre X en mode direct.

3.

Puisque notre instruction nest pas unaire (Dtermine lors du dcodage), on obtient la partie oprande
de linstruction

14

a.

Placer ladresse du premier octet de loprande (From where ?) dans le registre adresse du bus
dadresse

b.

Un accs mmoire est effectu et rcupre 0x0F66 dans le registre du bus de donnes

c.

Le contenu du registre du bus de donnes est transfr dans les deux derniers octets du registre
dinstruction

4.

Augmenter le compteur ordinal dpendamment de la longueur de linstruction courante. Dans ce cas-ci, 3


octets. 0xF60 devient donc 0xF63.

5.

Excuter linstruction qui se trouve dans le registre dinstruction. Puisque le mode dadresse est direct, la
partie oprande est une adresse mmoire o se trouve la valeur de loprande. Il faut donc aller la
chercher en mmoire.
a.

Placer le contenu des deux derniers octets du registre dinstruction dans le registre adresse du
bus dadresse

b.

Un accs mmoire est effectu et rcupre 0xD2F5 dans le registre du bus de donnes

c.

Le contenu du registre du bus de donnes est transfr dans le registre X

6.

Affecter les codes de condition

7.

Revenir ltape 1

15

Instructions et donnes
-

La sparation des donnes et des instructions est cruciale parce que lunit centrale de traitement ne
peut pas distinguer les instructions des donnes

Cest au programmeur de sparer les instructions des donnes et de positionner le compteur ordinal la
premire instruction excuter.

16

Deux grands types de microprocesseurs


CISC (Complex instruction-set computer)
-

Dfinition : Possde une grande varit dinstructions conus pour des traitements spcifiques

Exemples : MC68000, PEP/8

RISC (Reduced instruction-set computer)


-

Dfinition : Petit ensemble dinstructions qui sexcutent en un cycle dhorloge. Il utilise un grand nombre
de registres internes pour crer du code simple et trs efficace.

Exemples : IBM RS6000, IBM/Motorola PowerPC

17

Le codage de linformation
Note : Les chiffres utiliss pour reprsenter un nombre dans un systme de numration donn doivent tre compris entre zro et la base 1.

Base
2 (binaire)
8 (octale)
10 (dcimale)
16 (hexadcimale)

Chiffres possibles
0, 1
0, 1, 2, 3, 4, 5, 6, 7
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Tableau dquivalences
2

16

10

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

00
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Conversion : Binaire -> Dcimal


-

Entier : Expansion polynomiale


0
2
5
o Exemple : 100101 en binaire devient 2 + 2 +2 = 30
Virgule flottante : En utilisant une table des puissances de deux

18

Conversion : Dcimal -> Binaire


-

Entier : Suite de divisions par deux en conservant le reste de chaque division


o Exemple : 5830 en dcimal devient 1010110000110 en binaire
Reste
5830 divis par 2 = 2915
2915 divis par 2 = 1457
728
364
182
91
45
22
11
5
2
1
0

0
1
1
0
0
0
0
1
1
0
1
0
1

Virgule flottante : Conversion de la partie entire comme mentionn ci-haut et conversion de la partie
fractionnaire par une srie de multiplications par deux en conservant la partie entire de chaque rsultat.
o

Exemple : 7,3 en dcimal devient 111,01001100110011() en binaire


Unit
0,3 multipli par 2 = 0,6
0,6 multipli par 2 = 0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6

0
1
0
0
1
1
0
0
1
1
0
0
1

Note : Des nombres qui possdent une reprsentation finie dans un systme de numration donn peuvent avoir une reprsentation infinie (ou
cyclique) dans un autre systme de numration.

19

Conversion : Binaire -> Hexadcimal


-

Grouper les chiffres binaires (bits) par 4 en partant de la droite et remplacer chaque groupe par son
quivalent hexadcimal.
Exemple : 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 devient 13AC6B

Conversion : Hexadcimal -> Binaire


-

Remplacer chaque chiffre hexadcimal par son quivalent binaire sur quatre bits
Exemple : F332A devient 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0

Conversion : Hexadcimal -> Dcimal


-

Expansion polynomiale
0
1
2
3
Exemple : D52C devient C(12) X 16 + 2 X 16 + 5 X 16 + D(13) X 16 = 54572

Conversion : Dcimal -> Hexadcimal


-

Srie de divisions par 16 en conservant le reste de chaque division


Exemple : 3940 en dcimal devient en hexadcimal
Reste
3940 divis par 16 = 246
246 divis par 16 = 15
0

4
6
15(F)

20

La reprsentation de linformation
-

Les bits dun octet sont numrots de droite gauche de la position 0 la position 7.
Ladresse du mot est toujours ladresse du premier octet de la zone considre

Adresse

5FC
Moiti 1

5FD

Moiti 2

5FE
5FF

Le bit de gauche peut tre utilis pour indiquer le signe du nombre : 0 pour positif, 1 pour ngatif.
Le contenu dune case mmoire peut reprsenter nimporte quoi. Ainsi, rien ne diffrencie le contenu
alphanumrique des octets du contenu numrique des mots
Tout dpend de linterprtation qui en est faite !

Larithmtique relle
-

Dfinition : Les ordinateurs peuvent traiter plusieurs types de valeurs numriques, contrairement au
processeur virtuel PEP/8 qui ne traite que des valeurs entires, dites valeurs en point fixe . Ainsi, un
processeur standard comprend trois types darithmtique :
o Arithmtique entire
o Arithmtique relle
o Arithmtique dcimale

Fonctionnement
o Larithmtique relle traite des valeurs numriques en point flottant . Le mot point
identifie le point dcimal ou la virgule qui spare la partie entire de la partie fractionnaire dune
valeur numrique relle.
o Larithmtique relle en point fixe indique que le point dcimal a une position fixe,
gnralement droite de la valeur, qui ne comprend alors quun seul chiffre dans sa partie
entire.
o Larithmtique relle en point flottant indique que le point dcimal est situ nimporte o
dans le nombre
o La forme normalise indique que la partie entire des nombres est toujours nulle et que le
premier chiffre de la partie fractionnaire est toujours diffrent de zro. Cette forme comprend
trois champs :
 Le signe
 La partie fractionnaire, aussi appele mantisse
 Lexposant
o La forme normalise, applique linformatique et donc sous sa forme binaire, fut standardise
e
par lorganisme IEEE en 1985 sous le sigle IEEE 754. Cette forme est toujours 1.f x 2 .

21





Le premier chiffre est toujours 1 et nest donc pas conserv


La norme nutilise pas la reprsentation en complment deux
La partie exposant est divis en deux domaines. Par exemple, en simple prcision :
Les valeurs infrieures allant de 00 7E sont considres comme ngatives
Les valeurs suprieures allant de 80 FF sont considres comme positives
7F reprsente zro et est aussi appele le ple car on doit ajouter sa valeur
lexposant afin dobtenir lexposant effectif qui sera ranger dans le champ
exposant.
Simple prcision : 32 bits
Signe : 1 bit
Exposant : 8 bits
o Ple : 7F (127)
o Maximum : 127
o Minimum : -126
Mantisse : 23 bits
Double prcision : 64 bits
Signe : 1 bit
Exposant : 11 bits
o Ple : 3FF (1023)
o Maximum : 1023
o Minimum : -1022
Mantisse : 52 bits

En point flottant :
En point fixe :

- 323,443
- 3,23443 x 10-2

Forme normalise : - 0,323443 x 10-3


Signe

Norme IEEE 754 :

Partie
fractionnaire

La puissance

1.f x 2e

Reprsentation en simple prcision :


31
30
Signe

23 22
Exposant

0
Mantisse

Reprsentation en double prcision :


63
62
Signe

Les valeurs spciales

52 51
Exposant

0
Mantisse

22

Contexte : La droite des nombres rels est continue et infinie en mathmatiques. De plus, entre
deux nombres rels, il existe une infinit de valeurs. Lorsquon applique le principe des nombres
rels en informatique avec la reprsentation IEEE 754, on sait que linfini nexiste plus et que la
droite des rels nest ni infinie, ni continue.
Nombre rel ngatif

Nombre rel positif

Dbordement

Dbordement

OK

OK
Dbordement
par le bas

Dbordement
par le bas

Il existe 4 zones de dbordement


 Overflow ngatif : Les valeurs ngatives ayant une valeur absolue trop grande
 Overflow positif : Les valeurs positives trop grandes
 Underflow ngatif : Les valeurs ngatives ayant une valeur absolue trop petite
 Underflow positif : Les valeurs positives trop petites

Il existe 4 types de nombres dont une reprsentation interne spciale simpose tant donn leurs
caractristiques. La solution adopte par la norme IEEE 754 dans cette matire est de rserver
des valeurs spciales qui reprsentent les 4 types particuliers de nombres.
Notes : Toutes les plages rserves ci-dessous utilisent la simple prcision mais le principe est le mme pour la double
prcision.

Valeur zro
e
La norme IEEE 754 prescrit quun rel doit toujours tre sous la forme 1.f x 2 .
Le problme avec zro cest quil ne possde aucun bit 1 dans sa reprsentation
binaire. Ainsi, le bit 1 cach par la norme lui serait automatiquement ajout.
Valeurs rserves
o Zro positif : 0x00000000
o Zro ngatif : 0x80000000
Consquence : Cette rservation de valeurs force la plus petite valeur positive
-127
0x00000001 (1.00000000000000000000001 x 2 ) et la plus grande valeur
-127
ngative 0x80000001 (1.00000000000000000000001 x 2 )

Infini

La valeur est dite infinie lorsque celle-ci se trouve dans une zone dbordement.
o Lorsque le dbordement est positif, linfini est positif.
o Lorsque le dbordement est ngatif, linfini est ngatif
Valeurs rserves
o Dbordement positif : 0x7F800000
o Dbordement ngatif : 0xFF800000
Consquence : Cette rservation de valeurs force la grande puissance positive
127 au lieu de 128 et la plus grande puissance ngative 126 au lieu de 127

Not a Number (NaN)

23

La norme IEEE 754 rserve un certain nombre de bits afin de reprsenter des
codes derreurs concernant des oprations arithmtiques interdites sur les
rels. Par exemple :
o La racine carre dun nombre ngatif
o Une division par zro
Valeurs rserves
o 0x7F suivi dun reste non nul
o 0xFF suivi dun reste non nul
Consquence : Tout comme linfini, NaN utilise la plus grande valeur de
lexposant, ce qui rduit lintervalle des valeurs que lon peut ranger.

Nombres dnormaliss
Une des restrictions de la norme IEEE 754 est dajout automatiquement la
partie entire du nombre rel, en loccurrence un bit 1. Il est possible
cependant de contourner cette rgle et dinsrer un bit 0 comme partie
entire. Cest ce quon appelle un nombre dnormalis.
But : Cette pratique a pour but datteindre des valeurs minimales encore plus
grandes et en mme temps de diminuer les zones de dbordement par le bas.
Valeurs rserves
o Normalis positif : 0x00 suivi dun reste non nul
o Normalis ngatif : 0x80 suivi dun reste non nul
Consquence : Le bit cach par la norme devient un 0

24

Le langage dassemblage
Gnralits
-

Dfinition : Un langage dassemblage est une forme symbolique du langage machine.

Fonctionnement
o Un programme appel assembleur traduit un programme crit en langage dassemblage en son
quivalent en langage machine qui peut alors tre excut par lordinateur.
o Le langage dassemblage possde une syntaxe qui doit tre respecte.
o De faon gnrale, une instruction dun programme en langage dassemblage correspond une
instruction du langage machine.

4 champs
tiquette

Fibo :
Boucle :

Opration

LDA
CPA
BRGE
LDA
STA
LDA
STA
ADDA
STA
BR

Oprandes

Commentaires

Somme,d
500,i
Affiche
dernier.d
avant,d
somme,d
dernier,d
avant,d
somme,d
Boucle

;
; while (somme < 500)
; {
;
;
avant = dernier;
;
;
dernier = somme;
;
;
somme = avant + dernier;
; } //while

25

Une instruction en langage assembleur


-

Une instruction peut tre de longueur 1 (Instruction avec 1 oprande) ou de longueur 3 (Instruction avec
deux oprandes)
Chaque instruction comprend un code opration qui indique lopration que lordinateur doit excuter
Une instruction comprend aussi des indications permettant lordinateur de dterminer o se trouver le
ou les oprandes de linstruction
Code instruction

Oprande (facultatif)

C9D4F6
1100

1001

D4F6

Code opration: 4 bits

Adresse mmoire

Registre (facultatif)
-

Mode dadressage (facultatif)

Types dinstructions
o Instructions arithmtiques
o Instructions logiques
o Instructions de transfert
o Instructions dentre-sortie
Modes dadressage sur aaa

Modes dadressage sur a

000

Immdiat

Immdiat

001

Direct

Index

010

Indirect

011

Pile

100

Pile indirect

Accumulateur A

101

Index

Registre dindex X

110

Index pile

111

Index pile indirect

Registre R

26

Un programme en Assembleur
1 Programme
source

1 Assembleur

2 Bibliothque
de programmes

1 Programme
objet

Liste du
programme

Chargeur
diteur de liens

Donnes

3 Programme
objet charg

Rsultats

Premire phase
o Le programme source est traduit en langage machine
o Le programme objet ainsi obtenu est rang dans un fichier

Seconde phase
o Le programme objet est plac en mmoire centrale
o Les divers modules ncessaires son excution sont galement chargs en mmoire et les
liaisons entre les divers modules sont tablies
o Translation du programme objet : Chaque instruction du programme objet possde une adresse
relative qui lui a t attribue par lassembleur. Lors du chargement, toutes les adresses relatives
sont modifies par addition de ladresse de chargement et les adresses relatives deviennent des
adresses absolues.

Troisime phase
o Excution du programme

27

Arithmtique en complment
-

Dfinition : Le complment dun nombre est quivalent au ngatif de ce nombre

Fonctionnement
n
o Dans un systme de numration en base b, le complment dun nombre X est dfini par : b X.
o On divise arbitrairement le domaine de la base en deux parties plus ou moins gales et on dcide
quelle partie reprsente les nombres positifs et quelle partie reprsente les nombres ngatifs.
 Exemples
En base 10, avec 4 chiffres :
o Nombres positifs : 0 4999
o Nombres ngatifs : 5000 9999
En base 2, sur un octet
o Nombres positifs : 00000000 01111111
o Nombres ngatifs : 10000000 11111111
o Le complment en base diminue : Truc pour trouver les complments
 Fonctionnement : Soustraire chaque chiffre du plus grand chiffre dans le systme de
numration en base b
n
 Formule : (b -1) X
 Exemple :

Complment de 3992
en base 10 :
9999
- 3992
--------6007
+
1
---------6008

28

Adressage des oprandes


Gnralit
-

Adresse relative : Adresse mmoire attribue par lassembleur


Adresse absolue : Adresse mmoire relle occupe en mmoire
Adresse effective : Adresse qui est effectivement utilise au moment de lexcution de linstruction
Programme translatable : Un programme objet produit par un assembleur est constitu de manire
pouvoir tre charg nimporte quel endroit de la mmoire

Adressage immdiat
-

Un oprande se trouve dans linstruction elle-mme


LDA valeur,i
Code opration

Oprande

Adressage direct
-

Le champ oprande de linstruction contient ladresse effective de loprande et on doit faire un accs la
mmoire pour obtenir ce dernier.
LDA valeur,d

..

Code opration

Adresse oprande

Oprande

..

29

Adressage base (non-utilis)


-

Mode dadressage relatif : Les oprandes sont reprs par des adresses relatives
Ladresse effective de loprande est calcule au moment de lexcution de linstruction par addition au
contenu du registre de base.
Formule : Adresse effective = Adresse de base + dplacement
Le registre de base reste constant

..

Code opration

Registre de base

Adresse oprande

Valeur

Valeur

Oprande

..

Adressage index
-

Ladresse effective de loprande est calcule en ajoutant le contenu dun registre dindex ladresse de
base.
Formule : Adresse effective = Adresse de base + Contenu du registre dindex
Le registre dindex peut prendre plusieurs valeurs
LDA valeur,x

..

Code opration

Registre de base

Adresse oprande

Valeur

Oprande

..

30

Adressage indirect
-

Mcanisme dindirection : Le champ adresse contient une position mmoire qui elle, contient ladresse de
loprande
LDA valeur,n

..

Code opration

Registre de base

Adresse oprande

Valeur

Addr. Oprande

Oprande

..

Adressage direct sur la pile


-

Adresse effective = Pointeur de pile + Dplacement


LDA valeur,s

..

Code opration

Dplacement oprande

+ SP

Oprande

..

31

Adressage index sur la pile


-

Adresse effective = Pointeur de pile + Dplacement + Registre dindex


Permet daccder aux valeurs dune table situe sur la pile
LDA valeur,sx

..

Code opration

Registre dindex

Dplacement oprande

Valeur

SP

Oprande

..

Adressage indirect sur la pile


-

Adresse effective Adresse = Pointeur de pile + Dplacement


La pile ne contient pas loprande mais ladresse de loprande
LDA valeur,sf

..
Oprande
Code opration

Adresse oprande

Valeur

Stack
Pointer

SP

Addr. Oprande

..

32

Adressage indirect index sur la pile


-

Utilis lorsquon passe ladresse dun vecteur un sous-programme qui doit travailler directement dans
celui-ci.

LDA valeur,sxf

..

Code opration

Adresse oprande

Registre
dindex
Oprande

Valeur

Stack
Pointer

SP

Addr. Oprande

..

33

Les sous-programmes
Gnralits
-

Dfinition : Un sous-programme, comme son nom lindique, est une partie dun programme, ou plus
prcisment une des tapes du problme rsoudre.
Programme

Sous-programme

appel

retour
appel

But : Un sous-programme permet dutiliser des solutions antrieurement programmes et facilite la mise
au point des programmes.

Fonctionnement
o Un sous-programme fait appel au
concept de pile
o Lappel dun sous-programme nest
quune rupture de lexcution
squentielle des instructions du
programme.

Histoire : Dans les anciens ordinateurs, ladresse de retour tait


conserve dans le sous-programme : ceci interdisait la
rcursivit directe ou indirecte. En effet, un second appel un
sous-programme dont le premier appel ntait pas termin,
dtruisait la premire adresse de retour en la remplaant par la
seconde. Il ntait alors plus possible de revenir linstruction
suivant le premier appel.

La pile
-

Dfinition : La pile est une zone mmoire rserve par le systme dexploitation et utilis par les sousprogrammes. Sur la pile on empile :
o Ladresse de retour
o Les variables locales
o La donne de retour
o Une sauvegarde des registres

34

Adresse 0
Programmes et sousprogrammes

La pile croit vers


le haut, ce qui
implique une
diminution de
ladresse du
sommet de la pile

Adresse FFF0
Espace de la pile

Sommet
de la pile

Buts
o
o
o

Adresse FFFF

Grer les appels des sous-programmes


Allouer la mmoire aux variables locales des sous-programmes
Passer des paramtres aux sous-programmes

Fonctionnement
o Le pointeur de pile (stack pointer ou SP) : Le stack pointer est un registre o est conserv
ladresse du sommet de la pile.
o Lorsque lexcution du programme dmarre sous le contrle du systme dexploitation, une zone
de mmoire est affecte la pile et le pointeur de pile est initialis. Ainsi, on :
 DIMINUE SP pour EMPILER
 AUGMENTE SP pour DPILER
o Il faut noter que le systme dexploitation nest pas oblig de rserv de lespace mmoire pour
la pile. Dans ce cas, cest au programmeur de le faire.

Instructions
o Voir ADDSP : Augmente le registre du pointeur de pile (Dpile)
o Voir SUBSP : Diminue le registre du pointeur de pile (Empile)
o Voir CALL : Appel dun sous-programme et empile ladresse de la prochaine instruction (Valeur
du compteur ordinal)
o Voir RETn : Retourne au programme appelant et dpile de n octets.

Les paramtres
-

Dfinition : Un paramtre est une information qui est transmise du programme appelant au sousprogramme et du sous-programme au programme appelant.

Fonctionnement

35

Les paramtres valeurs


 Dfinition : Les paramtres transmis par valeur sont recopis dans des variables locales
du sous-programme.


Les paramtres variables


 Dfinition : La transmission des paramtres variables se fait par adresses


Gsaisie:
GvieuxX:
GvieuxA:
Gretour:
Gmaximum:
Gchaine:
Gtaille:

Fonctionnement
Si ces variables sont modifies au cours de lexcution du sous-programme,
cela naffecte en rien la valeur originale.
Pour passer des paramtres valeurs en assembleur, on peut placer les valeurs
dans les registres. Dans le mme sens, on peut transmettre le rsultat dune
fonction en plaant la valeur dans le registre A.
Downside : Acceptable que si le nombre de paramtres est trs restreint

.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE

GetChain: SUBSP
variables locales
STA
STX
LDA
LDX
LDA
STA
LDA
LDX
RET7

Fonctionnement
Une modification du paramtre dans le sous-programme modifie le paramtre
effectif
Mthode peu utilise en assembleur : Placer les adresses de tous les
paramtres effectifs dans une table et transmettre au sous-programme
ladresse de la table dans un registre
Mthode utilise : Utiliser la pile

0
1
3
5
7
9
11

;
;
;
;
;
;
;

Saisie de l'utilisateur
Sauvegarde du registre X
Sauvegarde du registre A
Adresse de retour
Taille maximale
Adresse du tableau
Longueur de la chane

5,i

; Alloue l'espace pour les

GvieuxA,s
GvieuxX,s
0,i
0,i
...
Gretour,s
Gmaximum,s
GvieuxA,s
GvieuxX,s

;
;
;
;

Sauvegarde
Sauvegarde
Initialise
Initialise

;
;
;
;
;

Adresse de retour...
...mise en bas de pile
Restaure le registre A
Restaure le registre X
Nettoyer la pile + retour

Espace
rserv
au dbut
du sousprog.
Empil
lappel

du registre A
du registre X
A
X

Gsaisie
GVieuxX
GVieuxA
Gretour
Gmaximum
Gchaine
Gtaille

SP

Empil
avant
lappel
SP

0
1
3
5
7
9
11

Gsaisie
GVieuxX
GVieuxA
Gretour
Gmaximum
Gchaine
Gtaille

FFF4
FFF5
FFF7
FFF9
FFFB
FFFD
FFFF

36

Assembleur : lments de base

Identificateurs
-

Maximum 8 caractres
Caractres alphanumriques
Termin par :

Constantes
-

Valeurs hexadcimales ou caractres


o Prcdes des deux caractres 0x ou 0X
o Exemple : 0xF4D
Constante caractre
o Un seul caractre plac entre deux apostrophes
o Exemple : T

Instructions et directives
-

Instruction
o Excutable
o Traduit lalgorithme
o Est finalement traduit en langage machine
o Effet au cours de la phase dexcution

Directive
o Non-excutable
o Destin au programme effectuant la traduction
o Nest pas traduit en langage machine
o Effet au cours de la phase dassemblage
o Nengendre pas dinstruction machine
o Fournit des indications dassemblage

Format des instructions


Note : Une instruction assembleur occupe gnralement une ligne

Champ tiquette
o Facultatif
o Sert donner un nom linstruction et qui pourra servir de repre
o Mme rgles que les identificateurs

Champ opration
o Indique lopration raliser
o Peut contenir une instruction ou une directive

Champ oprande
o Un ou deux champs spars par des virgules

37

Champ commentaire
o Facultatif
o Permet dinclure des commentaires explicatifs dans chaque instruction
o Dbute avec un point-virgule
o Tout ce qui suit un point virgule est un commentaire

Liste dassemblage
-

Dfinition : Liste de la traduction du code source en langage machine produit par lassembleur et
accompagne de la liste des instructions du programme source.

Fonctionnement
o La valeur du compteur ordinal de lassembleur indique une adresse relative
o Contient linstruction traduite en code machine hexadcimal
o Code objet des directives
 Peut tre absent dans le cas de .EQUATE, .WORD, .END
 Peut correspondre des constantes qui ne sont pas dcoupes en tranches de 1 ou 3
octets comme les instructions.

38

Assembleur : Directives
Directives qui engendrent une rservation de mmoire
-

.BLOCK
o
o
o
o

.BLOCK

nombre doctets

Rserve un bloc mmoire


Initialise le contenu 0
Maximum de 255 espaces mmoire
Possibilit dutiliser plusieurs instructions .BLOCK pour rserver plus de mmoire

.WORD
o Rserve un mot mmoire (2 blocs)
o Initialise le mot mmoire Valeur

.WORD

Valeur

.BYTE
o
o

.BYTE

valeur

Rserve un octet de mmoire (1 bloc)


Initialise loctet mmoire Valeur

.ASCII
o
o
o
o
o

.ASCII
"chaine"
Rserve un bloc mmoire de longueur variable (longueur de la chane)
Initialise le contenu partir dune chane de caractre
La chane doit se terminer par \x00
Possibilit dinsrer des caractres spciaux avec la barre oblique inverse (\)
On peut inclure tout code ASCII en utilisant son code de deux chiffres prcds de \x

.ADDRSS
.ADDRSS
table
o Rserve lespace dun mot de mmoire (2 blocs) et y place ladresse du symbole oprande.
o Dans lexemple, place ladresse correspondant au symbole table dans les deux octets
rservs.

Directives qui nengendrent pas de rservation de mmoire


-

.EQUATE
.EQUATE
o Dfini un symbole en le rendant quivalent une valeur numrique
o Souvent jumele une tiquette

.BURN
.BURN
o Initialise une nouvelle dfinition de la mmoire morte (ROM)
o Utilis dans le cas de modification du systme dexploitation

.END
o
o
o

.END
Signale la fin de lassemblage
Doit tre la dernire ligne du programme
Toute ligne qui suit la directive est un commentaire

valeur

39

Assembleur : Instructions
Instructions unaires simples
-

STOP (0000 0000)


STOP
o Arrt de lexcution du programme
o Retour au programme principal
RETTR (0000 0001)
RETTR
o Retour en fin de traitement dune interruption (return from trap)
o Le contexte du programme interrompu est rtabli
o Le programme interrompu reprend
MOVSPA (0000 0010)
MOVSPA
o Copie la valeur du pointeur de pile (stack pointer SP) dans le registre A
MOVFLGA (0000 0011)
MOVFLGA
o Copie la valeur des codes de condition NZVC dans le registre A
o Les 4 bits sont prcds de 12 bits nuls

Instructions de chargement et de rangement


-

LDr (1100 RAAA)


i, d, x, n, s, sf, sx, sxf
LDA
valeur,i
NZVC
o Charge le registre dune valeur occupant 16 bits, soit situe dans linstruction, soit situe en
mmoire

STr (1110 RAAA)


i, d, x, n, s, sf, sx, sxf
STX
o Place deux octets en mmoire partir du registre spcifi

LDBYTEr (1101 RAAA)


i, d, x, n, s, sf, sx, sxf
LDBYTEA
valeur,x
NZVC
o Charge la moiti du registre dune valeur de 8 bits, laquelle est soit situe dans linstruction, soit
situe dans la mmoire.
o La moiti gauche du registre demeure inchange

LDA
valeur,s
STBYTEr (1111 RAAA)
i, d, x, n, s, sf, sx, sxf
o Place un octet en mmoire partir de la moiti droite du registre spcifi

valeur,d

NZVC

NZVC

Instructions arithmtiques
-

ADDr (0111 RAAA)


i, d, x, n, s, sf, sx, sxf
ADDA
o Obtient loprande et ladditionne au contenu du registre

valeur,sf

NZVC

SUBr (1000 RAAA)


i, d, x, n, s, sf, sx, sxf
SUBX
o Obtient loprande et la soustrait au contenu du registre

valeur,sx

NZVC

NEGr (0001 100R)

i, d, x, n, s, sf, sx, sxf

NEGA

NZVC

40

o
o

Interprte le contenu du registre comme un entier en complment deux et en fait la ngation


V est modifi si la valeur originale est -32768 car il nexiste pas 32768 en complment deux sur
16 bits

ADDSP (0110 0AAA)


i, d, x, n, s, sf, sx, sxf
ADDSP
-4,i
o Ajoute une valeur au contenu du pointeur de pile
o Valeur positive : Le sommet de la pile est dplac vers le bas (Dpilage)
o Valeur ngative : Le sommet de la pile est dplac vers le haut (Empilage)

NZVC

SUBSP (0110 1AAA)


i, d, x, n, s, sf, sx, sxf
SUBSP
valeur,sxf
o Soustrait une valeur au contenu du pointeur de pile
o Valeur positive : Le sommet de la pile est dplac vers le haut (Empilage)
o Valeur ngative : Le sommet de la pile est dplac vers le bas (Dpilage)

NZVC

Instructions dentre-sortie
-

CHARI (0100 1AAA)


i, d, x, n, s, sf, sx, sxf
CHARI
o Lit un caractre en entre et le range dans un octet de mmoire
o Naffecte pas les registres

valeur,d

NZVC

CHARO (0101 0AAA)


i, d, x, n, s, sf, sx, sxf
o Affiche un caractre sur lorgane de sortie
o Naffecte pas les registres

valeur,x

NZVC

STRO (0100 0AAA)


i, d, x, n, s, sf, sx, sxf
STRO
o Affiche une chane de caractres sur lorgane de sortie
o Le dernier caractre sorti est le caractre null (0)
o Naffecte pas les registres
o Engendre une interruption au niveau de la machine

valeur,n

NZVC

DECI (0011 0AAA)


i, d, x, n, s, sf, sx, sxf
DECI
o Lit une valeur entire sur lorgane dentre
o Permet des espaces et sauts de lignes avant le dbut de la valeur
o La valeur doit dbuter par +, - ou seulement le chiffre dcimal
o Naffecte pas les registres
o Engendre une interruption au niveau de la machine

valeur,s

NZVC

DECO (0011 1AAA)


i, d, x, n, s, sf, sx, sxf
DECO
valeur,sx
o Affiche une valeur dcimale sur lorgane de sortie
o La valeur est prcde dun signe - sil est ngatif mais pas dun signe + sil est positif
o Le nombre est affich avec le minimum de caractres (Pas de 0 en tte)
o Naffecte pas les registres
o Engendre une interruption au niveau de la machine

CHARO

NZVC

41

Instructions logiques
-

NOTr (0001 000R)


i, d, x, n, s, sf, sx, sxf
NOTA
o Opration de ngation sur le contenu du registre, donc tous les bits sont inverss

NZVC

ANDr (1001 RAAA)


i, d, x, n, s, sf, sx, sxf
ANDX
valeur,sxf
o Opration ET logique bit bit sur les contenus du registre et de loprande
o Utile pour les masques

NZVC

ORr (1010 RAAA)


i, d, x, n, s, sf, sx, sxf
ORA
o Opration OU logique bit bit sur les contenus du registre et de loprande
o Utile pour insrer des bit 1 dans un mot mmoire

NZVC

ASLr (0001 110R)


i, d, x, n, s, sf, sx, sxf
ASLX
o Dcalage gauche dune position (ASL = Arithmetic Shift Left)
o Le bit de gauche qui sort du registre est plac dans le code de condition C
o Un bit 0 entre par la droite pour prendre la place du dernier bit
o V est affect lorsque la valeur du bit de signe ( gauche) change

NZVC

ASRr (0001 111R)


i, d, x, n, s, sf, sx, sxf
ASRA
o Dcalage droite dune position (ASR = Arithmetic Shift Right)
o Le bit de droite qui sort du registre est plac dans le code de condition C
o Le bit de signe est reproduit et prend la place du premier bit

NZVC

ROLr (0010 000R)


i, d, x, n, s, sf, sx, sxf
ROLX
NZVC
o Rotation cyclique gauche du contenu du registre (Rotation Left)
o Le bit de gauche qui sort du registre est plac dans le code de condition C et renvoy la fin du
registre

RORr (0010 001R)


i, d, x, n, s, sf, sx, sxf
RORA
NZVC
o Rotation cyclique droite du contenu du registre (Rotation Right)
o Le bit de droite qui sort du registre est plac dans le code de condition C et renvoy au dbut du
registre

CPr (1011 RAAA)


i, d, x, n, s, sf, sx, sxf
CPA
valeur,sx
NZVC
o Instruction de comparaison qui soustrait loprande de la valeur contenue dans le registre et
positionne les codes de conditions selon le rsultat obtenu
o Naffecte pas les registres

Instructions de branchement
-

BR (0000 010A)
i, d, x, n, s, sf, sx, sxf
BR
etiquette,i
NZVC
o Branchement inconditionnel
o Place ladresse qui se trouve dans sa partie oprande dans le compteur ordinal, forant ainsi la
prochaine instruction tre celle dont ladresse se trouve dans linstruction de branchement.

42

BRLE (0000 011A)


i, d, x, n, s, sf, sx, sxf
o Branchement Plus petit ou gal (Less Equal)
o Branchement si Z OU N valent 1

BRLE

etiquette,x

NZVC

i, d, x, n, s, sf, sx, sxf


BRLT (0000 100A)
o Branchement Plus petit que (Less Than)
o Branchement si N vaut 1

BRLT

etiquette,i

NZVC

i, d, x, n, s, sf, sx, sxf


BREQ (0000 101A)
o Branchement Est gal (Equal)
o Branchement si Z vaut 1

BREQ

etiquette,x

NZVC

i, d, x, n, s, sf, sx, sxf


BRNE (0000 110A)
o Branchement Nest pas gal (Not Equal)
o Branchement si Z vaut 0

BRNE

etiquette,i

NZVC

BRGE (0000 111A)


i, d, x, n, s, sf, sx, sxf
BRGE
o Branchement Plus grand ou gal (Greater or Equal)
o Branchement si N vaut 0

etiquette,x

NZVC

i, d, x, n, s, sf, sx, sxf


BRGT (0001 000A)
o Branchement Plus grand que (Greater Than)
o Branchement si Z ET N valent 0

BRGT

etiquette,i

NZVC

BRV (0001 001A)


i, d, x, n, s, sf, sx, sxf
o Branchement Dbordement (oVerflow)
o Branchement si V vaut 1

BRV

etiquette,x

NZVC

BRC (0001 010A)


i, d, x, n, s, sf, sx, sxf
o Branchement Retenue (Carry)
o Branchement si C vaut 1

BRC

etiquette,i

NZVC

Instructions lies aux sous-programmes


-

CALL (0001 011A)


i, d, x, n, s, sf, sx, sxf
CALL
sousprog,i
o Appel un sous-programme
o Empile la valeur du compteur ordinal, donc ladresse de retour
o Diminue le registre du pointeur de pile de 2
o Place loprande (adresse) de linstruction dans le compteur ordinal

NZVC

RETn (0101 1NNN)


i, d, x, n, s, sf, sx, sxf
RET0
o Dpile la pile de N octets
o n occupe 3 bits et peut donc prendre les valeurs comprises entre 0 et 7

NZVC

43

Donne au compteur ordinal la valeur du nouveau sommet de pile qui est alors dpile.

Instructions non-ralises
-

NOPn (0010 01NN)


i, d, x, n, s, sf, sx, sxf
NOP3
NZVC
o Engendre une interruption au niveau de la machine (No Operation)
o Par dfaut, elle ne fait rien
o Ses 4 valeurs possibles sont quatre nouvelles mnmoniques qui peuvent tre dfinis par lusager
o n occupe 2 bits et peut donc prendre les valeurs comprises entre 0 et 3

NOP (0010 1AAA)


i, d, x, n, s, sf, sx, sxf
NOP
etiquette,i
NZVC
o Engendre une interruption au niveau de la machine (No Operation)
o Par dfaut, elle ne fait rien
o Peut tre redfinie
o Peut tre utilise dans le traitement de linstruction qui est base sur un code dinstruction nonralis (???)

44

Documentation des programmes


Gnralit
-

Efficacit versus Clart : Autrefois, les programmes taient cris avec un souci defficacit. Aujourdhui,
tant donne la taille de certaines programmes, les soucis premiers sont la simplicit, la clart et la
fiabilit.

Rgle #1 : Documenter au fur et mesure de sa cration

Rgle #2 : Un programme est clair sil est bien structur et si sa structure correspond bien la solution
logique du problme.

Ordre des lments


o Commentaires explicatifs gnraux sur le programme
o Dclarations des constantes (.EQUATE)
o Code du programme principal
o Rservation de mmoire et variables globales
o Code des sous-programmes
o .END

Structures de base
-

Boucle WHILE
WHILEnn:

CPA
BRLT
BR

ENDWHInn:

UNTILnn:

ADDX
CPA
BRLT

#CODE#
4,i
Table,x
REPEATnn

; do {
;
commentaires dcals
;
; } while (Table[i] > Elt);

#CODE#
pas,d
ENDLPnn
#CODE#
LOOPnn
#CODE#

; while(true) { [1 sortie]
;
;
:> if (A > B) break;
;
commentaires dcals
; }
;

Boucle GNRALISE
LOOPnn:
SUBX
BRGT
BR
ENDLPnn:

; while (N1 >= N2) {


;
;
commentaires dcals
; }
;

Boucle REPEAT
REPEATnn:

N2,d
ENDWHInn
#CODE#
WHILEnn
#CODE#

Boucle FOR

45

FORnn:
FTESTnn:

LDX
CPX
BRGT

Ctr,d
Sup,d
ENDFORnn
#CODE#
2,i
FTESTnn
#CODE#

ADDX
BR
ENDFORnn:

Instruction conditionnelle IF
o Simple
IFnn:

CPr
BR--

oprande
ENDIFnn
#CODE#
#CODE#

CPr
BR--

oprande ; if (oprande [oprateur logique] oprande) {


ELSEnn
;
#CODE#
;
commentaires dcals
ENDIFnn
;
#CODE#
;
commentaires dcals
#CODE#
; }

THENnn:
ENDIFnn:

; if (oprande [oprateur logique] oprande) {


;
;
commentaires dcals
; }

Complte
IFnn:
THENnn:
BR
ELSEnn:
ENDIFnn:

; for (Ctr = Inf; Ctr <= Sup; Ctr++) {


;
;
;
commentaires dcals
;
le pas est gal 2
; }
;

Instruction conditionnelle SWITCH : Plus claire quun grand nombre de if imbriqus


SWITCHnn: CPr
BR-SUBX
ASLX
TABnn:
.ADDRSS
.ADDRSS
.ADDRSS
.ADDRSS
CASnn_1:
BR
CASnn_2:
BR
CASnn_3:
BR
CASnn_4:
BR
OTHERnn:
ENDCASnn:

oprande
OTHERnn
1,i
CASnn_1
CASnn_2
CASnn_3
CASnn_4
#CODE#
ENDCASnn
#CODE#
ENDCASnn
#CODE#
ENDCASnn
#CODE#
ENDCASnn
#CODE#
#CODE#

; switch (oprande) {
;
;
Format rel dans la mmoire (Dbute 0)
;
Format en PEP/8 : 1 mot mmoire = 2 octets
;
;
;
;
;
case 1:
;
break;
;
case 2:
;
break;
;
case 3:
;
break;
;
case 4:
;
break;
;
default:
; }

Guide dutilisation
-

Dfinition : Un guide dutilisation est une documentation contenue dans le programme

46

But : Permet un non-programmeur dutiliser adquatement le systme.

Fonctionnement

Le guide doit comprendre une description du format dentre des donnes du programme et des
rsultats produits

Le guide doit dcrire comme le programme traite les conditions anormales

La documentation externe
-

Dfinition : La documentation externe dcrit chaque module principal ainsi que la faon dont ceux-ci
communiquent pour former un systme complet.

La documentation interne
-

Dfinition : La documentation interne prend la forme de courts commentaires descriptifs qui


commencent au niveau o en est reste la documentation externe.

Fonctionnement

Il est important de placer des commentaires avant un ensemble dinstruction particulirement


complexe.

o
o

En assembleur, il est trs utile de mettre un commentaire pratiquement chaque ligne de code

Deux formes de commentaires

Les commentaires doivent indiquer le but de linstruction dans le contexte et non pas seulement
rpter le code



o

Descriptions en langage courant

Utiliser les outils appropris






o

Code qui reprsente des instructions structures de haut niveau

Espacements
Dcalages
Sauts de page
En-ttes dans des botes
tiquettes et identificateurs qui ont un sens

Pour un exemple complet dutilisation de la documentation interne, voir lAnnexe B

Commentaires ncessaires dans len-tte du programme


o Description
o Spcifications dutilisation : Comment fonctionne le programme et quest-ce qui peut gnrer
une erreur
o Auteur

Commentaires ncessaires dans len-tte dun sous- programme


o But : Que fais le sous-programme
o Antcdents : Comment doit tre format lentre

47

o
o
o
o
o

Fonctionnement : Comment opre le sous-programme


Appel : Quels sont les paramtres
Retour : Quelle est la valeur de retour
Erreurs possibles : Quest-ce qui peut gnrer une erreur
Auteur

48

Mise au point des programmes


Principes
-

Principe 1 : Le programme doit tre list et relu


Principe 2 : Le programme doit tre dcoup en parties qui remplissent chacune une fonction spcifique
Principe 3 : Il faut dterminer exactement la raison dune fin anormale de lexcution du programme
Principe 4 : Isoler lerreur
Principe 5 : Retracer ce qui sest pass partir de lerreur

Outils
-

Les messages derreur


o Code opration qui nexiste pas
o Excute une instruction privilgie alors quelle ne se trouve pas en mode superviseur mais en
mode utilisateur
o Rfrence une portion de mmoire protge
o Rfrence une position mmoire qui nexiste pas
o Erreurs de spcification
o Instruction de branchement qui conduit une adresse impaire
o Manipulation de donnes dcimales codes binaires
o Erreurs lies larithmtique
 Dbordement dentier
 Division entire par zro
 Quotient trop grand
 Dbordement dcimal
 Division dcimale par zro
 Dbordement de lexposant rel
 Division relle par zro
 etc.

Les vidanges de mmoire

Les traces

Les logiciels de mise au point : Communment appel debugger , le logiciel de mise au point permet
de placer des points darrt dans le code source, dexcuter le code pas pas, instruction par instruction,
dexaminer la valeur des registres et des variables, et darrter lexcution du programme en cas de
besoin.

49

Le systme dexploitation de PEP/8


Gnralits
-

Dfinition : PEP/8 peut adresser 65536 octets de mmoire (16 bits), ce qui veut dire que lorsquon ouvre
lmulateur PEP/8, son terrain de jeu est de 65536 octets dans la mmoire principale de lordinateur.
Parmi tous ces octets, 1073 (dpendamment de la version) sont rservs en permanence au systme
dexploitation de PEP/8.
Le systme dexploitation de PEP/8 en mmoire
0000

Application
Octets restants
Pile usager

FBCF

Pile du systme
128 octets

FC4F
FC57
FC9B
FFF8
FFFA
FFFC
FFFE

Tampon I/O

8 octets

Chargeur

68 octets

Traitement des
interruptions

861 octets

FBCF
FC4F
FC57
FC9B

2 octets
2 octets
2 octets
2 octets

Fonctionnement
o La rservation de mmoire pour le systme dexploitation seffectue dans la mmoire haute des
65536 octets disponibles ; cest--dire partir de FBCF jusqu FFFF.
o Une fonction importante du systme dexploitation est de grer les jobs que lutilisateur lui
soumet. Lorsque plusieurs jobs lui sont soumises, le systme dexploitation dcide laquelle
doit tre excute en priorit et charge le programme appropri dans la mmoire principale en
passant par la suite le contrle au CPU pour lexcution.

La pile systme et le tampon dentre-sortie


-

Elle dbute par la rservation de mmoire de la pile systme ainsi que du tampon dentre-sortie partir
des directives suivantes :

50

Les deux premires directives sont les constantes reprsentant les deux valeurs boolennes vrai/faux.
La directive osRAM rserve 128 octets de mmoire pour la pile du systme.
Les 6 directives suivantes rservent lespace mmoire du tampon dentre/sortie. Elles comprennent :
o Le tampon de saisie dun mot ainsi quun pointeur sur sa partie la moins significative
o Lespace de stockage temporaire de la saisie ainsi quun pointeur sur sa partie la moins
significative
o Le masque dadressage de linstruction. Elle permet de signaler les modes dadressages permis
pour linstruction excute.
La dernire directive, .BURN, signale que le code et les lignes suivantes sont assembls de telle manire
que la dernire instruction se terminer ladresse FFFF, cest--dire la plus haute adresse de mmoire.

Le chargeur (Loader)
-

Dfinition : Un loader a pour but de charger le code objet du programme dans la mmoire principale

Fonctionnement
o Le loader en PEP/8 est invoqu lorsque lon choisi loption Load into memory . Il se produit
alors :
 SP Mem[FFFA] (Le pointeur de pile est initialis sur le haut de la pile systme)
 PC Mem[FFFC] (Le program counter est initialis au dbut du chargeur)
o Le chargeur traduit le fichier du code objet pour le mettre en mmoire. Le code objet en PEP/8
est en hexadcimal, ce qui nest pas le cas des vrais codes objets qui eux sont dj sous forme
binaire et prts tre chargs.

Note : De faon gnrale, 90% du systme dexploitation est crit en langage de haut niveau tandis que
10% est crit en langage dassemblage parce que :
o Certaines parties du systme ne peuvent pas tre programmes avec les outils de haut niveau
o Un souci de performance est requis l o mme des compilateurs performants nexcellent pas

51

La fin dun programme


o Bien que le programme se termine par linstruction STOP, cela est rarement le cas dans les vrais
systmes dexploitation. Habituellement, une fois le programme termin, le contrle est remis au
systme dexploitation.
 Dans un ordinateur personnel, lOS attend la requte dun autre service
 Dans un terminal, lOS continue de traiter les processus des autres usagers
Ligne du temps de lusage du CPU quand le systme dexploitation charge et
excute une squence de jobs.

Chargeur

Job 1

Chargeur

Job 2

Chargeur

Temps

52

Systme dinterruption du processeur (Traps)


Gnralits
-

Dfinition : Linterruption est un mcanisme semblable un saut de sous-programme qui a pour but de
traiter des instructions dfinies par lutilisateur. Sous PEP/8, les interruptions sont utilises, entre autre,
pour effectuer les oprations dentre-sortie complexes (Donc pas CHARI et CHARO) tel :
o STRO (Affichage dune chane de caractres)
o DECI (Saisie dun nombre dcimal)
o DECO (Affichage dun nombre dcimal)
o NOPn (Opration non-ralise unaire)
o NOP (Opration non-ralise unaire)

Fonctionnement
o

o
o

o
o

Aprs lexcution de chaque instruction, une vrification est lance pour dterminer si une
condition dinterruption voulue sest produite. Cette vrification a lieu au cours du cycle de
lecture de la prochaine instruction.
 Il existe un registre dinterruptions dans le processeur qui comprend autant de bits quil
y a de conditions dinterruptions possibles. Ainsi, chaque condition externe ou interne
pouvant causer une interruption est relie un bit particulier du registre dinterruption.
 Lorsquune interruption se produit, le bit correspondant est positionn dans le registre
dinterruption et reste positionn tant quil nest pas modifi par le programme
utilisateur ou par le systme.
 Le contrle des interruptions se fait par programme au moyen du registre de masque
dinterruptions qui est rempli, soit par le programme utilisateur, soit par le systme.
 Un bit est positionn dans le masque pour chaque interruption que lon veut
reconnatre.
 Un registre auxiliaire reoit le produit logique du registre dinterruption et du masque
dinterruption.
 On balaye le registre auxiliaire de droite gauche, de gauche droite ou en suivant un
ordre de priorit donn
Ainsi, lorsque le CPU sous PEP/8 reoit les codes dopration de 001100 01000, il excute une
interruption.
Lorsquon trouve une interruption voulue, on transfre le contrle une adresse spciale
rserve par le systme dexploitation, indiquant ladresse du programme de traitement de
linterruption. Le code qui est alors excut sappelle la routine dinterruption (trap handler).
Le systme dexploitation retourne le contrle lapplication en excutant une instruction de
retour dinterruption (RETTR).
Pour quune interruption soit reconnue il faut en gnral que :
 Le registre de masque dinterruption indique bien linterruption
 Le systme dinterruption est activ
 Il existe des sous-programmes pour traiter linterruption

53

Le traitement dune interruption


-

Interruption simples
o Une interruption simple na pas de temps requis pour tre traite
o Le systme dinterruptions simples conserve divers donnes sur la pile systme avant de passer
le contrle au sous-programme de traitement de linterruption. Le systme dinterruption est
alors dsactiv jusqu ce que le programme reprend o il a t interrompu.
o Lorsque le sous-programme de traitement de linterruption est en cours dexcution, le systme
dinterruption nest donc pas actif ; une interruption se produisant alors doit attendre que le
systme soit de nouveau actif.

Interruptions temps rel


o Les interruptions temps rels doivent tre traites au plus tard quelques cycles dhorloges
aprs leur arrive
o Les sous-programmes de traitement des interruptions peuvent eux-mmes tre interrompus.
Pour raliser ce comportement, on associe un numro de priorit chaque type dinterruption.
Un sous-programme de traitement des interruptions en cours dexcution ne peut tre
interrompu que par une interruption ayant une priorit suprieure. Ainsi, une interruption
donne nest pas interrompue par une interruption de mme type.
o La priorit dune interruption est dtermine en fonction de lurgence du traitement effectuer.
o Afin dassurer que les interruptions de priorit leve puissent tre traites de faon adquate,
on les suites dinstructions excuter pour la traiter doivent tre courtes.
o Les interruptions multiples peuvent tre traites soit
 En associant une pile dinterruptions chaque type dinterruption
 En empilant les interruptions dans les organes qui les provoquent
o Pour un ordinateur fonctionnant en temps rel, les sous-programmes de traitement des
interruptions constituent le premier plan du systme dexploitation, qui permet de contrler en
temps rel le fonctionnement de dispositifs externes.

Exemple dinterruptions sur un processeur rel (MC68000)


-

Dfinition : Le processeur Motorola MC68000 possde des instructions qui interrompent lexcution
normale des instructions dun programme appels exceptions . Lunit centrale de traitement peut
galement interrompre lexcution du programme pour signaler des erreurs systme. Les priphriques
peuvent eux aussi interrompre lunit centrale de traitement en activant des lignes de contrle.

Les trois tats du processeur


o Normal : Excution squentielle des instructions du programme.
o Exception : Caus par larrive dune interruption et pendant lequel le programme de traitement
de linterruption est excut.
o Arrt : Caus par une interruption comme une erreur de bus ou une erreur dadresse

Le registre dtat

54

Registre de 16 bits dont loctet le moins significatif comprend les codes de condition X, N, Z, V et
C. Loctet le plus significatif utilise 5 bits pour dfinir le mode dexcutions des instructions, le
niveau dinterruption du systme ainsi que le mode de fonctionnement du processeur.

Mode dexcution
des instructions

o
o
-

15 14 13 12 11 10

I1

I0

Mode de
fonctionnement
du processeur

I2

Niveau
dinterruption

Le mode dexcution des instructions : Si le bit vaut 1, la squence dexcution est en


mode trace , ce qui signifie que les instructions sont excutes de faon squentielle
et quune interruption survient aprs chacune dentre-elles afin dexaminer les variables
du systme.

Le mode de fonctionnement du processeur


Si le bit vaut 1, on est en mode superviseur , ce qui donne accs toutes les
instructions, y compris celles qui modifient le registre dtat. Les sousprogrammes de traitement des interruptions fonctionnent en mode
superviseur .
Si le bit vaut 0, on est en mode utilisateur , ce qui ne donne accs qu un
ensemble dinstructions limit.

Le niveau dinterruption : Le niveau dinterruption permet de traiter les interruptions


selon un ordre de priorit.

Le registre dtat peut tre modifi par 4 instructions de rangement privilgies (en mode
superviseur).
Le registre dtat peut aussi tre lu par dautres instructions.

Les deux piles du processeur


o Dans le processeur Motorola MC68000, il existe deux piles, soit la pile utilisateur lorsquon est en
mode utilisateur et la pile systme lorsquon est en mode superviseur .

55

Le mcanisme
-

Lorsquune interruption survient, le CPU sauvegarde le contenu de tous les registres sur la pile systme :
o
o
o
o
o
o
o
o
o

Temp
Mem[Temp 1]
Mem[Temp 3]
Mem[Temp 5]
Mem[Temp 7]
Mem[Temp 9]
Mem[Temp 10]<47>
SP
PC

Mem[7FFA] ;
IR0..7 ;
SP ;
PC ;
X;
A;
NZVC ;
Temp 10 ;
Mem[FFFE] ;

Cette sauvegarde se trouve dans un bloc de la pile systme que lon nomme Process Control Block (PCB)

Conditions NZVC

Registre A

Registre A

Registre X

Registre X

Compteur PC

Compteur PC

SP utilisateur

SP utilisateur

Registre instruction

Stack Pointer de la
pile systme

Seulement la partie instruction du registre dinstruction est sauvegarde


Les codes de conditions sont sauvegards dans la partie moins significative de loctet tandis que la partie
la plus significative est indfinie.
Une fois les registres sauvegards, le pointeur de pile systme est ajust au nouveau sommet et la
prochaine instruction a excut pointe sur le sous-programme de gestion des interruptions (Trap Handler
subroutine). Dans lexemple ci-dessous, le compteur ordinal pointe sur 0xFFFE qui contient ladresse
0xFC9B.

56

CPU

PCB

CPU

PCB

NZVC

FC43

????

NZVC

FC43

????

FE22

FC45

??

FE22

FC45

?8

0000

FC46

????

0000

FC46

FE22

PC

002C

FC48

????

PC

FC9B

FC48

0000

SP

FBCF

FC4A

????

SP

FC45

FC4A

002C

IR

39 0003

FC4C

????

IR

39 0003

FC4C

FBCF

FC4E

??

FC4E

39

FC4F

????

FC4F

????

Avant linterruption

Aprs linterruption

Linstruction RETTR
-

Dfinition : Le mcanisme dinterruptions a pour consquence de suspendre temporairement un


processus pour que le systme dexploitation appel un service. Une fois le service appel et complt, le
systme dexploitation doit rendre le contrle du CPU au processus interrompu pour quil puisse terminer
son excution.

Fonctionnement
o Le systme dexploitation redonne le contrle au processus en excutant linstruction RETTR
(Return from trap). Il sensuite les oprations suivantes :





o
o

NZVC
A
X
PC
SP

Mem[SSP]<4..7> ;
Mem[SP + 1] ;
Mem[SP + 3] ;
Mem[SP + 5] ;
Mem[SP + 7]

Le registre dinstruction nest pas sorti du PCB parce que la prochaine instruction excuter est
celle spcifie par la nouvelle valeur du compteur ordinal.
Ainsi, tout changement que le sous-programme de gestion des interruptions effectue sur le PCB
est reflt dans les registres du processus une fois que celui-ci est repris.

57

Le traitement des interruptions : trap

Aprs le code du chargeur vient celui du traitement des interruptions.


Le code ne fait quappeler le sous-programme de traitement voulu, dpendamment si cest une
instruction unaire ou non.
Linstruction est rcupre sur la pile systme puis compare avec le premier code dopration dune
instruction non-unaire afin de dterminer le type dopration.
Si lopration est unaire, on masque linstruction pour obtenir les trois bits de droite quon multiplie
ensuite par deux pour obtenir un indice avec un saut de deux octets (puisquune adresse est dfinie sur 2
octets) et le code correspondant lopration unaire est excut puisquon continue lexcution
ladresse de la sous-routine.
Si lopration est non-unaire, on se dbarrasse du mode dadressage pour constitu, comme dans le cas
de lopration unaire, un indice avec un saut de deux octets qui permet par la suite dappeler la sousroutine correspondante linstruction.
Aprs lexcution du code correspondant lopration unaire ou non-unaire, on excute un RETTR (retour
dune interruption) qui a pour consquence de dpil la pile systme et donc de restaurer les codes de
condition, les registres A et X, le compteur ordinal et le pointeur de pile usager. Le registre dinstruction
nest pas restaur parce quil nest plus ncessaire.
Puisque le compteur ordinal pointe dj sur la prochaine instruction a excuter, celle-ci est utilise
comme telle par RETTR afin deffectuer le retour dinterruption.

58

Vrification du mode dadressage : assertAd

Comme diffrentes instructions ont des modes dadressage diffrents, le systme PEP 8 peut
automatiquement dtecter un mode dadressage interdit et une erreur dadressage.
Il faut noter que pour les instructions non implmentes, le systme de traitement des interruptions ne
fait quexcuter le code de traitement et il est ncessaire que ce code vrifie les modes dadressage qui
sont utiliss dans les nouvelles instructions.
La premire directive du code fait rfrence au registre dinstruction qui est empil sur la pile systme.
Cependant, 4 octets lui sont ajouts parce que deux appels des sous-programmes sont effectus avant
lappel de asserAd, ce qui a pour consquence daugmenter la pile de 2 octets chaque fois.
o Premier appel : Le sous-programme de traitement des interruptions
o Deuxime appel : Le sous-programme qui traite linterruption concern (opcodenn).
Les instructions suivantes ont deux buts :
o Dterminer le mode dadressage de loprande
 Le mode dadressage est contenu dans le registre X
 Un compteur est initialis 1 dans le registre A
 Le bit de A est dcal vers la gauche dautant de bits contenus dans X

59

Masque dadresse (addrMask) spcif dans les opcodenn

0
Immdiat (i)
Direct (d)
Indirect (n)
Direct sur la pile (s)
Indirect sur la pile (sf)
Index (x)
Index sur la pile (sx)

Indirect index sur la pile


(sxf)

Vrifier si ce mode dadressage est valide


 La valeur du registre A est compar avec la variable globale correspondant au masque
dadresse (addrMask) et initialis par le programme spcifique de traitement
dinterruption (opcodenn) avant lappel dassertAd.
 Sil ny a pas derreur, le contrle est redonn opcodenn, sinon un message derreur
est envoy sur lorgane de sortie par lentremise du sous-programme prntMsg.

60

Calcul de ladresse de loprande : setAddr

Le code qui suit la vrification du mode dadressage est celui du calcul de ladresse de loprande dune
instruction non-unaire. Celui-ci dbute avec 3 directives qui ont pour but de pointer sur le registre X, le
compteur ordinal et le pointeur de pile contenus dans la pile systme en y ajoutant bien sr 4 octets
puisque deux appels de sous-programmes sont effectus avant lexcution de ce code.
Les instructions qui suivent ont pour but de dterminer le mode dadressage de loprande en plaant le
registre dinstruction dans le registre X, en masquant les trois premiers bits qui correspondent au mode
dadressage et en multipliant le tout par 2 pour obtenir une adresse mmoire relative utilise dans le bloc
addrJT. Le mcanisme correspond donc un genre de SWITCH.
Ensuite chaque mode dadressage est calcul en obtenant la partie oprande du code dopration.
Puisque le compteur ordinal pointe sur la prochaine instruction excuter, il suffit de lui soustraire 2 afin
dobtenir ladresse de loprande de linstruction excute. Le rsultat final est ensuite rang dans la
variable globale opAddr

61

62

Traitement des instructions NOP : opcode24-28

Les sous-programmes de traitement spcifiques des interruptions unaires NOPn ne font rien ; ils peuvent
cependant permettre qui en a besoin de dfinir de nouvelles oprations. Cependant, comme ces 4
instructions nont pas doprandes, le traitement rel quelles peuvent faire est limit ; elles donnent
cependant la possibilit de dfinir 4 nouvelles instructions unaires.
Linstruction NOP nest quant elle pas unaire et a un oprande en mode dadressage immdiat. Le
traitement du systme dexploitation sassure que le mode dadressage est conforme la dfinition de
linstruction.

63

Traitement de linstruction DECI : opcode30

Le sous-programme de traitement spcifique linstruction DECI doit traiter un certain nombre de


possibilits, ce qui explique son code assez long. Par exemple :
o La valeur entire peut commencer avec un nombre quelconque despaces ou de fins de lignes
o La valeur entire peut commencer avec un signe plus ou moins ou un chiffre dcimal
o La valeur peut comprendre trop de chiffres et crer une valeur trop grande (dbordement)
La valeur est lue caractre par caractre et en fonction du caractre rencontr, compose le chiffre par
additions et multiplications.
La saisie se termine lorsque le premier caractre non-numrique est rencontr
Le sous-programme positionne galement les codes de condition lexception de la retenue

Code de haut niveau :


isOvfl = false ;
state = init ;
do {
CHARI asciiCh;
switch(state) {
case init:
if (asciiCh == '+') {
isNeg = false;
state = sign;
} else if (asciiCh == '-') {
isNeg = true;
state = sign;
} else if (asciiCh is a digit) {
isNeg = false;
total = Valeur de asciiCh;
state = digit
} else if (asciiCh != SPACE || asciiCh != RCFL) {
Exit with DECI error
}
break;

64

case sign:
if (asciiCh is a digit) {
total = Valeur de asciiCh;
state = digit;
} else {
Exit with DECI error
}
break;
case digit:
if (asciiCh is a digit) {
total = (10 * total) + Valeur de asciiCh;
if (overflow) {
isOvfl = true;
}
} else {
Exit normally;
}
break;
}
}
} while (not exit);

65

66

67

Traitement de linstruction DECO : opcode38

68

Le sous-programme de traitement de linstruction spcifique DECO a pour but dafficher au maximum 5


caractres numriques dans lorgane de sortie.
Si le caractre est ngatif, il affiche le signe '-' devant le nombre
Si le nombre comporte des zros de tte, ceux-ci ne sont pas affichs
Une fois les modes dadressages permis dtermins (addrMask) et celui utilis confirm (assertAd) et que
ladresse de loprande est calcul (setAddr), 6 octets de mmoire sont rservs sur la pile systme pour
les variables locales.
La valeur afficher est ensuite rcupre dans le registre A et on vrifie si elle est ngative. Dans le cas
chant, on affiche le signe '-', sinon on passe tout de suite laffichage.
Laffichage de la valeur se fait ensuite en cinq tapes qui se ressemblent, la seule diffrence que la
valeur de place change pour reflter la position du chiffre dans le nombre :
o On appelle le sous-programme divide qui soustrait la valeur range dans la variable place autant
de fois que possible en rangeant le quotient dans le registre X et le reste dans remain.
o Si la valeur du registre X est nulle, on vrifie si un chiffre a dj t affich en vrifiant la valeur
de chOut. Si cest le cas, on affiche le zro, sinon on ne laffiche pas.

69

Traitement de linstruction STRO : opcode40

Le sous-programme de traitement spcifique de linstruction STRO nest pas compliqu. Comme les autres
sous-programmes de traitements spcifiques, il dbute par identifier les modes dadressages permis
(addrMask), obtenir une confirmation que le mode dadressage de loprande fait bel et bien parti des
choix permis (assertAd) puis calcul ladresse effective de loprande (setAddr).
Une fois ladresse rcupre dans le registre A, il est mis sur la pile systme pour appeler le sousprogramme prntMsg.
Le sous-programme prntMsg a donc comme seul paramtre ladresse de la chane de caractres
afficher. Une boucle envoi ensuite chaque caractre sur lorgane de sortie jusqu temps que le caractre
NULL est rencontr.

70

Exemple de traitement dune instruction causant une interruption


000D

350048

DECI

vecteur,x

; cin >> vecteur[i] ;

1.

Lors du dcodage de linstruction, le processeur place le premier octet de linstruction dans le registre
dinstruction. Cet octet vaut 0x35, soit 00110101.

2.

00110 quivaut linstruction DECI, ce qui implique que son dcodage provoque une interruption.

3.

Le systme utilise le pointeur de pile systme dont la valeur se trouve ladresse 0xFFFA pour empiler 10
octets, comprenant les codes de conditions actuels (1 octet), les valeurs des registres A et X (4 octets), le
compteur ordinal (2 octets), le pointeur de pile utilisateur (2 octets) ainsi que la partie code dopration
du registre dinstruction (1 octet).

4.

Le systme place le contenu de ladresse 0xFFFE dans le compteur ordinal et poursuit lexcution. Cette
adresse pointe vers le sous-programme de traitement des interruptions (trap) situe ladresse FC9B et
qui a pour mandat de dterminer quel traitement spcifique excuter. Pour ce faire, le registre X est
initialis 0 et on y place ensuite le premier octet empile sur la pile systme, soit le registre dinstruction.

5.

Le registre X prend donc la valeur de 0x35, ce qui est suprieur 0x28, provoquant un branchement
nonUnary. On enlve ensuite de 0x35 les trois bits dadressage afin dobtenir que le code dopration qui
une fois multipli par 2 est utilis comme indice dans une table dadresses.

6.

En enlevant les trois bits dadressage par dcalages vers la droite, on obtient la valeur 0x06. On soustrait 5
de ce rsultat afin que la premire opration non-unaire ait la valeur 0 (instruction NOP). Le tout multipli
par deux pour obtenir un indice dadresse donne 0x02. En parcourant la table dadresses NonUnJT
lindice 0x02, on excute alors les instructions de ladresse opcode30.

7.

opcode30 est une tiquette qui pointe vers le sous-programme de traitement de linstruction DECI. A
partir de l, les instructions se droulent comme mentionns plus haut.

71

Les circuits logiques


Lalgbre de Boole
-

Dfinition : Lalgbre de Boole, du nom du mathmaticien George Boole (1815-1864), comprend un


ensemble dlments, un ensemble de fonctions et un ensemble de lois de base, appeles axiomes, qui
dfinissent les proprits des lments et des fonctions.

But : Lalgbre de Boole permet de modliser les circuits logiques des dispositifs lectroniques.

Fonctionnement
o Les variables dans une algbre de Boole peuvent prendre deux valeurs, soit 0 et 1, ce qui
n
implique que n variables peuvent avoir 2 permutations.
o Dans lalgbre de Boole, il nexiste que trois oprations
 OU logique (+)
 ET logique (* ou concatnation)
 NON logique (')

Axiome I ou la proprit de fermeture : Le rsultat de toute opration boolenne, applique des


variables boolennes, produit un rsultat boolen.

Identits de base
Identit
Domination
Idempotence
Loi de la double ngation
Complment
Commutativit
Associativit
Distributivit
Lois de DeMorgan

Thormes de base

Cette loi nest pas valide en algbre conventionnelle !

A*1=A
A+0=A
A*0=0
A+1=1
A*A=A
A+A=A
(A')' = A
A * A' = 0
A + A' = 1
A*B=B*A
A+B=B+A
(A * B) * C = A * (B * C)
A * (B + C) = (A * B) + (A * C)
A + (B * C) = (A + B) * (A + C)1
(A * B)' = A' + B'
(A + B)' = A' * B'

72

Thorme 1
Thorme 2
Thorme 3
Thorme 4
Thorme 5
Thorme 6

A + AB = A
A(A' + B) = AB
A(A + B) = A
(A + B)(A + B') + A
AB + A'C + BC = AB + A'C
(A + B)(A' + C)(B + C) = (A + B)(A' + C)

* Note : Toutes les variables dans un thorme peuvent tre remplaces par
dautres variables ou expressions. Exemple : A + AB = A  X' + X'Z = X'
-

La fonction OU exclusif (XOR)


o Dfinition : Donne un rsultat vrai si les deux oprandes ont une valeur diffrente et faux dans
les autres cas.
o Oprateur : (+)
o Caractristiques
 Cette fonction est associative
 Elle agit comme inverseur : Si une entre une porte OU exclusif est connecte un 1
logique, alors lautre entre apparat la sortie comme son complment.
 On obtient une porte NAND lorsquon la connecte la sortie dune porte ET.
o quivalence
 AB' + A'B
 (A + B) * (A' + B')

La fonction NOR
o Dfinition : Donne un rsultat vrai si et seulement si les deux oprandes sont fausses.
o Oprateur : NOR
o Caractristique : Plus rapide et moins coteuse que la porte OR parce quelle peut tre fabrique
avec un nombre rduit de composants.
o quivalence
 (A + B)'
 A' * B'

73

La fonction NAND
o Dfinition : Donne un rsultat vrai si les deux oprandes ne sont pas tous les deux vrais et faux
dans le cas chant.
o Oprateur : NAND
o Caractristique : Plus rapide et moins coteuse que la porte AND parce quelle peut tre
fabrique avec un nombre rduit de composants.
o quivalence
 (AB)'
 A' + B'

Tables de vrit de base


A

ET

OU

NON(A)

XOR

NOR

NAND

0
0
1
1

0
1
0
1

0
0
0
1

0
1
1
1

1
1
0
0

0
1
1
0

1
0
0
0

1
1
1
0

Les portes logiques


-

Dfinition : Les portes logiques sont les lments de base des circuits lectroniques. Chaque type de
porte ralise une opration boolenne particulire.

Types de portes

74

Les portes fonctionnellement compltes


o Dfinition : Une porte fonctionnellement complte permet dmuler toute autre porte se basant
sur lalgbre de Boole. Il se peut aussi quun groupe de portes soient fonctionnellement
complets.
o

Portes seules
 NAND

NOR

Groupes de portes (Voir les quivalences de XOR, NOR et NAND)


 AND, OR et NOT
 AND et NOT
 AND et XOR

Les circuits combinatoires


-

Dfinition : Les circuits combinatoires sont des circuits dont la sortie ne dpend que de lentre ; ils nont
donc pas de mmoire. Ces circuits permettent de raliser les fonctions essentielles de lordinateur.

75

Le multiplexeur
o Dfinition : Un multiplexeur est un dispositif qui slectionne une donne dentre parmi toutes
les donnes quil reoit en parallle.
o

Reprsentation conceptuelle :
D0
D1

8 entres

D2
D3

Sortie

D4
D5
D6
D7
S0 S1 S2
3 bits de slection

Fonctionnement : Les trois bits de slection dterminent laquelle des entres est passe la
sortie du multiplexer

Le dmultiplexeur
o Dfinition : Un dmultiplexeur effectue la fonction inverse du multiplexeur ; cest--dire quil
n
effectue la conversion dun code binaire de n bits en lune des 2 sorties possibles.
o

Reprsentation conceptuelle :
D0
D1
S0

D2

S1

D3

S2

D4
D5
D6
D7
Blocage

76

Le dcodeur
o Dfinition : Un dcodeur est un dispositif qui accepte en entre un code binaire et qui produit
une sortie gale 1 sur une des lignes de sortie et 0 sur les autres. Un dcodeur est donc un
dmultiplexeur.
o

Table de vrit
S0

S1

S2

D0

D1

D2

D3

D4

D5

D6

D7

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
0
0
0
0
0
0

0
1
0
0
0
0
0
0

0
0
1
0
0
0
0
0

0
0
0
1
0
0
0
0

0
0
0
0
1
0
0
0

0
0
0
0
0
1
0
0

0
0
0
0
0
0
1
0

0
0
0
0
0
0
0
1

Demi-additionneur
o Dfinition : Un demi-additionneur est un circuit qui permet dadditionner deux variables de 1 bit.
La sortie est compose de 2 bits : un pour la somme et un pour la retenue.
o

Table de vrit
A

Somme

Reste

0
0
1
1

0
1
0
1

0
1
1
0

0
0
0
1

Formules
 Somme = A'B + AB' ou A XOR B
 Reste = AB

Circuits

Reprsentation conceptuelle

77

Entre A

Somme

Entre B

CO

Retenue

Additionneur complet
o Dfinition : Un additionneur complet est un circuit qui additionne deux bits et une retenue
dentre pour obtenir, comme dans le cas du demi-additionneur, deux bits en sortie, la somme et
la retenue.
o

Table de vrit
A

Retenue dentre

Somme

Retenue

0
0
0
0
1
1
1
1

0
1
0
1
0
1
0
1

0
1
0
1
0
1
0
1

0
1
1
0
1
0
0
1

0
0
0
1
0
1
1
1

Formules : Il est possible de composer un additionneur complet laide de deux demiadditionneurs.

Reprsentation conceptuelle

Retenue
prcdente
Entre A

Entre B

Somme

Retenue

Lhorloge
-

Dfinition : Dans un ordinateur, il existe de nombreux dispositifs qui changent dtats constamment. Afin
de les contrler pour permettre un fonctionnement ordonn, lordinateur comprend une horloge ; ce qui
oblige les dispositifs changer dtat en mme temps. Ils deviennent donc synchroniser aux pulsions de
lhorloge.

78

Les circuits squentiels


-

Dfinition : Les circuits combinatoires sont des circuits dont la sortie courante dpend non seulement de
lentre courante mais aussi de lhistorique des entres passes. On dit gnralement que la sortie
courante dun circuit squentiel dpend de lentre courante et de ltat courant de ce circuit.

La bascule S-R
o

Dfinition : La bascule (flip flop) S-R est un dispositif bistable qui sapparente un bit de mmoire
et qui possde eux sorties qui sont toujours le complment de lautre.

Fonctionnement
 Ltat du circuit reste stable tant que S et R restent nuls
 Fonctionne comme une mmoire de 1 bit, cest--dire que la sortie Q est la valeur du bit
et que les entres servent crire la valeur en mmoire.
 Si lentre Set (S) est mise 1, la porte NOR infrieure reoit les valeurs 0 et 1, ce qui
donne une sortie Q' de 0. Reset (R) tant 0, la porte NOR suprieure reoit les valeurs
0 et 0, ce qui donne une sortie Q de 1. A partir de cet instant, les deux portes NOR
reoivent toujours les mmes valeurs, ce qui assure la stabilit du systme. Mme si Set
(S) change de valeur, la stabilit du systme est maintenue.
 Si lentre Reset (R) est mise 1, elle effectue la fonction inverse de Set (S), cest--dire
quelle force Q 0 et Q' 1, quel que soit ltat prcdent.

Caractristiques
 La bascule S-R est ralise au moyen de deux portes NOR avec feedback
 Lopration de la bascule est asynchrone, cest--dire que la sortie ne change que
lorsque lentre change.
 Lentre S(1) et R(1) donne un rsultat indfini pour nimporte quelle valeur de Q

Table caractristique

Set(t)

Reset(t)

Q(t)

Q(t + 1)

Condition

0
0
0
0
1
1
1
1

0
1
0
1
0
1
0
1

0
1
0
1
0
1
0
1

0
1
0
0
1
1
-

Stable
Stable
Reset
Reset
Set
Set
Non-dfini
Non-dfini

Circuits

Les circuits squentiels nont pas une table de vrit comme les circuits combinatoires ; la place ils ont une table de caractristique qui
spcifie ltat du dispositif aprs une pulsion dhorloge. La table peut se lire Si Set est x, que Reset est y et que Q est z, Q(t+ 1) sera

79

Non-synchronis

Synchronis

Diagramme temporel

Bascule D
o Dfinition : Puisque lentre S(1) et R(1) donne un rsultat indfini pour nimporte quelle valeur
de Q, il faut lvite. Pour se faire, on rduit les entres une seule et on obtient de ce fait une
Bascule D pour data ou delay.
o

Fonctionnement
 La bascule D fournit la mmoire pour un bit de donnes (data)
 La bascule retarde lapplication de lentre la prochaine pulsion dhorloge (delay)
 La sortie de la bascule D est toujours gale la plus rcente valeur envoye en entre.

Table caractristique
D(t)

Horloge(t)

Q(t)

Q(t + 1)

Condition

0
0

0
0

0
1

0
1

Stable
Stable

80

0
0
1
1
1
1
o

1
1
0
0
1
1

0
1
0
1
0
1

Reset
Reset
Stable
Stable
Set
Set

Circuit

Bascule J-K
o Dfinition : La bascule J-K possde aussi deux entres mais na pas de combinaison dentres
invalides.
o

Table caractristique

J
0
0
1
1
o

0
0
0
1
1
1

K
0
1
0
1

Q(t + 1)
Q(t)
0
1
(t)'

Circuit

Registres
o Dfinition : Un registre est un circuit numrique de lunit centrale de traitement qui
emmagasine un certain nombre de bits.

81

Le registre parallle
 Dfinition : Le registre parallle est un ensemble de mmoires de 1 bit que lon peut
accder en lecture ou en criture simultanment.


But : Le but du registre parallle est de conserver des donnes

Fonctionnement
Le registre parallle est ralis laide de diffrentes bascules

Le registre de dcalage
 Dfinition : Le registre de dcalage accepte ou transfert de linformation de faon
srielle.


But : Les registres de dcalage peuvent servir dinterface vers les dispositifs dentresortie sriels et galement pour effectuer les dcalages logiques, arithmtiques ou
cycliques des registres. Les registres de dcalages sont aussi utiliss pour convertir un
mot parallle de n bits en un mot srie de n bits conscutifs.

Fonctionnement
Le registre de dcalage est ralis au moyen de bascules D
Les donnes entrent gauche et, chaque pulsion dhorloge, sont dcales
dune position vers la droite, le dernier bit droite tant transfr lextrieur.

La table de Karnaugh
-

Dfinition : La table de Karnaugh est une mthode dveloppe par Maurice Karnaugh (1924),
mathmaticien amricain, pour simplifier des expressions boolennes.

But : La table de Karnaugh permet de simplifier des expressions boolennes plusieurs variables. Ainsi,
cest un moyen commode de reprsenter une fonction boolenne de 3, 4, 5 ou 6 variables.
Fonctionnement
n
o La table est un tableau de 2 carrs qui reprsentent les combinaisons possibles des valeurs de n
variables.
o Les combinaisons disposes dans la table ont cependant une contrainte : Ils doivent diffrs dun
seul bit avec leurs voisines.

82

2 variables
a'b + ab

3 variables
a'b'c + ab'c + abc

a'b' a'b ab ab'

b'c' b'c bc bc'

01

11

10

00

a a'

00

0
1

01

11

1
1

1
c

10

a
b

4 variables
a'bc'd + a'bcd + abc'c'd' + ab'cd'

ab' ab a'b a'b'

c'd' c'd cd cd'

00

01

11

1
1

10

00
01
11
10

Disposition gnrale avec 4 variables

b
a

c
o
o

o
o

On reporte tous les termes dans une table de Karnaugh en plaant des 1 dans les cases
correspondant aux lments, comme montr plus haut.
On essai ensuite de regrouper les valeurs 1 voisines puisquils ne diffrent que de 1 bit. Lorsque
lon fait des groupements, on tente de :
 Faire les plus grands groupements possibles
 Faire le moins de groupements possible
 Faire des groupements qui peuvent avoir la taille 1, 2, 4, 8 ou 16.
On limine ensuite de ces groupements les variables qui diffrent.
Puisque toute valeur dans la table de Karnaugh ne diffre que dun bit, les cases extrmes de la
table sont voisines
 La premire range est voisine de la dernire range
 La premire colonne est voisine de la dernire colonne

83

1
1

1
1
1

1
1

1
1
1

1
1

1
1

1
1

1
1

1
1
1

1
1
1

1
1

1
1

1
1

1
-

1
1

1
1

Convertir une somme de produits en un produit de sommes


o Placer les termes dans une table de Karnaugh
o Inverser tous les bits 1 en bits 0 et tous les bits 0 en bits 1, ce qui revient utiliser les lois de De
Morgan
o On procde ensuite la simplification par regroupements
o On reconverti pour obtenir le produit de sommes
F = abc + c'd + a'bd
c

1
1
1
1

1
1

F' = a'b'c' + cd' + ab'd'


c

b
a

1
1
1
1

1
1

F' = c'd' + b'c + a'd'

d
F = (c'd' + b'c + a'd')' = (c + d)(b + c')(a + d)

Les conditions neutres : Dans certains circuits, il existe certaines combinaisons de valeurs dentres qui ne
peuvent se produire. Dans ces cas, la sortie peut tre vrai ou fausse puisque sa valeur ne nous intresse
pas. Cependant, en groupe les termines dune table avec ces conditions neutres, il est possible dobtenir
des plus grands groupements.

La mthode Quine-McCluskey
-

Dfinition : Quine-McCluskey est une procdure pour simplifier les sommes de produits.

http://en.wikipedia.org/wiki/Quine-McCluskey_algorithm

84

But : Contrairement la table de Karnaugh, la mthode Quine-McCluskey peut traiter aisment plusieurs
4
variables et elle a le grand avantage de pouvoir tre programme .

Fonctionnement
o Exemple : f = abcd' + ab'cd + ab'cd' + a'bcd + a'bc'd + a'b'cd + a'b'c'd
o

Partie 1 : Dterminer quels termes sont candidats tre inclus dans une somme de produits
minimale.


A. Transformer chaque terme en n variables de lexpression en une valeur binaire, 0


reprsentant un complment et 1 la variable.

Termes

Chanes binaires

abcd'
ab'cd
ab'cd'
a'bcd
a'bc'd
a'b'cd
a'b'c'd

1110
1011
1010
0111
0101
0011
0001

1
2
3
4
5
6
7

B. Grouper les chanes de bits selon le nombre de bits 1 quelles contiennent

7
3
5
6
1
2
4

Termes

Chanes binaires

# de bits 1

a'b'c'd
ab'cd'
a'bc'd
a'b'cd
abcd'
ab'cd
a'bcd

0001
1010
0101
0011
1110
1011
0111

1
2
2
2
3
3
3

C. Dterminer tous les produits en n-1 variables que lon peut former en effectuant la
somme boolenne des termes de lexpansion. Les termes que lon peut combiner ont
des chanes de bits qui diffrent exactement en une position. Les bits diffrents sont
remplacs par un tiret dans le nouveau terme.

http://cheeseshop.python.org/pypi/qm/0.1

85

Combinaison

Produits

Rsultat

Chane binaire

1 et 3
2 et 3
2 et 6
4 et 5
4 et 6
5 et 7
6 et 7

(abcd')( ab'cd')
(ab'cd)( ab'cd')
(ab'cd)( a'b'cd)
(a'bcd)( a'bc'd)
(a'bcd)( a'b'cd)
(a'bc'd)(a'b'c'd)
(a'b'cd)( a'b'c'd)

acd'
ab'c
b'cd
a'bd
a'cd
a'c'd
a'b'd

1-10
101-011
01-1
0-11
0-01
00-1

C. Dterminer tous les produits en n-2 variables que lon peut former en effectuant la
somme boolenne des produits de n-1 variables obtenus ltape prcdente. Les
produits que lon peut combiner possdent un tiret dans la mme position et diffrent
exactement en une position.

Nouvelle combinaison

Produits

Rsultat

Chane binaire

(4, 5, 6 et 7)

(a'cd)(a'c'd)

a'd

0--1

On rpte cette tape, qui est similaire la prcdente, tant de fois que possible.
o

Partie 2 : Dterminer quels termes font finalement tre retenus




A. Trouver tous les produits boolens forms qui nont pas t utiliss pour former un
nouveau produit boolen.

Combinaison

Produits

Rsultat

Chane binaire

1 et 3
2 et 3
2 et 6
(4, 5, 6 et 7)

(abcd')( ab'cd')
(ab'cd)( ab'cd')
(ab'cd)( a'b'cd)
(a'cd)(a'c'd)

acd'
ab'c
b'cd
a'd

1-10
101-011
0--1

B. Trouver le plus petit ensemble de ces produits boolens, de sorte que la somme de
ces produits reprsente la fonction boolenne. On y arrive en formant une table qui
montre quels termes sont couverts par quels produits ; tous les termes doivent tre
couverts par un produit.

abcd'
acd'
ab'c
b'cd
a'd
o

Solutions

ab'cd

X
X
X

ab'cd'

a'bcd

a'bc'd

a'b'cd

a'b'c'd

X
X

X
X

86




a'd + acd' + ab'c


a'd + acd' + b'cd

87

Annexe A : Glossaire
1.

Axiome : Un axiome est une rgle fondamentale que lon doit tenir pour acquis.

2.

Bit : unit fondamentale dinformation traite par un ordinateur

3.

Dbordement : Action qui se produit lorsque le rsultat est plus grand que la valeur maximum que peut
contenir loprande.

4.

Interruption : Demande de service lUCT venant dun priphrique. Passe par le bus de contrle.

5.

Mot de mmoire : Unit fondamentale dinformation que peut traiter un ordinateur et unit de base des
zones de longueur fixe. Sous PEP/8, un mot regroupe 2 octets.

6.

Pile : Bloc de mmoire allou spcifiquement par le systme dexploitation et utilis par les logiciels. Au
niveau de la programmation en assembleur, la pile est utilise essentiellement pour grer les appels des
sous-programmes et aussi pour lallocation de mmoire aux sous-programmes.

7.

Process Control Block (PCB) : Le bloc mmoire qui contient une copie des registres dun processus
interrompu.

8.

Processus : Un programme en cours dexcution.

88

Annexe B : Exemple dune documentation interne


;+-| TP2 - AFFICHAGE DE GROS CARACTRES PARTIR D'UNE CHAINE |--+
;|
|
;| ::: Description : Saisi une chane de caractres puis :
|
;|
- Affiche chacun des caractres en dessous de l'autre
|
;|
- Affiche chaque caractre en grand format grce une
|
;|
matrice
|
;|
|
;| ::: Spcifications d'utilisation
|
;|
- La matrice couvre les lettres majuscules et minuscules. |
;|
Tout autre caractre ASCII peut tre saisi mais affiche |
;|
un gros caractre vide.
|
;|
- L'utilisation du logiciel peut se faire en mode Terminal |
;|
et en mode Batch. Si utilis en mode Batch, il faut
|
;|
ajouter un saut de ligne aprs la saisie, sinon des
|
;|
gros caractres de saut de ligne (Matrice 52) viendront |
;|
terminer l'affichage.
|
;|
- La chane de caractres est limite 80 caractres. Il |
;|
est possible de saisir autant de caractres que dsir
|
;|
mais la saisie sera, en dfinitive, tronque.
|
;|
|
;| ::: Auteur
|
;|
- Nom : Jodi Giordano
|
;|
- Matricule : GIOJ01028400
|
;|
- Cours : INF2170
|
;|
- Groupe : 20
|
;|
- E-mail : giordano.jodi@courrier.uqam.ca
|
;|
- Dernire modification : 20 mars 2007
|
;+---------------------------------------------------------------+
;+---------------------------------------------------------------+
;| ::: Constantes
|
;+---------------------------------------------------------------+
CHAINMAX: .EQUATE
RCFL:
.EQUATE

80
0xA

; Longueur maximale permise pour la chane de caractres


; Saut de ligne et retour de chariot

;+---------------------------------------------------------------+
;| ::: Programme principal
|
;+---------------------------------------------------------------+

Boucle1:

STRO
LDA
STA
LDA
STA
SUBSP
CALL
ADDSP
LDA
STA
CHARO
LDX
CPX
BREQ
LDBYTEA
STBYTEA
LDA
STA
SUBSP
CALL
LDA
STA
LDBYTEA
STBYTEA

msgSaisi,d
chaine,i
-4,s
CHAINMAX,i
-6,s
6,i
GetChain
2,i
0,s
nbChars,d
RCFL,i
0,i
nbChars,d
FinBouc1
chaine,x
-4,s
maj,i
-6,s
6,i
GetIndex
0,s
-2,s
chaine,x
-3,s

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

cout >> "Veuillez saisir une chane de caractres :"


param : Adresse de la chane
param : Taille maximale de la chane
>>> Saisie une chane de caractres
>>> Nombre de caractres =
GetChain(Adresse Chane, Taille maximale);
Saut de ligne aprs la saisie
while (indice <= nombre de caractres) {
param : Caractre
param : Adresse de la matrice des gros caractres
>>> Adresse du caractre dans la matrice =
GetIndex(Caractre, Adresse de la matrice)
param : Adresse du caractre dans la matrice
param : Caractre

89

SUBSP
CALL
CHARO
ADDX
BR
FinBouc1: STRO
STOP

3,i
AffGros
RCFL,i
1,i
Boucle1
msgFin,d

;
;
>>> Afficher un gros caractre
;
Saut de ligne entre chaque caractre
;
indice++;
; }
;
; cout >> "Fin du programme."

;+-------------------------------------------------------+
;| ::: Variables
|
;+-------------------------------------------------------+
chaine:
nbChars:

.BLOCK
.WORD

msgSaisi: .ASCII
msgEssai: .ASCII
msgFin:
.ASCII

81
0

; Chane de caractres saisie par l'usager


; Nombre de caractres saisis

"Veuillez saisir une chane de caractres (Return pour terminer) : \x00"


"\n\nTest du rsultat : \x00"
"Fin du programme.\x00"

;+-------------------------------------------------------+
;| ::: Matrice de caractres
|
;+-------------------------------------------------------+
maj:
vide:

.BYTE
(etc)
.BLOCK

0x18

; majuscules A

10

; espace

;+-------------------------| GetChain |--------------------------+


;| ::: But : Saisie une chane de caractres
|
;|
|
;| ::: Fonctionnement
|
;|
- Saisie caractre par caractre
|
;|
- Range chacun des caractres dans un tableau prdfini
|
;|
dont l'adresse se trouve sur la pile (1 mot).
|
;|
- Le nombre de caractres maximal pour la saisie se
|
;|
trouve aussi sur la pile (1 mot).
|
;|
|
;| ::: Appel
|
;|
- Rserver l'espace ncessaire pour le rsultat
|
;|
(longueur de la chane)
|
;|
- Empiler l'adresse de la chane (tableau)
|
;|
- Empiler la longueur maximale permise pour la saisie de |
;|
la chane.
|
;|
|
;| ::: Retour
|
;|
- 1. Adresse de la chane (1 mot)
|
;|
- 2. Longueur de la chane (1 mot)
|
;|
|
;| ::: Erreurs possibles
|
;|
- En mode Batch, si la chane ne se termine pas par un
|
;|
saut de ligne (0xA), l'algorithme continue de saisir
|
;|
des caractres null jusqu' ce qu'il atteigne la limite |
;|
permise.
|
;|
- Si la chane saisie dpasse la limite permise, celle-ci |
;|
est tronque.
|
;|
- Il est possible de ne saisir aucun caractres.
|
;|
|
;| ::: Auteur
|
;|
- Nom : Jodi Giordano
|
;|
- Matricule : GIOJ01028400
|
;|
- Cours : INF2170
|
;|
- Groupe : 20
|
;|
- E-mail : giordano.jodi@courrier.uqam.ca
|
;|
- Dernire modification : 20 mars 2007
|
;|
|
;| ::: Note : Utilise un algorithme qui se trouve en pages
|

90

;|
129-130 des notes de cours de Philippe Gabrini
|
;+---------------------------------------------------------------+
Gsaisie:
GvieuxX:
GvieuxA:
Gretour:
Gmaximum:
Gchaine:
Gtaille:

.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE

0
1
3
5
7
9
11

;
;
;
;
;
;
;

Saisie de l'utilisateur, caractre par caractre


Sauvegarde du registre X
Sauvegarde du registre A
Adresse de retour
Taille maximale de la chane de caractres
Adresse du tableau contenant la chane de caractres
Longueur de la chane

GetChain: SUBSP
STA
STX
LDA
LDX

5,i
GvieuxA,s
GvieuxX,s
0,i
0,i

;
;
;
;
;

Alloue l'espace pour les variables locales


Sauvegarde du registre A
Sauvegarde du registre X
Initialise la saisie
Initialise le compteur de caractres

Boucle2:

Gsaisie,s
Gsaisie,s
0xA,i
FinBouc2
Gchaine,sxf
1,i
Gmaximum,s
Boucle2

; while (true) { [2 sorties]


;
cin << caractre;
;
if (caractre == fin de ligne) break;
;
;
Adresse Chane[indice] = caractre;
;
indice++;
;
if (indice > Taille maximale) break;
; }

Gtaille,s
Gretour,s
Gmaximum,s
GvieuxA,s
GvieuxX,s

;
;
;
;
;
;

CHARI
LDBYTEA
CPA
BREQ
STBYTEA
ADDX
CPX
BRLT

FinBouc2: STX
LDA
STA
LDA
LDX
RET7

Nombre de caractres lus


Adresse de retour...
...mise en bas de pile, avant les retours
Restaure le registre A
Restaure le registre X
Nettoyer la pile et retour

;+-------------------------| AffGros |---------------------------+


;| ::: But : Affiche un gros caractre dans l'organe de sortie
|
;|
|
;| ::: Antcdents
|
;|
- Suppose que chaque caractre dans la matrice est
|
;|
dfini sur 10 octets.
|
;|
|
;| ::: Fonctionnement
|
;|
- Affiche la matrice du caractre, bit par bit
|
;|
- Si le bit est 1 : Affiche le caractre en paramtre.
|
;|
- Si le bit est 0 : Affiche un caractre d'espacement.
|
;|
|
;| ::: Appel
|
;|
- Empiler le caractre
|
;|
- Empiler l'adresse de la matrice correspondant au
|
;|
caractre.
|
;|
|
;| ::: Retour : Aucun
|
;|
|
;| ::: Auteur
|
;|
- Nom : Jodi Giordano
|
;|
- Matricule : GIOJ01028400
|
;|
- Cours : INF2170
|
;|
- Groupe : 20
|
;|
- E-mail : giordano.jodi@courrier.uqam.ca
|
;|
- Dernire modification : 20 mars 2007
|
;+---------------------------------------------------------------+
Aligne:
AvieuxX:
AvieuxA:
Aretour:
Achar:
Amatrice:

.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE
.EQUATE

0
2
4
6
8
9

;
;
;
;
;
;

Compteur pour chaque ligne du gros caractre


Sauvegarde du registre X
Sauvegarde du registre A
Adresse de retour
Un caractre
Adresse de la matrice correspondant au caractre

91

AffGros:

SUBSP
STA
STX
LDX
STX

6,i
AvieuxA,s
AvieuxX,s
0,i
Aligne,s

;
;
;
;
;

LDX
CPX
BREQ
LDA
ADDX
STX
LDX
Boucle4: CPX
BREQ
ADDX
ASLA
BRC
CHARO
BR
affChar: CHARO
BR
FinBouc4: CHARO
BR

Aligne,s
10,i
FinBouc3
Amatrice,sxf
1,i
Aligne,s
0,i
8,i
FinBouc4
1,i

; //Pour chaque ligne du caractre


; for (Aligne = 0; Aligne < 10; Aligne++) {
;
;
Rcupre la ligne dans la matrice
;
;
;
//Pour chaque partie (bit) de la ligne, de gauche droite
;
for (int j = 0; j < 8; j++) {
;
;
//Vrifie sa valeur et affiche en consquence
;
Amatrice[Aligne] << 1;
;
if (Retenue != 1) {
;
cout << Espace
;
} else {
;
cout << Caractre
;
}
;
} cout << Saut de ligne
; }

FinBouc3: LDA
STA
LDA
LDX
ADDSP
RET0

Aretour,s
Amatrice,s
AvieuxA,s
AvieuxX,s
9,i

Boucle3:

affChar
32,i
Boucle4
Achar,s
Boucle4
10,i
Boucle3

;
;
;
;
;
;

Alloue l'espace pour les variables locales


Sauvegarde du registre A
Sauvegarde du registre X
Initialise le compteur de lignes

Mettre l'adresse de retour en bas de pile


Restaurer le registre A
Restaurer le registre X
Nettoyer la pile (Dpiler)
Retour

;+-------------------------| GetIndex |--------------------------+


;| ::: But : Dtermine l'adresse "effective" d'un caractre dans |
;|
la matrice de gros caractres.
|
;|
|
;| ::: Antcdents
|
;|
- Suppose que chaque caractre dans la matrice soit
|
;|
dfini sur 10 octets.
|
;|
- Suppose que la matrice soit en ordre alphabtique et
|
;|
ayant dans l'ordre descendant : Les lettres majuscules, |
;|
les lettres minuscules et les caractre non-dfini.
|
;|
|
;| ::: Fonctionnement
|
;|
- Dtermine le type de caractre (majuscule, minuscule,
|
;|
non-dfini) et ajuste son index dans la matrice
|
;|
- Multiplie par 10 l'index trouv et lui ajoute l'adresse |
;|
de la matrice.
|
;|
|
;| ::: Appel
|
;|
- Rserver l'espace ncessaire pour le rsultat
|
;|
(Emplacement du caractre dans la matrice)
|
;|
- Empiler le caractre
|
;|
- Empiler l'adresse de la matrice
|
;|
|
;| ::: Retour : Emplacement du caractre dans la matrice (1 mot) |
;|
|
;| ::: Auteur
|
;|
- Nom : Jodi Giordano
|
;|
- Matricule : GIOJ01028400
|
;|
- Cours : INF2170
|
;|
- Groupe : 20
|
;|
- E-mail : giordano.jodi@courrier.uqam.ca
|
;|
- Dernire modification : 20 mars 2007
|
;+---------------------------------------------------------------+
vieuxX:
vieuxA:

.EQUATE
.EQUATE

0
2

; Sauvegarde du registre X
; Sauvegarde du registre A

92

retour:
matrice:
char:
resultat:

4
6
8
10

;
;
;
;

Adresse de retour
Adresse de la matrice de caractres
Un caractre
Emplacement du caractre dans la matrice

GetIndex: SUBSP
STA
STX
LDX
LDBYTEX
CPX
BRGT
CPX
BRGT
CPX
BRGT
CPX
BRGE

4,i
vieuxA,s
vieuxX,s
0,i
char,s
122,i
autre
96,i
minus
90,i
autre
65,i
majus

;
;
;
;
;
;
;
;
;
;
;
;
;

Alloue l'espace pour les variables locales


Sauvegarde du registre A
Sauvegarde du registre X

autre:

LDX
BR
SUBX
BR
SUBX

52,i
mulDix
71,i
mulDix
65,i

; }
;
; Ajuste l'index en consquence du type de caractre
;
;

STX
ASLX
ASLX
ADDX
ASLX
ADDX

resultat,s

; //Calcul l'index "effective" du caractre dans la matrice


; resultat = resultat * 10;
;
;
;
; Adresse effective du caractre dans la matrice

STX
LDA
STA
LDA
LDX
ADDSP
RET0

resultat,s
retour,s
char,s
vieuxA,s
vieuxX,s
8,i

minus:
majus:
mulDix:

.EQUATE
.EQUATE
.EQUATE
.EQUATE

.END

resultat,s
matrice,s

;
;
;
;
;
;
;
;

//Dtermine le type de caractre


if (char > 122) {
index = 52;
//Autre caractre
} else if (char > 96) {
index = char - 71;
//Caractre minusucule
} else if (char > 90) {
index = char - 65;
//Autre caractre
} else if (char > 65) {
index = 52;
//Caractre majuscule

Mettre le rsultat en bas de pile


Adresse de retour...
... mise en base de pile, avant le rsultat
Restaurer le registre A
Restaurer le registre X
Nettoyer la pile
Retour

93

Annexe C : Lorigine du chargeur


Ce nest pas parce quun programme sexcute que la machine est utilise de faon optimale. LUCT est
beaucoup plus rapide que tous les quipements priphriques dinput/output avec lesquels elle communique. Ceci
pose moins de problmes pour les traitements exigeants en calculs mais pour les traitements exigeants en entres
et sorties, le processeur est souvent en attente. Or, tant donn le prix lev de ces machines, on voudrait plutt
en maximiser lutilisation. Des efforts seront donc entrepris dans le but dliminer tout goulot dtranglement.
Par ailleurs, les programmeurs devaient rcrire sans cesse tous les programmes de commande de
droulement de lexcution et dE/S en plus de programmer les fonctionnalits dsires par lutilisateur. Ces
programmes de commande et dE/S variant peu sur une machine donne, ils ont t peu peu spars des
programmes dapplication.
Ces diverses problmatiques donnrent lieu lapparition de nouveaux logiciels spcialiss et
indpendants des applications : les logiciels moniteurs; la mmoire-tampon et les mthodes daccs rutilisables;
les logiciels de gestion des interruptions; les logiciels de gestion des entres et sorties et enfin les premiers logiciels
de multiprogrammation. Bref, tout ce qui pouvait tre mis en facteur par rapport lensemble des programmes
dapplication le fut. Chacun de ces logiciels est expliqu ci-aprs.

Les systmes moniteurs : Le traitement par lots


Sur rubans ou sur cartes, programmes et sous-programmes taient chargs et rechargs manuellement, au
besoin, en mmoire. Sur la machine HARVARD-IBM, par exemple, la notion de sous-programmes rutilisables
existait (algorithmes mis au point indpendamment du programme dapplication principal). Le temps perdu au
chargement manuel des programmes devint intolrable ds que la vitesse des units centrales augmenta.
Un programme appel chargeur (loader) fut donc invent. Ce dernier permet de charger sur demande un
programme en mmoire centrale (RAM) partir de la mmoire secondaire (disque, cartes, ruban magntique ou
perfor, etc.).
Un type particulier de chargeur effectuait cette tche lors de la mise en marche de lordinateur, il sagit du
bootstrap loader.Lors de la mise en marche dun ordinateur, ce programme lmentaire doit tre plac en
mmoire automatiquement (opration cble en machine) afin de guider, son tour, le placement en mmoire
des programmes dapplication et des donnes lues par les dispositifs dentre. Cest sur lEDSAC que cette
opration fut cble pour la premire fois. Aujourdhui ces deux types de chargeurs sont intgrs aux systmes
dexploitation.
Sur un micro-ordinateur le bootstrap loader est un programme qui est livr avec lordinateur sur une puce
de mmoire morte appele ROM BIOS (Read only memory - Basic Input Output System). Cest ce dernier qui
charge en mmoire le reste du systme dexploitation. Par la suite, sur demande de lutilisateur, le second
programme chargeur, incorpor au systme dexploitation, transfre en mmoire et lance les applications
dsires.
Toutefois, lenchanement manuel des travaux ralentissait beaucoup lexploitation et conduisait de
nombreuses erreurs. Des programmes appels moniteurs denchanement permirent lautomatisation du

94

chargement et de lexcution des programmes (premiers apparus sur lIBM 704). Les travaux taient placs en lot,
les uns la suite des autres, puis chargs et excuts dans lordre, tel quillustr ci-aprs.
Sur une machine lente qui nexcute quun programme la fois, la transition dune tche lautre est un
problme important. Aprs lexcution dune tche, loprateur doit prparer lordinateur pour la tche suivante :
chargement des cartes du compilateur, du programme, des donnes dans le lecteur de cartes, chargement du
papier dsir dans limprimante, chargement des bandes et des dispacks, etc. Durant ce temps, la machine est en
attente.
Dans le cas dun ordinateur lent (disons 1 000 instructions/seconde), ceci nest pas un gros problme; cinq
minutes de prparation peuvent tre suivies de plusieurs heures de traitement. Considrons lutilisation suivante
du temps :

Avec un ordinateur plus rapide, le temps de traitement diminue mais pas le temps de prparation. Le ratio
dinactivit de la machine devient alors problmatique. Une partie substantielle de la disponibilit de lordinateur
est perdue et on ne peut comprimer la dure de la prparation.

Une solution partielle trs longtemps utilise dans lindustrie t de regrouper (Scheduling) lexcution des
tches qui ncessitent le mme genre de prparation. Voici un exemple de tches non regroupes pour lesquelles
lexcution en squence ncessite quatre changements de papier limprimante:

Tche

Papier

A
B

8,5 x 11
8,5 x 14

8,5 x 11

8,5 x 14

Un changement de squence des travaux permet dliminer 50% de la prparation :

95

Le regroupement tait souvent effectu laide dune classification quelconque. Par exemple les tches
dessais et de compilation peuvent se voir assigner la classification A, qui nutilisera que le lecteur de cartes et
limprimante. Dautres tches peuvent se voir assigner une classification B pour lusage dun ruban, C pour lusage
de plusieurs rubans et D pour lusage dun dispack. En prcdant chaque tche dune carte didentification
permettant loprateur didentifier le type de tche dont il sagit (A, B, C ou D), ce dernier est en mesure de
regrouper lexcution des tches ncessitant la mme prparation. Ainsi, la disponibilit des ressources
dentre/sortie peut tre utilise pour le regroupement des tches : une tche ncessitant lusage de plusieurs
rubans peut tre prpare pendant lexcution dune tche qui ne ncessite aucun ruban.

Lenchanement automatique des travaux tait possible grce un moniteur denchanement qui lisait les
cartes et effectuait les actions correspondantes sans interruption (ex : IBSYS de IBM). Ces moniteurs taient en
mesure dinterprter les commandes et informations situes sur les cartes de contrle. Lhabitude de placer sur
une carte le type de travail et les ressources requises a donn lieu aux langages contemporains de contrle des
travaux (Job Control Language ou JCL sur MVS et TSO) qui ont ventuellement t ports sur terminal.

En cas derreur dans lexcution, ces moniteurs taient galement capables dabandonner un programme
et de passer au suivant.

Linconvnient principal de cette organisation tait la difficult dinsrer un programme urgent.

Les moniteurs denchanement ont donn naissance ce que nous appelons le traitement par lots. Ceci a
permis le dveloppement des Service Bureau, socits qui vendent du temps machine des clients dont les
travaux ne justifient pas lachat dun ordinateur.

Rduction des dlais de chargement et de compilation


Considrons les jeux de cartes composant le traitement suivant :

96

Pourquoi ne pas garder le compilateur COBOL sur disque et le remplacer par une carte dappel indiquant
au programme de chargement o le trouver?
Pourquoi ne pas placer le programme de tri sur disque galement et le remplacer lui aussi par une carte
dappel suivie dune autre indiquant simplement sur quels champs doit seffectuer le tri?
Pourquoi ne pas conserver galement la version excutable du programme sur disque?

Le compilateur et le programme de tri sont conservs dans des librairies. Quelques programmes spciaux
doivent tre utiliss pour entretenir les librairies (ajout et retrait) et pour charger les programmes en mmoire
principale (loader). En plus de rduire le nombre de cartes lire et de remplacer linput lent par cartes par un
input plus rapide sur disque, ltape de compilation a t limine. Lutilisation de librairies rduit
substantiellement le temps dexcution des programmes laissant ainsi plus de temps pour dautres tches,
augmentant par consquent le dbit. On doit bien sr payer un prix pour cette efficacit additionnelle. Tous ces
programmes (compilateurs, chargeurs, diteurs de liens et gestionnaires de librairie) prennent de lespace disque
et du temps dexcution UCT. Tous ces programmes et ces cartes dinstruction neffectuent aucun travail direct. Ils
ne font que supporter les programmes dapplication. Quoique dispendieux, les bnfices obtenus de lutilisation
de logiciels systme (System Software) dpassent largement les cots.

You might also like