infoclick solution informatique (Gers) - version particulier

 

infoclick solution informatique - Encyclopédie informatique

 
Présentation
Compilation
Instructions
Adressage
Instructions arithmétiques et logiques
Affectation
Branchements
Pile
Procédures
Segmentation de la mémoire
Liste des principales instructions
 
Introduction à l'assembleurPage précédentePage suivanteRetour à la page d'accueil

Les prérequis nécessaires

Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur:des informations binaires, soit des 0 et des 1). Il dépend doncfortement du type de processeur. Ainsi il n'existe pas un langage assembleur, mais un langage assembleurpar type de processeur.Il est donc nécessaire de connaître un minimum le fonctionnementd'un processeur pour pouvoir aborder cette partie. Un processeur réel a toutefoistrop de registres et d'instructions pour pouvoir les étudier en détail. C'estpour cette raison que seuls les registres et les instructions d'un processeur simple (Intel 80x86 16 bits) seront étudiés dans ce dossier.

Le processeur en bref...

Un processeur est relié à la mémoirepar l'intermédiaire d'une liaisonappelée bus. Les données dont le processeur a besoin sont stockées dans ce que l'on appelle des registres (ils sont notés AX, BX, CX, DX, ...). Chacun a sa propre utilité:

Nom du registreTaille
Accumulateur AX16 bits
Registre auxiliaire de base BX 16 bits
Registre auxiliaire (compteur) CX16 bits
Registre auxiliaire de données DX16 bits
Pointeur d'instruction IP16 bits
Index de source SI16 bits
Index de destination DI16 bits
Registre segment de code CS16 bits
Registre segment de données DS 16 bits
Registre segment de pile SS16 bits
Registre segment supplémentaire ES16 bits
Pointeur de pile SP16 bits
Pointeur de base BP16 bits

Les registres AX, BX, CX et DX sont les registresles plus utilisés pour les calculs :

  • Le registre AX sert à effectuer des calculs arithmétiques ou à envoyer un paramètre à une interruption
  • Le registre BX sert à effectuer des calculs arithmétiques ou bien des calculs sur les adresses
  • Le registre CX sert généralement comme compteur dans des boucles
  • Le registre DX sert à stocker des données destinées à des fonctions
Il s'agit là de l'utilisation de base de ces registres, mais dans la pratique ils peuventêtre utilisés à d'autres fins.

Les registres AX, BX, CX et DX peuvent être utilisés par blocd'un octet (8 bits), la lettre X de leur nom est alors remplacé par L (comme Low pour désignerles bits de poids faible) et H (pour High afin de désigner les bits de poids forts).De plus, dans les architectures x86 32 bits, ces registres ont été étendus à 32et ont vus leur nom précédé d'un E (pour Extended, en français "étendu").

EAX (32 bits)
 
AX (16 bits)
 AH (8 bits)AL (8 bits)

Pourquoi utiliser l'assembleur?

Pour faire exécuter une suite d'instructions au processeur, il faut lui fournirdes données binaires (souvent représentées en notation hexadécimale pour plus de lisibilité,mais cela revient au même...). Or, les fonctions en notation hexadécimale sont difficilesà retenir, c'est pourquoi le langage assembleur a été mis au point.Il permet de noter les instructions avec des noms explicites suivis de paramètres.

Voici par exemple à quoi peut ressembler un programme en langage machine:
A1 01 10 03 06 01 12 A3 01 14

Il s'agit de la représentation hexadécimale d'un programme permettant d'additionner lesvaleurs 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 associées à unevaleur binaire chacune, on utilise une notation symbolique sous forme textuelle qui correspond à chaquefonction, c'est ce que l'on appelle le langage assembleur. Dans l'exemple précédent la séquenceA1 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 successiond'instructions (précédées de leur adresse pour pouvoir repérer les instructions et passerfacilement 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 langagemachine.

Le programme précédent écrit en langage assembleur donnerait:

Adresse de l'instructionInstruction en langage machineInstruction en langage assembleurCommentaires 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

L'écriture en langage assembleur, bien que restant rebutante, est beaucoup plus compréhensible pour un humain, car on a généralementmoins de mal à retenir un nom qu'un numéro...


Page précédente Page suivante

 
Ce document intitulé «L'assembleur - Introduction» issu de CommentCaMarche.net est soumis à la licence GNU FDL.Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
 

Qui sommes nous - infos légales - contact - liens - plan du site
Copyright © 2004 infoclick - 05 62 07 79 73 - Hôtel d'entreprise / ZI du Pont Peyrin 32600 Isle Jourdain
Valid XHTML 1.0! Valid CSS!