143
Assembleur
1. Introduction
Pour mieux comprendre la structure interne d'un ordinateur, nous aborderons la langage
d'assemblage d'un processeur contemporain, le Pentium III d'Intel. Le but du cours n'est
donc pas de faire de vous des programmeurs en assembleur.
Qu'est-ce que l'assembleur ou le langage d'assemblage ? Pour obtenir une réponse à cette
question, nous vous recommandons de lire à ce stade-ci le chapitre 13 du volume de
Zanella et Ligier.
Nous utilisons pour ce cours l'assembleur Masm32 de Microsoft disponible gratuitement
sur le Web à l'adresse suivante :
http:;www.pbq.com.au/home/hutch/masm.htm.
Comme débogueur, nous recommandons le Enhanced Debugger d'Intel, également
disponible gratuitement à l'adresse suivante :
http:;developer.intel.com/vtune/compilers/cpp/demo.htm.
Il est fourni avec le compilateur C/C++ 4.5 que vous pouvez utiliser avec Visual Studio
de Microsoft si le cœur vous en dit.
Vous pouvez également faire de l'assembleur dans le cadre d'un compilateur C/C++,
comme dans Visual C/C++ de Microsoft. Dans ce cas, vous créez une fonction en C ou
en C++, puis vous y insérez la commande _asm { }. Vous pouvez ensuite insérer entre
les accolades autant d'instructions assembleur que vous désirez. Il faut donc déclarer la
fonction comme si c'était une fonction C, puis faire la déclaration en question comme
suit :
long maFonction (long x)
{_asm
{mov eax, x ; place la valeur de x dans le registre eax
somme: add eax, 4 ; additionne 4 à eax.
}; le résultat est le contenu de eax.
}
Cette fonction peut ensuite être appelée par un programme principal :