Vous êtes sur la page 1sur 6

c0cc4nn41t06 t6 4tn8Itvc

t4v 1.. I1 0ct46 ja: 1 / 6


PROGRAMMATION EN ASSEMBLEUR.
I. Introduction :
Au cur de tout systme microprogramm, se trouve un microprocesseur. Cest lui qui gre toutes les oprations
effectuer. Pour raliser ces oprations, chaque microprocesseur possde un jeu dinstruction codes en logique binaire. Cest un
ensemble de codes qui forme le langage machine. Pour dfinir lenchanement des oprations effectuer, il suffit dcrire un
programme. Seulement, lcriture dun programme laide des instructions codes en binaire est pratiquement impossible et
totalement inefficace. Aussi, pour faciliter lcriture des programme, on utilise des langages volus. On peut distinguer deux
types de langage volu :
- Les langages de bas niveau :
Ce sont des langages proches du jeu dinstruction du microprocesseur. Ils traduisent chaque code du langage
machine laide de mnmoniques associs aux diffrents modes dadressages supports par le
microprocesseur. Chaque microprocesseur ayant un jeu dinstruction particulier, il y aura donc un langage
par microprocesseur. On les nomme des langages Assembleurs. Pour interprter et traduire en langage
machine un programme crit en assembleur, on utilisera un Assembleur qui sera donc spcifique chaque
microprocesseur.
- Les langages de haut niveau :
Ce sont des langages indpendants du type de microprocesseur. De plus, chaque instruction de ces
langages ne correspond pas une seule instruction en langage machine, mais plusieurs. Ils permettent de crer
des programmes compliqus beaucoup plus facilement et rapidement. De ce fait, ce sont les langages les plus
utiliss de nos jours. Pour interprter et traduire en langage machine un programme crit en langage de haut
niveau, on utilise un Compilateur qui sera spcifique au microprocesseur utilis, mais le programme
source pourra tre le mme pour diffrents microprocesseur. Il existe de nombreux langages de haut niveau.
On retiendra notamment : PASCAL, ADA, FORTRAN, BASIC, COBOL, C, C++, JAVA, ...
Ce cours ne soccupe que de la programmation en langage Assembleur. Contrairement aux langages de haut niveau,
lassembleur nest pas un langage structur. Cela constitue sont principal inconvnient mais aussi un de ses avantages : en effet,
cela permet une grande libert dans lorganisation des diffrentes instructions constitutives dun programme. Mais cela rend du
mme coup, difficile la lecture et la comprhension du programme.
Aussi, pour faire en sorte quun programme soit lisible, comprhensible et facile maintenir, il est ncessaire quil soit
structur. Pour structurer un programme, il faut lcrire avec mthode. Dans la suite de ce cours, nous allons tudier une
mthode qui nous permettra de rsoudre les problmes de faons structure et de telle sorte que lcriture du programme dans
un langage donn, soit la dernire tape de la rsolution.
II. Programmation en langage Assembleur :
II.1. Mthodologie :
Cest au philosophe Descartes que lon doit les dbut de la dmarche scientifique avec la parution du Discours
de la mthode dans lequel il rsume sa mthode danalyse des problmes en quatre principes : faire apparatre les
problmes laide du doute, diviser les problmes en problmes plus simples pour diviser la difficult, ordonner la
rsolution des problmes en commenant par les plus simples pour remonter au plus compliqu, faire des
dnombrements si entiers et des revues si gnrales afin dtre assur de ne rien oublier. Si, contrairement Descartes,
nous nallons pas essayer de dmontrer lexistence de Dieu, nous pouvons formaliser la mthode de sorte quelle nous
aide tablir lalgorithme de rsolution dun problme.
De la mme faon que pour les systmes techniques, ltude dun programme pourra se faire laide de lanalyse
fonctionnelle. Chaque partie du programme tant associe une fonction particulire, il suffira que lagencement de
celles-ci ralise correctement les fonctions principales dfinies dans le cahier des charges. Le programme pourra donc se
dcomposer en fonctions qui devront tre aussi indpendantes que possible afin quelles puissent tre utilis, tel quel,
dans un autre programme.
En plus de lanalyse fonctionnelle, la description du fonctionnement des programmes se fera laide dalgorithmes et de
leur reprsentation graphique, les algorigrammes. Ils permettent de connatre ce que fera un programme et comment il le
fera de manire totalement indpendante du langage de programmation utilis.
c0cc4nn41t06 t6 4tn8Itvc
t4v 1.. I1 0ct46 ja: z / 6
Pour la conception des programmes, on pourra donc rsumer la mthode comme suit :
nonc du problme :
A laide du cahier des charges, on se pose des questions qui font apparatre les problmes
rsoudre.
Analyse :
On analyse les diffrents problmes afin de faire apparatre ce dont on aura besoin pour les
rsoudre. Cest ce moment que lon fait lanalyse fonctionnelle.
Algorithme :
On ralise chacune des fonctions prcdemment dfinies laide des algorithmes. On commence
par les fonctions principales pour terminer avec les fonctions secondaires. A la fin de cette tape,
les problmes doivent tre rsolus.
Programmation :
Il ne reste plus qu traduire les algorithmes dans le langage de programmation choisit.
Excution :
On vrifie le fonctionnement du programme en lexcutant sur une machine. On fait un maximum
dessais afin de trouver les ventuels problmes non prvus et que le programme ne rsout pas.
FIN
Si tous les rsultats sont corrects, alors le programme est fini. Sinon, il faut recommencer ltude
depuis lanalyse.
II.2. Algorithmes et algorigrammes :
Lalgorithme permet de dcrire, en franais, le droulement dun processus, dun programme de faon indpendante du
langage de programmation utilis. Bien quil y ait au moins autant de solutions que de problmes, on montre que tout
algorithme peut scrire laide dun nombre restreint de structures de bases.
Lalgorithme reprsente les actions qui sont ralises dans lordre de leur excution.
Lalgorigramme constitue la traduction graphique de lalgorithme.
II.2.1. Structure squentielle :
DEBUT
LIRE (a)
ECRIRE ( racine_carr(a) )
FIN
Il y a passage dune action la suivante la seule
condition que la prcdente soit excute.
II.2.1.1. Affectations :
A un instant donn, une variable ne peut avoir quune seule valeur. Cette valeur reste mmorise jusqu ce quune
nouvelle affectation efface la prcdente.
Dans les algorithmes, on reprsente une affectation par :
Var1 25 est quivalent Var1 = 25
Une autre notation : Var1 ppv 25 soit Var1 prend pour valeur 25
II.2.1.2. Oprateurs arithmtiques :
La majorit des traitements envisageables sur un ordinateur exige lexcution de calculs. Les oprateurs qui permettent
ces calculs dpendent du type des variables concernes. Pour les variables numriques, les oprateurs arithmtiques
sont :
+ ( Addition ) ; - ( Soustraction ) ; * ( multiplication ) ; / ( Division ) ; % ( Reste de la division entire ) ;
c0cc4nn41t06 t6 4tn8Itvc
t4v 1.. I1 0ct46 ja: 1 / 6
II.2.2. Structure alternative :
Une expression logique est teste. Si l expression logique est vrai alors un bloc dinstruction associ est excut. Sinon,
donc si elle est fausse, un autre bloc dinstruction est excut.
Algorithme Algorigramme
DEBUT
SI ( expression logique) vraie
ALORS
Bloc dinstructions1
SINON
Bloc dinstructions 2
FIN SI
FIN
D bu t
E xp r e s s io n
vr a ie ?
I ns t r u c t io ns 1 I ns t r u c t io ns 2
Fin
o u i no n
Les expressions logiques :
Lexpression logique est une expression boolenne. Elle ne peut donc prendre que 2 valeur diffrente : Vrai ou Faux.
Elle peut utiliser tous les oprateur relationnels ainsi que les oprateurs boolens.
Oprateur relationnel Signification Exemple
< Infrieur Delta < 0
<= Infrieur ou gal C<= 2
= gal X = y
> Suprieur C > 2
>= Suprieur ou gal A >= B
Diffrent Y X
On peut raliser des oprations boolennes avec les expressions contenant des oprateurs relationnels :
SI ( (a<=0) OU ( a>=100) ) ALORS .....
Les oprateurs boolens sont : ET OU NON et OU EXCLUSIF
II.2.3. Structures de contrle :
II.2.3.1. Structures rptitives :
A- Premire forme :
Algorithme Algorigramme
TANT QUE ( Expression logique ) vraie FAIRE
DEBUT
Bloc dinstruction(s)
FIN
FIN TANT QUE
Expression
vraie?
Instructions 1
oui
non
Le bloc dinstruction est excut TANT QUE lexpression logique est vraie. Si la condition nest pas remplie lors de la
premire valuation, le bloc dinstruction ne sera jamais excut.
c0cc4nn41t06 t6 4tn8Itvc
t4v 1.. I1 0ct46 ja: / 6
B- Deuxime forme :
Algorithme Algorigramme
FAIRE
DEBUT
Bloc dinstruction(s)
FIN
TANT QUE ( Expression logique) vraie
Expression
vraie?
Instructions 1
non
oui
Dans cette forme, le bloc dinstruction est excut au moins une fois.
Une variante existe pour chacune des formes prcdentes. Elle consiste vrifier si lexpression logique est fausse. Dans ces
cas, le bloc dinstruction nest excut que si la condition nest pas ralise. Mais ces variantes sont totalement quivalentes, et
il suffit de complmenter lexpression logique pour retrouver ces deux formes :

