Apprendre à programmer en Assembleur avec Visual C++

Le but de ce tutoriel est de vous apprendre à programmer en langage Assembleur avec l'EDI Visual C++.

Pour réagir au contenu de ce tutoriel, un espace de dialogue vous est proposé sur le forum.

Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

J'ai fait ce tutoriel pour vous montrer que l'on peut faire une application 100 % en Assembleur(x86) avec Visual C++.
Visual C++ est en fait livré avec MASM, le macro assembleur de Microsoft et qui plus est, dans sa dernière version. Avec donc les toutes dernières instructions des derniers microprocesseurs. Vous n'avez donc rien à installer (à part Visual C++ bien sûr). Ce n'est pas génial tout cela. Le mode opératoire de ce tutoriel sera basé sur Visual C++ express 2010.

II. Le mode opératoire

Après avoir ouvert l'EDI de Visual C++, vous devrez créer un projet vide.
Dans le dossier du projet, vous devrez créer un fichier texte, que l'on va nommer « main.asm » (on aurait très bien pu lui donner un autre nom).

Ensuite, dans l'explorateur de solutions de Visual C++, faites un clic droit sur le projet, et dans le menu contextuel sélectionnez « Ajouter » puis « Élément existant ».

Ce qui nous ouvre une boîte de dialogue d'ouverture de fichier. Vous sélectionnez le fichier « main.asm » précédemment créé et faites « Ajouter ». Le fichier fait dorénavant partie du projet et est bien présent dans l'explorateur de solution de Visual C++.

Image non disponible
Image non disponible

Ce n'est pas terminé, il nous faut apporter des informations supplémentaires de configuration pour appeler masm et pour l'édition des liens.

Pour cela, dans l'explorateur de solutions, faites un clic droit sur le fichier « main.asm » puis, dans le menu contextuel, cliquez sur « propriétés ». Cela ouvre la fenêtre de propriétés du fichier.

Ensuite, dans la page de propriétés, sélectionnez « Général » dans l'arborescence, et positionnez la propriété « Type d'élément » à « Outil de génération personnalisé ». Ensuite, faites « Appliquer », ce qui a pour effet de rouvrir la page de propriétés avec des options supplémentaires.

Image non disponible

Dans l'arborescence de la page de propriétés, sélectionnez « Outil de génération personnalisé » puis « Général ».

Dans cette section nous allons modifier deux propriétés :

  • « Ligne de commande » avec : ml /c /coff « main.asm » (c'est la ligne de commande pour assembler main.asm avec masm) ;
  • « Sortie » avec main.obj (c'est le nom du fichier de sortie à envoyer à l'éditeur de liens).

Validez les modifications par le bouton « Ok ».

Je vous mets un petit code pour vos tests. Ce code fait appel à deux fonctions de la libc, « puts » et « printf ».

Ces deux fonctions nécessitent d'ajouter la bibliothèque « msvcrt.lib » dans les dépendances du projet (option de l'éditeur de lien).

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
.386
        .model flat, C    

EXTRN   _imp__puts:PROC
EXTRN   _imp__printf:PROC
 
.data 

Ch1 DB 10, 'Hello !', 10, 0 
Ch2 DB 'Le chiffre %d', 10, 10, 0                   

.code

main    PROC                                            

        push OFFSET Ch1
        call DWORD PTR _imp__puts
        pop eax
        
        push 100
        push OFFSET Ch2
        call DWORD PTR _imp__printf
        add     esp, 8

        xor     eax, eax
        ret

main    ENDP

END

Vous pouvez dorénavant générer votre projet et main.asm sera assemblé par masm et le fichier .obj lié comme si cela était un fichier C ou C++.

Les messages d'erreur s'affichent dans la fenêtre de sortie comme pour un fichier C ou C++.

Faire un programme 100 % assembleur est d'un autre temps, par contre vous pouvez utiliser le même principe pour faire une bibliothèque de fonctions écrite en assembleur.

Bonne lecture,

CGi.

III. Conclusion et remerciements

Nous tenons à remercier FRANOUCH pour la relecture orthographique et Malick SECK pour la mise au gabarit.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2016 CGi. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.