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

Assembleur Discussion :

Débuter en Assembleur


Sujet :

Assembleur

  1. #21
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Non, je suis obliger de changer ds, car il pointe a un autre endroit que le segment ou se trouve mon code(J'ai esseiller, et j'aterit sur un autre endroit de la mémoire)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  2. #22
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Tu peux nous montrer le programme complet s'il te plaît ?
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  3. #23
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Le code est précèder de Format MZ
    Sinon c'est la même chose.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  4. #24
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Désolé (j'ai peut-être raté un message) mais je n'ai pas vu de code presque complet posté par toi...

    De toute façon ce sera beaucoup mieux d'avoir le code complet, on aura une vue d'ensemble, parce jusque là je n'arrive pas très bien à me représenter ton programme...
    Poste-le s'il te plaît (à moins que je l'ai raté bien sûr).
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  5. #25
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je ne l'ai aps poster, c'est sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Format MZ
    mov  ah, 09h
    mov  dx, Message
    int  21h
    db message "blablabla"
    (Oui je n'en suis pas encore a faire des programmes fonctionnels ^^)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  6. #26
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Ton code est un peu contradictoire...

    Le "Format MZ" demande à FASM de créer un exe DOS.
    Seulement, pour commencer, on veut simplement créer un com (attention fais bien la différence, le fichier de sortie d'un com peut très bien avoir l'extension .exe ou .com, ne te mélange pas les pinceaux, ce n'est pas parce que le fichier de sortie a l'extension .exe que tu fais un exe DOS...).

    Donc pour commencer on va plutôt essayer un com :
    -Il faut que tu enlèves le "Format MZ"
    -Et il faut que tu rajoutes "Org 100h' au début du code
    Cette org 100h demande à FASM de décaler toutes les adresses de ton programme de 256 octets (100h) pour laisser la place au PSP créé par le DOS (si tu ne sais pas trop ce que c'est contente toi juste de mettre 'Org 100h' pour l'instant).

    Ensuite ton code modifié comme cela afficherait bien le message, mais ensuite un énorme bug appraîtrait : ton Message db "blablabla" est déclaré juste après l'appel à l'int 21h, et rien ne demande au programme de s'arrêter, le processeur va donc continuer tranquillement et interpréter ton 'message' comme du code machine ! C'est un très bon moyen pour planter l'ordi !
    De plus tu as oublié le caractère '$' qui doit terminer tout message affiché à l'acran par le DOS (ce caractère ne sera pas affiché).

    Si tu travailles sous une version Windows à partir de Win 2000 (je crois) tu ne risques rien car il y a un émulateur de DOS qui arrêtera ton prog buggé (enfin en principe, on est jamais certain c'est MS...).

    Donc il faut appeler une Int pour terminer le prog (l'Int 20h ne fonctionne que pour les com, il vaut mieux utiliser l'Int 21h --> 4C00h de toutes façon)
    Accessoirement on rajoute aussi un appel à l'Int 21h-->08h pour avoir le temps de voir le message^^.

    Donc au final :
    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
                org         100h
     
                mov         dx, Message   ;L'adresse est calculée par rapport
                                          ;au segment par défaut de la variable
     
                mov         ah, 09h       ;Int 21h, service 09h
                int         21h           ;Affichage d'un message terminé
                                          ;par le caractère '$'
     
                mov         ah, 08h       ;Pour qu'on ait le temps de voir les
                int         21h           ;messages^^. Ce service attend qu'une
                                          ;touche clavier soit pressée
     
                mov         ax, 4C00h     ;Int pour terminer le programme
                int         21h
     
      Message   db          'Hello World !', '$'
    Voilà !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  7. #27
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    En fait, je n'ai plus le code, mais oui il y avais bien l'interuption d'aret, et le $ a la fin(Même que j'ai préfèrer mêtre "chaine",XXh, sauf que la le n° ne me revien pas de tête...)
    Bref, c'était bien un exe que je voulais faire, mais avec un même segment pour le code et les données(je ne savais pas déclarer plusieures segments)
    Donc, il n'y a pas de org, et il y a bien un format mz.

    Mais bon, c'est un peut batailler pour demender comment faire une chose a ne pas faire...
    Sinon, tu ne conaitrais pas des cours/tutos pour apprendre l'asm avec la syntaxe fasm?
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

Discussions similaires

  1. Tutoriels pour débuter en Assembleur
    Par Alcatîz dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/03/2013, 17h50
  2. Comment débuter avec l'Assembleur ?
    Par deessemba dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 16/10/2010, 15h17
  3. Assembleur : quel cours choisir pour débuter ?
    Par Débutant_ASM dans le forum Assembleur
    Réponses: 3
    Dernier message: 26/02/2010, 18h36
  4. Pour débuter : tutoriel et choix d'un assembleur
    Par damien77 dans le forum Assembleur
    Réponses: 9
    Dernier message: 25/06/2007, 23h01
  5. Débuter l'Assembleur sous Windows XP
    Par Bibouda dans le forum Assembleur
    Réponses: 2
    Dernier message: 03/12/2005, 02h41

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