IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

[Débutant] Quel Assembleur utiliser avec mon processeur AMD Athlon 64 ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [Débutant] Quel Assembleur utiliser avec mon processeur AMD Athlon 64 ?
    Bonjour à tous.

    Après quelques navigations sur le web et par curiosité, j'ai décidé de m'intéresser à l'assembleur.

    Seulement après avoir acheté "Assembleur X86" de Kip Irvine et après 20 non compilation du premier exercice à cause d'erreurs incompréhensibles à mon niveau je me suis dis que ça venais de mon processeur qui ne devait pas respecter l'architecture x86.

    Alors c'est là que je me tourne vers vous.
    J'ai un AMD Athlon 64 Processor 3500+ donc:
    1 - faut-il que je me tourne vers de l'assembleur 64 bits ou le 32 bit ?
    2 - faut-il que je me tourne vers un jeu d'instruction spécifique aux AMD ?

    Et sans vouloir abuser de la générosité de la personne qui prendrait le temps de me répondre, j'aimerais qu'on m'enlève quelques doutes.

    3 - Existe t-il une syntaxe spécifique pour chaque editeur / compilateur (actuellement j'utilise AsmEditor)
    4 - Si je fais un code assembleur pour importer dans du C / C++, faut-il que je prévois le même code pour les différents types de processeur que peut utiliser le client ?

    Encore merci pour celui qui prendrait le temps de répondre.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Citation Envoyé par cryosore94 Voir le message
    Seulement après avoir acheté "Assembleur X86" de Kip Irvine et après 20 non compilation du premier exercice à cause d'erreurs incompréhensibles à mon niveau je me suis dis que ça venais de mon processeur qui ne devait pas respecter l'architecture x86.
    Hmm. Non. Si tu travailles sur PC, ton processeur respecte forcément l'architecture x86, ne serait-ce que pour faire fonctionner les programmes déjà compilés. Poste un morceau de ton code ici avec les messages d'erreurs que tu rencontres, on tâchera de t'aider.

    Alors c'est là que je me tourne vers vous.
    J'ai un AMD Athlon 64 Processor 3500+ donc:
    1 - faut-il que je me tourne vers de l'assembleur 64 bits ou le 32 bit ?
    2 - faut-il que je me tourne vers un jeu d'instruction spécifique aux AMD ?
    C'est encore un peu tôt pour choisir de se consacrer exclusivement au 64-bits. La majeure partie du parc actuellement en service ne gèrent encore que le 32-bits et les nouveaux processeurs gèrent les deux modes.

    3 - Existe t-il une syntaxe spécifique pour chaque editeur / compilateur (actuellement j'utilise AsmEditor)
    4 - Si je fais un code assembleur pour importer dans du C / C++, faut-il que je prévois le même code pour les différents types de processeur que peut utiliser le client ?
    Oui. L'assembleur est tout en bas de la pile des langages. Chaque architecture a un jeu d'instruction qui lui est propre. C'est vrai si tu comptes porter ton programme vers des machines telles que Sparc, ou autres.

    Toutefois, si tu programmes pour x86, tu n'auras pas besoin de te demander si c'est un Intel ou un AMD qui fonctionne sur la machine concernée, ni quel est son modèle, sauf compatibilité ascendente, bien sûr (certaines instructions ne sont apparues qu'avec certains modèles). Cela dit, en termes de performances, les meilleures approches diffèrent en fonction du modèle. C'est pour cela que l'on s'en remet de plus en plus aux compilateurs de plus haut niveau. Mais si tu débutes, tu n'as pas besoin de t'en soucier pour le moment.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Bonjour

    eulement après avoir acheté "Assembleur X86" de Kip Irvine et après 20 non compilation du premier exercice à cause d'erreurs incompréhensibles à mon niveau je me suis dis que ça venais de mon processeur qui ne devait pas respecter l'architecture x86.
    Venant d'un AMD, ça m'étonnerait. Essaye de poster le résultat de tes compilations.

    J'ai un AMD Athlon 64 Processor 3500+ donc:
    1 - faut-il que je me tourne vers de l'assembleur 64 bits ou le 32 bit ?
    2 - faut-il que je me tourne vers un jeu d'instruction spécifique aux AMD ?
    Avec ce processeur, tu peux faire du 16, 32 et 64 bits. Le 16 bits est totalement dépassé maintenant, donc je te conseillerai de commencer en 32 bits (aux gourous du forum de confirmer). Je suis presque sûr que AMD et Intel ont le même jeu d'instruction "classique" et que seules les instructions spécifiques aux multimédia diffèrent; toutefois, tu ne les utiliseras pas au début.

    3 - Existe t-il une syntaxe spécifique pour chaque editeur / compilateur (actuellement j'utilise AsmEditor)
    Les éditeurs n'ont pas de syntaxe, ils ne font qu'afficher du texte, le colorier et l'envoyer à l'assembleur (en gros). Par contre, si la syntaxe des principaux assembleurs est relativement similaire, il y a toutefois de légères différences, donc attention. Il me semble que AsmEditor utilise FASM par défaut, qui a une syntaxe assez proche de TASM/MASM.

    4 - Si je fais un code assembleur pour importer dans du C / C++, faut-il que je prévois le même code pour les différents types de processeur que peut utiliser le client ?
    De toute manière, il te faudra recompiler le programme assembleur pour chaque famille de processeur (x86_64, ARM, PIC, 68k, Z80) (et non pour chaque processeur) et le programme en général pour chaque famille d'OS (BSD, Linux, Unix, Windows, OS/2, MacOS,...).

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Alors voici le code en lui même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    TITLE Addition et soustraction (addSub.asm)
     
    ; Addition et soustraction d'entiers sur 32 bits
     
    .386
    .MODEL flat,stdcall
    .STACK 4096
     
    ExitProcess PROTO,dwExitCode:DWORD
    DumpRegs PROTO
     
    .code
    main PROC
     
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
    call DumpRegs
     
    INVOKE ExitProcess,0
    main ENDP
    END main
    Compilé comme tel il me dit :

    >> Exécution de C:\Program Files\Astase\AsmEditor\Fasm\Fasm.exe "C:\Exercices assembleur\AddSub.asm" "C:\Exercices assembleur\AddSub.com"
    flat assembler version 1.41
    C:\Exercices assembleur\AddSub.asm [1]:
    TITLE Addition et soustraction (addSub.asm)
    error: illegal instruction.
    Code de sortie de Fasm.exe : 1
    Si je met TITLE en commentaire, il me sort :

    >>
    >> Exécution de C:\Program Files\Astase\AsmEditor\Fasm\Fasm.exe "C:\Exercices assembleur\AddSub.asm" "C:\Exercices assembleur\AddSub.com"
    flat assembler version 1.41
    C:\Exercices assembleur\AddSub.asm [5]:
    .386
    error: illegal instruction.
    >> Code de sortie de Fasm.exe : 1
    Bref, que des illegal instruction.

    Sinon si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ; TITLE Addition et soustraction (addSub.asm)
     
    ; Addition et soustraction d'entiers sur 32 bits
     
    INCLUDE Irvine32.inc
     
     
    .code
    main PROC
     
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
     
    exit
    main ENDP
    END main
    >> Exécution de C:\Program Files\Astase\AsmEditor\Fasm\Fasm.exe "C:\Exercices assembleur\AddSubInclude.asm" "C:\Exercices assembleur\AddSubInclude.com"
    flat assembler version 1.41
    C:\Exercices assembleur\AddSubInclude.asm [5]:
    INCLUDE Irvine32.inc
    error: invalid argument.

    >> Code de sortie de Fasm.exe : 1

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    .386 est une directive de compilation de TASM/MASM qui n'existe pas dans FASM.

    La directive TITLE m'est également inconnue... Je pense plutôt que tu as du recopier une ligne en trop .

    Ton erreur veut dire que FASM n'a pas trouvé le fichier Irvine32.inc.
    Recherche le fichier fasmw.ini et ajoutes y ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Environment]
    Include=chemin_vers_le_fichier_Irvine32.inc
    Enfin, ton code première version m'a l'air assez complexe pour additionner deux chiffres ! J'aimerais savoir ce que les boss de l'assembleur en pensent...

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par CP / M Voir le message
    La directive TITLE m'est également inconnue... Je pense plutôt que tu as du recopier une ligne en trop .
    C'est également une directive de MASM, et c'est vrai que ça faisait bien longtemps que je ne l'avais pas rencontrée.

    http://www.arl.wustl.edu/~lockwood/c...8/CH08-10.html

    Citation Envoyé par cryosore94 Voir le message
    Alors voici le code en lui même :

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     ...
    
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
    call DumpRegs
    Ici, « DumpRegs » est censé être une étiquette repérant un sous-programme qui est (probablement) chargé d'afficher à l'écran le contenu de tes registres. C'est ce programme qui doit se trouver dans le fichier à inclure. Tu n'en as pas forcément besoin, mais il te faudra au moins un débugger pour t'en passer.

    Pour le reste, tu as dû comprendre qu'il y avait d'un côté les instructions du microprocesseur proprement dit et, de l'autre, les directives d'assemblage. Ce sont des consignes insérées au milieu du programme à l'intention du compilateur. TITLE, .386, et consors en font partie, mais c'est vrai qu'elles peuvent varier d'un compilateur à l'autre.

    Enfin, globalement, la syntaxe reste pratiquement toujours la même : celle du constructeur de ton microprocesseur - en l'occurence, la syntaxe Intel - mais il arrive que certains projets (GNU) embarquent de l'assembleur inline au sein d'autres langages et utilisent notamment la syntaxe AT&T. Il faut le savoir mais tu ne la rencontreras pas avant un certain temps.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Citation:
    Envoyé par CP / M
    La directive TITLE m'est également inconnue... Je pense plutôt que tu as du recopier une ligne en trop .

    C'est également une directive de MASM, et c'est vrai que ça faisait bien longtemps que je ne l'avais pas rencontrée.

    http://www.arl.wustl.edu/~lockwood/c...8/CH08-10.html
    Mes plates excuses...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    En suivant vos conseils, je me suis restreins à l'essentiel à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INCLUDE '../INCLUDE/Irvine32.inc'
     
    mov eax,1000h                     ; EAX = 1000h
    add eax,4000h                     ; EAX = 5000h
    sub eax,2000h                     ; EAX = 3000h
    call DumpRegs
    call DumpRegs étant une étiquette d'un sous programme d'Irvine32 permettant l'affichage des registres ... qui lui aussi me pose probleme (Instructions invalides dans le fichier .inc)

    Existe t-il une méthode d'affichage des registres (ou au moins du registre EAX) que je pourrais implémenter directement dans mon fichier ?

    Est ce grave de pas mettre .code , main PROC, main ENDP, END main
    qui sont des directives d'assemblage ?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Est ce grave de pas mettre .code , main PROC, main ENDP, END main
    qui sont des directives d'assemblage ?
    Sous FASM, main PROC, main ENDP END main ne servent à rien. Et .code n'est utile que dans des programmes multi-segments, tu le verras en temps et en heure.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bon je crois que j'arrive au bout de mes forces.

    Après avoir essayé FASM et les codes sous les 2 versions et moultes paramétrage, ça ne veux toujours pas compiler.

    Je me suis orienté vers MASM (car l'auteur de "Assembleur x86 utilise celui la) et même avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    ; TITLE addition et soustraction
     
    ; Addition et soustraction d'entiers sur 32 bits
     
    .386
    .MODEL flat,stdcall
    .STACK 4096
     
    ExitProcess PROTO,dwExitCode:DWORD
    DumpRegs PROTO
     
    .code
    main PROC
     
        mov eax,1000h           ; EAX = 1000h
        add eax,4000h           ; EAX = 5000h
        sub eax,2000h           ; EAX = 3000h
        call DumpRegs
     
        INVOKE ExitProcess,0
     
    main ENDP
    END main
    il me dit quand je clic sur project --> compile ressource : cannot open rsrc.res ....
    et même quand je le créer il me dit qu'il ne peut pas l'ouvrir.

    J'ai essayé de compiler même les propositions des tutoriaux fournis avec MASM ... même problème.

    Quelqu'un connaîtrait-il un tutoriel pour les GROS NUL qui explique aussi comment faire un code qui compile sans problème et voir même qui explique MASM ou FASM car là je désespère.

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Courage ! Ce n'est pas si compliqué et, en principe, tu ne rencontreras pas ces difficultés au cours du temps ! :-) Tu as trouvé MASM, c'est une bonne chose, car les directives qui te posaient problème sont celle de ce compilateur. Ça devrait déjà te faciliter les choses. Au fait, je suppose que tu travailles sous Windows.

    Je te conseille également NASM, qui a le bon goût de fonctionner sous DOS, Windows, MacOS et UNIX, d'être à jour (x86_64 inclus), disponible dans les distribs Linux, d'être gratuit, le tout en LGPL.

  12. #12
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par CP / M Voir le message
    Enfin, ton code première version m'a l'air assez complexe pour additionner
    deux chiffres !
    Oui, à moi aussi.
    Je ne sais rien en FASM, ni MASM.
    Je compile seulement avec les micros avr en plus je suis debutant.
    mais, malgré tout, il me semble que ton erreur vient de ton code
    et pas du compilateur.
    Voudrais-tu essayer cela, à voir si ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    mov eax, 1000h		;1000h	
    mov ebx, 4000h		;4000h	
    mov ecx, 2000h		;2000h	
    sub ebx, eax            ;4000h-1000h = 3000h	
    sub ebx, ecx            ;3000h-2000h = 1000h	
    call DumpRegs

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Full Stack
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Points : 37
    Points
    37
    Par défaut
    As tu déjà consulté le faq assembleur?
    ...mais le génie n'est qu'une longue patience, 5% d'inspiration et 95% de transpiration..." Thomas Alva Edison
    "..Cherchez et vous trouverez!..." Jesus


  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Premièrement désolé pour ce petit laps de temps sans réaction de ma part ( formation en informatique assez prenante )

    @Obsidian :

    Merci de continuer à m'encourager

    @Belgitaes :

    J'ai testé ton code sous masm, il compile sans problème sous MASM32 (youpi !!! ^^). Il accepte mon fichier vierge rsrc.rc quand je fais :
    Project -> Compile ressource file.
    J'en obtiens un fichier Objet nommé rsrc et un fichier .crs

    Par contre j'ai un doute si c'est bien la dessus qu'il faut cliquer finalement.
    Quand je fais un run et en testant tout mes fichiers, rien ne se lance (sauf Visual Studio sur le run de certains documents) .
    J'ai beau chercher sur le net, je ne trouve aucun document sur la génération de l'application.

    @JKane :

    As tu déjà consulté le faq assembleur?
    Même longuement, je n'aime pas solliciter des personnes quand certaines réponses sont à 3 portés de clic. D'ailleur j'ai pas mal regarder ce qu'il se faisait en assembleur (ressources / conseils / faqs / livres ) sur ce site avant de me lancer.

    ...mais le génie n'est qu'une longue patience, 5% d'inspiration et 95% de transpiration..." Thomas Alva Edison
    Citation complètement hors propos mais c'est simpa citer la réplique de créativité de quelqu'un qui a voler pas mal d'invention aux autres.

    "..Cherchez et vous trouverez!..." Jesus
    Il me semble pas l'avoir vu sur les remerciements du site de MASM ni dans mon bouquin d'assembleur.

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Maintenant on va t´expliquer ton erreur dans ton code
    pour que tu puisse comprendre l´erreur
    quand tu fait (mov eax,1000h ; EAX = 1000h)
    tu charge la valeur de 1000h dans le registre eax
    donc,maintenant ton registre a la valeur de 1000h
    apres quand tu fait, (add eax,4000h ; EAX = 5000h), voici ton erreur
    on ne peut pas additioné 4000h a eax ,puisque il vaut 1000h
    il faut d´abord chargé cette valeur dans un autre registre ,pour pouvoir additioné apres l´un et l´autre
    et la même operacion pour les soustracion

    Citation Envoyé par cryosore94 Voir le message
    Quand je fais un run et en testant tout mes fichiers, rien ne se lance (sauf Visual Studio sur le run de certains documents) .
    J'ai beau chercher sur le net, je ne trouve aucun document sur la génération de l'application.
    j´ai trouvé cela je ne sais pas si cela te servira

    http://casidiablo.net/c-crear-una-ap...visual-studio/

    tu peut traduire la page de google en francais

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    apres quand tu fait, (add eax,4000h ; EAX = 5000h), voici ton erreur
    on ne peut pas additioné 4000h a eax ,puisque il vaut 1000h
    D'accord !

    donc c'est mon bouquin que je dois jeter (enfin à 45€ il va rester pour faire beau dans l'armoire).

    Si je comprend bien, je dois donc charger mes données dans les registres 32 bits (si je manipule des données 32 bits) comme eax, ebx, ecx, et edx.
    Il ne peuvent avoir qu'une valeur à la fois et je suis obligé d'assigner une valeur avant de la manipuler !

    Si je code en 32 bits en mode réel je peux aussi utiliser ESI , EDI, EBP et ESP

    J'utilise la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub ebx, eax            ;4000h-1000h = 3000h
    pour dire de soustraire à la valeur contenue dans ebx la valeur qui est contenue dans eax.

    Je garde le registre ecx pour les compteurs de boucle.

    J'utilise un registre de pile (sauf ESP) quand je dois plier - deplier un grand nombre de valeur.

    Ça deviens beaucoup plus clair !

    Par contre le lien que tu m'à donné est pour de la compilation C# en mode console.

    j'ai essayé le lien console de la faqs en l'adaptant comme tel :
    masm addsub.asm -o mon_prog.exe
    ou
    masm32 addsub.asm -o mon_prog.exe
    ou encore
    nasm addsub.asm -o mon_prog.exe
    mais j'ai toujours le droit à un nasm / masm n'est pas reconnu comme une fonction interne ou externe

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par cryosore94 Voir le message
    J'ai beau chercher sur le net, je ne trouve aucun document sur la génération de l'application.
    Citation Envoyé par cryosore94 Voir le message
    Par contre le lien que tu m'à donné est pour de la compilation C# en mode console.
    Et Celui Ci ??

    Easy Code est l'environnement de programmation visuel fabriqué pour construire des applications Windows 32-bit.
    L'interface de l'outil ressemble à celle de Visual Basic
    et il permet de programmer des assembleurs d'application pour Windows.

    Compatible: Windows 95,98,2000,2003,Me,NT,Vista 32 bits,Vista 64 bits,XP
    http://www.easycode.cat/Spanish/index.htm
    http://translate.google.fr/translate...%3Dfr%26sa%3DN

    pointe sur le petit drapeaux Bienvenue sur la page et tu pourras le lire en francais dans la page de traducion de google

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai testé easycode, vraiment simpa !

    il aide réelement à prise en main et assez intuitif.

    J'ai rajouté ton code dans la zone concerné ce qui me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    .Const
     
    .Data?
     
    .Data
     
    hInst	HINSTANCE	NULL
     
     
    .Code
     
    start:
    	Invoke GetModuleHandle, NULL
    	Mov hInst, Eax
    	Call Main
    	Invoke ExitProcess, 0
     
    Main Proc Private
    	Mov Eax, 1000H		;1000h
    	mov ebx, 4000h		;4000h	
    	mov ecx, 2000h		;2000h	
    	sub ebx, eax            ;4000h-1000h = 3000h	
    	sub ebx, ecx            ;3000h-2000h = 1000h	
    	call DumpRegs
    	Ret
    Main EndP
     
    End start
    Il me sort juste un
    Module1.asm(24) : error A2006: undefined symbol : DumpRegs
    lors du Build project et du Compile "Nom de mon projet".

    sinon quand je fais "compile ressource" (ca doit être juste le fichier je pense) il fonctionne à merveille.

    Il me reste juste à corriger le bug du call DumpRegs et je crois que je verais enfin le bout du .exe

  19. #19
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    :wq

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Excuse moi du retard de ma réponse dapounet.

    Effectivement je ne connaissait pas du tout ce document et je te dis un gros merci pour me l'avoir communiqué

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2008, 00h56
  2. [SVN] Quel plugin utiliser avec la version 3.1
    Par pmartin8 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2006, 10h03
  3. [9i] Quel langage utiliser avec Oracle ?
    Par TheOnlyMaX dans le forum Oracle
    Réponses: 8
    Dernier message: 01/02/2006, 11h18
  4. Réponses: 2
    Dernier message: 18/06/2005, 18h14
  5. [débutant]Quel Layout utiliser
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 16/09/2004, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo