Assembleur 64 avec le compilateur nasm
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Les outils

Aller en bas

Les outils Empty Les outils

Message par Admin Lun 28 Nov - 21:57

Pour créer les sources des programmes, je n'utilise pas d'atelier logiciel compliqué. Je me contente d'utiliser notepad++ .

Nous utiliserons le compilateur nasm disponible gratuitement à l'adresse : http://www.nasm.us/.
Vous y trouverez aussi un forum (en anglais) et la documentation au format html ou au format PDF.
Installez le compilateur sur votre ordinateur et créez un répertoire pour le développement.
Dans un premier temps, pour compiler il faudra créer un fichier .bat avec la commande suivante en changeant à chaque fois le nom du programme.
Code:

<Répertoire principal>\Assembleur\nasm\nasm.exe -f win64  hello.asm -l hello.txt
L'option -f win64 permet de créer un objet au format windows 64 bits.
L'option -l permet de créer un listing de compilation mais n'est pas obligatoire.

Pour le linker, nous utiliserons golink de  Jeremy Gordon    disponible à l'adresse : http://www.godevtool.com/.
Vous y trouverez d'autres logiciels et la documentation de golink.
Mais il existe aussi d'autres linker permettant l'utilisation des fonctions des DLL windows.
La commande de base pour l'utiliser est la suivante :
Code:

<Répertoire principal>\linker\Golink hello.obj   /console   Kernel32.dll User32.dll Gdi32.dll /entry:Main
Bien entendu le nom de l'objet (hello.obj) doit correspondre au nom du source de la commande précédente (hello.asm).
L'option /console permet de faire apparaitre la console qui affichera éventuellement les messages d'erreur ou de débogage.
Ensuite figurent le nom des principales DLL de windows. Il sera nécessaire par la suite d'ajouter des DDL en fonction du type de programme.
L'option /entry indique au linker le nom de la procédure maître : ici c'est Main mais elle peut s'appeler autrement.

Après l'installation, il faut écrire le petit programme classique ci dessous, le sauvegarder sous le nom hello.asm, lancer la compilation et le linker avec les commandes précédentes puis exécuter le programme en cliquant sur le hello.exe généré.  Éventuellement, il faudra corriger les erreurs de saisies !!
Code:

;programme fenetre windows en 64 bits
global Main
extern ExitProcess,MessageBoxA     ; fonction API windows

section .data
szTitre:  db 'Win64', 0
szMsg:    db 'Hello world!', 0

section .text
Main:
    sub rsp, 28h  
    mov rcx, 0       ; handle  fenêtre
    lea rdx,[szMsg]    ; adresse du message
    lea r8,[szTitre]   ; adresse du titre de la fenêtre
    mov r9d, 0       ;  type du message : OK
    call MessageBoxA

    mov  ecx,eax     ; code retour avec le code retour de MessageBoxA
    call ExitProcess  ; fonction de fin du programme


A l’exécution, vous devez avoir l'affichage du message avec la console en arrière plan :

Les outils Imageh10

Sur cette image, vous voyez aussi les fichiers générés par la compilation : hello.obj et hello.txt.
Admin
Admin
Admin

Messages : 38
Date d'inscription : 28/11/2016

https://assembleur64.kanak.fr

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum