Exemples simples de fichiers écrits avec nasm

Soyez le premier à donner votre avis sur cette source.

Vue 11 302 fois - Téléchargée 1 710 fois

Description

Cette source a pour but d'aider les débutants utilisant Nasm (et Alink)à créer différents fichiers 16 et 32 bits avec différentes extensions. Quand on débute il est difficile de trouver les bonnes déclarations à faire pour créer des fichiers ne plantant pas à la compilation.
Les différents formats proposés sont:
.com (16bit compilé directement en exécutable - implantation en 100h)
.sys (idem ci dessus mais implanté en 00h)
.exe 16bits (compilation en .obj et linkage en .exe)
.exe 32bits - format PE (compilation en .obj et linkage en .exe)
.dll 32bits - format PE-dll (compilation en .obj et linkage en .dll) avec un executable utilisant la dll

D'autre possibilités existent mais je ne les ai pas testé (par exemple créer un .com via un fichier .obj)

Conclusion :


Cette source est peut-être à ranger dans la catégorie Tutoriels mais il faudrait que j'étoffe un peu plus.

Remarque le fichier appdll.exe appelle la dll madll.dll mais la version exécutable ne marchera probablement pas sur votre PC car le chemin de la dll est code "en dur". Il faudra corriger le chemin dans le fichier source et recompiler.

Bonne programmation.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
19 juil. 2007 à 09:24
Bonjour GOKUDO,

Tu peux trouver des informations complémentaires sur les modes de compilations dans la source suivante
http://www.asmfr.com/codes/CREATION-DIFFERENTS-EXECUTABLES-AVEC-NASM-ALINK_37036.aspx

A+
gokudo Messages postés 22 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 18 août 2009
19 juil. 2007 à 09:07
j'ai rien compris mais ça a l'air interessant. je vai apprendre un pe et venir vous embeter avec mes questions ^_^. merci beaucoup nasman pour c tuto.
roygrizzly Messages postés 17 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 11 mai 2006
3 mai 2006 à 14:28
je viens de comprendre ton code, en faisant :
push dword 0x00000031
push dword 0x39393939
j'obtient 99991 !!

merci
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
3 mai 2006 à 13:45
Tu n'est pas obligé de stocker ta chaine a une adresse précise, tu peux la mettre sur la pile et indiquer son adresse pour la MessageBox

printf: ;esp pointe sur l'adresse de retour (le ret qui suit le call printf)
lea eax,[esp+4] ;eax vaut esp+4
push byte 0
push dword Titre ;le titre est dans les data
push eax ;la chaine à afficher est dans la pile
push byte 0
call [MessageBoxA]
ret 8 ;dépile les données après le retour à main (deux dword)
;--------------------------

main:
push dword 0x0072756F ;chaine "our",0
push dword "Bonj"
; met Bonjour dans la pile, on peut aussi le faire avec des
; sub esp,8 ;reserve 8 octets
; mov [esp],dword "Bonj"
; mov [esp+4],dword 0x0072756F
call printf
ret
segment data public use32 class=DATA
Titre db "Affichage des messages :",0

A+
roygrizzly Messages postés 17 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 11 mai 2006
3 mai 2006 à 13:26
cool, ça marche, merci beaucoup, pour afficher un 0 j'ai juste à faire :
push dword 0x00000030
pour 10:
push dword 0x00003031
pour les négatifs:
push dword 0x0000312D
avec ce système on peut aficher un chiffre entre -999 et 9999
il faudrais concaténer plusieurs dword si le chiffre est grand (ou petit si négatif)
je vais essayer de programmer ça en C vu que c'est le boulot du compilateur

merci
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.