langage assembleur

The University of Yaoundé I

----------------

Higher Teachers training College

-------------

Department of Computer science and educational Technologies

Université de Yaoundé I

----------

Ecole Normale Supérieure

-----------

Département d’Informatique et des technologies Educatives

*

 

 

 

 

 

 

 

     architecture des ordinateurs

exposĂ© : le langage assembleur

 

 

 

 

 

 


Par 

NGO MBONDO BERNADETTE MARIE IMMACULEE

NGO SII PERPETUE NICAISE

NGONO ERNESTINE

 

 

 

 

Enseignant : M. NJUH

AnnĂ©e acadĂ©mique : 2009-2010



Introduction

Le langage assembleur est très proche du langage machine, c’est-à-dire le langage qu’utilise l’ordinateur (les informations en binaire, les 0 et les 1). Il n’existe pas un seul langage assembleur, mais des langages puisqu’il en existe un par type de processeur. La connaissance du fonctionnement du processeur est donc utile ici. Ce langage étant un langage comme les autres, Il est donc tout à fait indispensable de développer des argumentations susceptibles de justifier l'usage de ce langage. De plus connaitre les conditions d’utilisation et les limites à s’imposer pour une meilleure optimisation de ce langage nous semble nécessaire

I)                 Les raisons d’utilisation du langage assembleur

