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
Apprendre Python rapidement: Le guide du débutant pour apprendre tout ce que vous devez savoir sur Python, même si vous êtes nouveau dans la programmation