Asm sur ordinateur

Disponible uniquement sur Etudier
  • Pages : 61 (15081 mots )
  • Téléchargement(s) : 0
  • Publié le : 10 décembre 2011
Lire le document complet
Aperçu du document
4. Initiation à l'assembleur

142

Assembleur

143

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 pouvezensuite 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 somme: add eax, 4 } }

; place la valeur de x dans le registre eax ; additionne 4 à eax. ; le résultat est le contenu de eax.

Cette fonction peutensuite être appelée par un programme principal :

Assembleur

144 void main() { long resultat; resultat = maFonction(75); } Vous remarquerez en passant la structure d'une instruction assembleur. Elle est constituée d'un opcode, par exemple mov, add, etc. et d'opérandes, par exemple, eax, x, ou 4. L'opérande de gauche est appelé opérande destination et c'est là que le résultat de l'instructionsera enregistré. L'opérande de droite est appelé opérande source. On peut mettre un commentaire à la suite de l'instruction. Dans le contexte C, on utilise la syntaxe C (//). Avec un assembleur standard, on précède plutôt le commentaire d'un point-virgule (;). On ne peut avoir qu'une instruction par ligne. On peut avoir une étiquette au début d'une ligne pour identifier un énoncé, par exemple.somme:. Cette étiquette doit être suivie d'un deux-points (:). Pour les travaux pratiques du présent cours, nous n'utiliserons pas l'assembleur intégré dans le C, mais l'assembleur standard. Pour pouvoir écrire de l'assembleur, il est indispensable d'avoir une connaissance très précise de l'architecture du processeur avec lequel on travaille. Nous passons donc à une description de l'architecture duPentium III d'Intel.

Assembleur

145

2. Architecture du Pentium III
2.1 Historique
L’histoire de la famille 80x86 d’Intel commence dans les années 70 avec le 8080, un processeur de 8 bits avec un bus d’adresses de 16 bits, qui pouvait adresser un total de 64 Ko. Vers 1980, le 8086 et le 8088 font leur apparition, ce dernier avec le premier PC d’IBM. Ce sont des processeurs de 16 bitsavec un bus d ’adresses de 20 bits, qui avaient une capacité d ’adressage de 1 Mo. Le 8088 diffère du 8086 par la largeur du bus de données externe qui est de 16 bits dans le 8086 et de 8 bits dans le 8088. Toutefois, même si le bus d’adresses était de 20 bits, les registres internes d’adresses étaient toujours de 16 bits pour assurer la compatibilité avec le 8080. Comment donc accéder au reste de lamémoire? Toute la complexité des processeurs Intel vient de la solution adoptée à cette époque pour régler ce problème. On décida que l’adresse serait constituée des 16 bits des registres internes ajoutée à 16 fois le contenu d’un de quatre registres appelés registres de segment. Ces quatre registres étaient CS (Code Segment), DS (Data Segment), SS (Stack Segment) et ES (Extra Segment). Segment...
tracking img