Le recours au langage assembleur peut aussi, dans certains cas, être justifié par les limites mêmes du langage évolue dont l'emploi a été envisagé. En effet, un langage informatique dit évolué se situe entre le langage naturel d'une part, trop complexe pour être analysé tel quel par un système informatique (du moins dans l'état actuel des recherches), et le langage binaire d'autre part, seul exécutable par le microprocesseur, mais assez hermétique et éloigné des systèmes traditionnels de référence. Un tel compromis engendre quasi nécessairement des contraintes, parmi lesquelles l'impossibilité d'exploiter à l'aide d'un langage évolué toutes les ressources offertes par le système informatique.

Voici par exemple Ă  quoi peut ressembler un programme en langage machine A1 01 10 03 06 01 12 A3 01 14   sur un processeur (Intel 80x86 16 bits) :

Il s'agit de la représentation hexadécimale d'un programme permettant d'additionner les valeurs de deux cases mémoire et de stocker le résultat dans une troisième case. Il est évident que ce type d'écriture est difficilement lisible par nous, humains.

Ainsi, puisque toutes les instructions que le processeur peut effectuer sont chacune associĂ©es Ă  une valeur binaire, on utilise une notation symbolique sous forme textuelle qui correspond Ă  chaque fonction, c'est ce que l'on appelle le langage assembleur. Dans l'exemple prĂ©cĂ©dent, la sĂ©quence A1 01 10 signifie copier le contenu de la mĂ©moire Ă  l'adresse 0110h dans le registre AX du processeur. Cela se note en langage assembleur : MOV AX, [0110]

Toutes les instructions ont une notation symbolique associĂ©e (fournie par le fabricant du processeur). L'utilisation du langage assembleur consiste donc Ă  Ă©crire sous forme symbolique la succession d'instructions (prĂ©cĂ©dĂ©es de leur adresse pour pouvoir repĂ©rer les instructions et passer facilement de l'une Ă  l'autre). Ces instructions sont stockĂ©es dans un fichier texte (le fichier source) qui, grâce Ă  un programme spĂ©cifique (appelĂ© « l'assembleur Â») sera traduit en langage machine.

Le programme prĂ©cĂ©dent Ă©crit en langage assembleur donnerait :

Adresse de l'instruction

 

Instruction en langage machine

Instruction en langage assembleur

 

Commentaires sur l'instruction

0100

 

A1 01 10

MOV AX, [0110]

 

Copier le contenu de 0110 dans le registre AX

0103

 

03 06 01 12

ADD AX, [0112]

 

Ajouter le contenu de 0112 à AX et mettre le résultat dans AX

0107

 

A3 01 14

MOV [0114], AX

 

Stocker AX à l'adresse mémoire 0114

 

En outre, le langage assembleur vient rĂ©soudre le problème de lenteur constatĂ© dans la cadre du traitement d’un grand nombre d’informations.  En effet, La conception de logiciels, quel que soit le domaine de l'application envisagĂ©e, se traduit en particulier, lors de la rĂ©alisation informatique du produit, par l'Ă©criture d'algorithmes. Or, dans de très nombreux cas, certains algorithmes, tout Ă  fait performants pour le traitement d'une quantitĂ© rĂ©duite d'informations, deviennent d'une utilisation difficile voire impossible Ă  envisager lorsqu'ils concernent de plus grandes masses d'informations. C'est le cas en particulier d'algorithmes de tri, de recherche, etc. Ainsi, le gain de temps peut ĂŞtre tel que, dans certains cas, le seul fait d'Ă©crire en langage assembleur un algorithme intrinsèquement très peu performant, puisse suffire Ă  porter ses performances Ă  un niveau tout Ă  fait acceptable, comparable voire mĂŞme supĂ©rieur Ă  celui des algorithmes les plus performants.

Il faut dire cependant que pour une meilleure utilisation du langage assembleur, certaines conditions doivent être réunies, pour une meilleure optimisation.

II)             Les conditions d’utilisation du langage assembleur ?

La rĂ©alisation d'application, que ce soit totalement ou le plus souvent partiellement, Ă  l'aide du langage assembleur requiert des connaissances multiples et variĂ©es, ainsi que la mise en Ĺ“uvre d'un environnement logiciel, sans lequel tout dĂ©veloppement de l'application devient très vite impossible. Les connaissances requises concernent :

-         Une maĂ®trise et une connaissance parfaites de la structure interne et du fonctionnement du microprocesseur : Chaque titre de microprocesseur possède sa propre structure interne. La connaissance de celle-ci a donc une influence considĂ©rable sur la traduction de l'algorithme. Par exemple, certains microprocesseurs, comme le 6502, ne possèdent que très peu de registres (sortes de mĂ©moires très rapides internes au microprocesseur), alors que d'autres, comme le cĂ©lèbre Z80, en ont un nombre si important que la plupart des applications ne les exploitent pas tous. Dans le premier cas, des Ă©changes frĂ©quents entre les registres du microprocesseur et la mĂ©moire centrale seront donc nĂ©cessaires, alors que dans le second cas, ces Ă©changes concerneront davantage les registres, donc pourront Ă©ventuellement contribuer Ă  une vitesse d'exĂ©cution encore plus grande.

-         Une connaissance du jeu complet d'instructions liĂ© au micro processeur : Chaque type de microprocesseur met Ă  la disposition du programmeur une sĂ©rie plus ou moins importante d'opĂ©rations Ă©lĂ©mentaires dont l'ensemble constitue le jeu d'instructions. En fonction du jeu d'instructions disponible, certaines tâches seront plus ou moins faciles Ă  traduire. Ainsi, le zao dispose d'instructions qui permettent des dĂ©placements de zones complètes de la mĂ©moire centrale. Une telle tâche sera donc traduite facilement sur ce type de microprocesseur. En revanche, le 6502 ne dispose pas, dans son jeu d'instructions, d'opĂ©rations similaires. La traduction de cette tâche sera donc plus difficile et sera rĂ©alisĂ©e en faisant appel Ă  des instructions Ă©lĂ©mentaires. Parmi les instructions disponibles sur un microprocesseur, certaines intĂ©ressent en particulier les Ă©changes entre les registres du microprocesseur et l'unitĂ© centrale, et rĂ©ciproquement. Or, ces Ă©changes peuvent s'effectuer selon plusieurs modalitĂ©s appelĂ©es modes d'adressage. Certains microprocesseurs, (sont plus riches en mode d'adressage(le 6502) que d'autres, (le zao).

-          Une connaissance de l'environnement hardware du microprocesseur,

Ou des fonctionnalités offertes par le système d'exploitation ou les logiciels de développement.

-         La nĂ©cessitĂ© d’un environnement logiciel : par sa nature mĂŞme, la mise en Ĺ“uvre du langage assembleur, comme d'ailleurs d'autres langages, s'accompagne de la perte du caractère interactif disponible avec un langage informatique Ă©voluĂ© interprĂ©tĂ©, comme c'est le cas pour le Basic ou le LSE. C'est d'ailleurs en partie ce caractère interactif de la mise au point sous ces langages qui permet Ă  certains "programmeurs" d'improviser devant le clavier de la machine telle ou telle solution. Le logiciel permet donc de rĂ©crĂ©er plus ou moins cet environnement. C’est l’objet mĂŞme du « debugger Â» ou « metteur de mise au point Â». L'absence d'un tel logiciel ou ensemble de logiciels entraĂ®ne, dans le meilleur des cas, un accroissement considĂ©rable de la phase de mise au point, et dans le pire, des cas l'abandon pur et simple, contraint et forcĂ©, de l'implĂ©mentation de l'application en langage assembleur.

III)           Les difficultĂ©s Ă  surmonter

Le langage assembleur a quelques difficultĂ©s dont il faut absolument tenir compte si l’on veut avoir de bons rĂ©sultats. Parmi ceux-ci :

//

28/06/2010
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 29 autres membres