FAIRE
DEBUT
Bloc dinstruction(s)
FIN
TANT QUE ( Expression logique) fausse
FAIRE
DEBUT
Bloc dinstruction(s)
FIN
TANT QUE ( NON(Expression logique)) vraie
C- Troisime forme : forme itrative :
Dans cette forme, ce nest plus une expression logique qui permet de sortir de la boucle, mais un compteur. A lentre de la
boucle on initialise une variable entire. On indique sa valeur finale, si celle-ci est suprieure la valeur initiale, on augmente
la variable compteur, sinon on la diminue.
Algorithme Algorigramme
POUR ( compt = val.init ) JUSQU' ( compt = val.fin )
FAIRE
DEBUT
Bloc dinstruction(s)
Compt compt +/- 1
FIN
FIN POUR
compt =
val .fi n ?
compt ppv
compt +/- 1
oui
Instructions
compt ppv
val.init
non
quivalant
c0cc4nn41t06 t6 4tn8Itvc
t4v 1.. I1 0ct46 ja: t / 6
D- Quatrime forme : structure choix multiples :
Lorsque des actions diffrentes peuvent tre excutes en fonction de la valeur dune variable, on peut utiliser la structure
alternative pour comparer la valeur de la variable aux valeurs autorisant lexcution dun bloc dinstruction. Mais, la structure
alternative ne permet de comparer une variable qu un seul cas la fois. Donc, si on a plusieurs cas possibles, il faudra autant
de structures alternatives que de cas possibles. Cela risque dalourdir lalgorithme. La structure choix multiples, permet donc
de rsoudre ce problme. Mais il ne faut pas oublier que ce nest quune mise en forme plus simple de plusieurs structures
alternatives.
Algorithme Algorigramme
SELON ( variable ) FAIRE
DEBUT
Constante1 : Bloc dinstruction(s) 1
QUITTER SELON
Constante2 : Bloc dinstruction(s) 2
QUITTER SELON
Constante n : Bloc dinstruction(s) n
QUITTER SELON
Autres cas : Bloc dinstruction(s)
QUITTER SELON
FIN
FIN SELON
Instructions 1
variable=
constante1?
variable=
constante2?
variable=
constanten?
Instructions 2
Instructions n
Instructions
oui
non
oui
non
non
oui
c0cc4nn41t06 t6 4tn8Itvc
t4v 1.. I1 0ct46 ja: 6 / 6
II.3. Lordinogramme :
Lordinogramme assure galement, sous forme graphique, la description du droulement du programme, mais contrairement
lalgorigramme, il fait explicitement rfrence au C ou au P charg dexcuter le programme.
Par consquent, les diffrents symboles graphiques pourront faire rfrence aux registres internes du C utilis.
Afin de respecter au mieux les indications portes par MOTOROLA dans le document CPU12 Reference Guide, on utilisera,
pour chacun des symboles, les rgles syntaxiques conformes aux exemples suivants :
(A) => $2000
($2000) => A
(D) => $2000:$2001
($2000:$2001) => D
$20 => A
(M(X)) => A
(A) => M(Y)
Contenu de A dans la case mmoire d'adresse $2000
Contenu de la case mmoire d'adresse $2000 dans A
Contenu de D dans les cases mmoire d'adresses $2000 et $2001
Contenu des cases mmoire d'adresses $2000 et $2001 dans D
$20 dans A
Contenu de la case mmoire pointe par X dans A
Contenu de A dans la case mmoire pointe par Y
(A) + 1 => A
Incrmenter A