IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ AssembleurConsultez toutes les FAQ

Nombre d'auteurs : 9, nombre de questions : 56, dernière mise à jour : 8 décembre 2017  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum Assembleur de Developpez.com et de l'expérience personnelle des auteurs. Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être exhaustive ; vous pouvez la compléter avec vos propres questions/réponses ou proposer des corrections ou des compléments à des questions/réponses existantes.

Nous espérons que cette FAQ saura répondre à un maximum de vos questions. Nous vous en souhaitons une bonne lecture.

L'équipe Assembleur de Developpez.com.

SommaireF.A.Q. Générale (23)
précédent sommaire suivant
 

L'Assembleur est le langage de programmation de plus bas niveau. Cela signifie qu'il est très proche du matériel. À chaque instruction correspond un code machine, qui peut être compris par le microprocesseur. Le code assembleur est donc la version lisible du code machine.

Mis à jour le 8 novembre 2004 Smortex

S'il est de nos jours impensable de programmer entièrement une application en Assembleur (sauf à des fins d'apprentissage bien sûr), nombreuses situations font que l'on doit avoir recours à ce langage. C'est par exemple le cas lorsque la vitesse est un facteur critique, et que la moindre microseconde est précieuse, ou encore pour écrire un gestionnaire de démarrage (Boot-Loader), etc.

Mis à jour le 8 novembre 2004 Smortex

Tout ce qui doit être optimisé au niveau de la taille (si on n'a que 523 octets de mémoire, par exemple, cas de certains microcontrôleurs), de la vitesse d'exécution, ou ne peut être fait avec autre chose que de l'Assembleur (par exemple, un driver de disque dur).

Mis à jour le 8 novembre 2004 Smortex

La plupart des langages évolués permettent d'utiliser l'Assembleur dans les programmes. La syntaxe à utiliser est dépendante du langage et du compilateur utilisés.

Par exemple, sous Delphi (et plus généralement, en Pascal) :

Code delphi : Sélectionner tout
1
2
3
4
  
asm 
{ code en assembleur } 
end;
En C :

Code cpp : Sélectionner tout
1
2
3
4
  
asm { 
/* Code en assembleur */ 
}

Mis à jour le 8 novembre 2004 Smortex

Il y a deux méthodes. La première, qui fonctionne dans tous les cas, est de compter le nombre de cycles d'horloge nécessaires à l'exécution de chaque instruction (dans la documentation du microprocesseur/microcontrôleur). Une fois que l'on connaît le nombre de cycles d'horloge nécessaires, il suffit de le multiplier par la période d'un cycle d'horloge interne (qui est généralement différente de la période de l'horloge du composant).
Par exemple, sur un 68HC11 (un microcontrôleur de Motorola), on a :

Code asm : Sélectionner tout
1
2
3
  
LDAA #$FF ; 2 cycles 
STAA PORTB ; 2 cycles
2+2 = 4
Quartz à 20 MHz, fréquence interne : 20 / 4 = 5MHz
Période : 1/(5*10^6) = 500*10^-9 = 500ns
4 * 500 = 2µs

La seconde méthode n'est utilisable que si elle est supportée par votre micro. Elle consiste à utiliser les instructions spécifiques à votre micro permettant de mesurer les durées d'exécution.

Mis à jour le 8 novembre 2004 Smortex

Il faut utiliser la fonction logique XOR. En effet, si on a deux registres A et B dont on souhaite échanger les données, et que l'on fait :

Code : Sélectionner tout
1
2
3
4
 
A <- A xor B 
B <- B xor A 
A <- A xor B
On remarque que A contient la donnée initiale de B et B celle de A (bien sûr, ça n'est pas utile si le micro possède une instruction pour le faire... Mais sur un petit micro RISC, si on est à un octet près, c'est utile).
Par exemple, sur x86, pour échanger ax et bx :

Code asm : Sélectionner tout
1
2
3
4
  
xor ax,bx 
xor bx,ax 
xor ax,bx

Mis à jour le 8 novembre 2004 Smortex

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.