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
Sommaire
I) Les raisons d’utilisation du langage assembleur. 1
II) Les conditions d’utilisation du langage assembleur ?. 2
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 :
//
Soyez prévenu par email des prochaines mises à jour Rejoignez les 29 autres membres
Inscrivez-vous au blog