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 :

Lancer un prog du DD à partir d'un autre prog


Sujet :

Assembleur

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut Lancer un prog du DD à partir d'un autre prog
    Salut à tous,

    Je voulais savoir comment je pouvais lancer le programme 'toto2.exe' à partir de mon programme 'toto1.exe' à partir du DD dans un premier cas (puis à partir d'une disket dans un deuxième cas)

    Est-ce que le fait que je sois en Rmode ou en Pmode soit important ?

    Est-ce-que le fait que toto1 ou toto2 soit un exécutable est important ?

    Est-ce-que le fait que l'un soit en 16bits et l'autre en 32bits est important ?

    Merci d'avance
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    (extrait de la Bible PC, 4ème édition, page 1386)


    Interruption 21h, Fonction 4Bh, Sous-fonction 0
    EXEC: Executer un autre programme DOS (à partir de 1.0)

    Cette fonction permet à un programme d'en faire executer un autre de façon à ce que l'exécution du premier programme reprenne dès que l'exécution du second programme sera achevée. A cet effet, il faut transmettre à la fonction le nom du programme à executer ainsi que l'adresse d'un bloc de paramètres qui contienne les informations dont la fonction a besoin.

    ...

    Tu peux trouver les détails de cette fonction sur ce site: http://www.chez.com/pageasm/docs/dos/int.htm

    C'est une fonction DOS, donc en mode réel. Quand tu dis 'toto1.exe', je suppose que c'est un programme DOS 16 bits. Cette fonction ne te permettra pas d'exécuter autre chose ..Tu ne pourras pas lancer un prog. windows (32 bits) ou elf.

    Tu ne peux pas exécuter ce genre de fonction en mode protégé, à moins d'être en vm86 avec DOS chargé.

    Voilà.
    golem
    +++

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    merci golem pour cette solution. Mais en existe-t-il une autre sans être obligé d'utiliser le mode DOS ??? Ou est-ce vraiment dépendant de l'OS ???
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    Etant donné que ton exe a été compilé/linké pour telle ou telle plateforme, il fonctionnera sur cette plateforme et pas une autre, à moins que celle ci supporte plusieurs types de binaires (linux ...). DOS ne sait exécuter que des exe DOS 16 bits. Windows ne sait executer que du DOS 16 bits et du 32 bits spécifique à Windows. Si tu cherches à lancer un executable DOS, tu es obligé d'avoir une couche DOS quelque part car ce dernier contient les fonctions d'execution, de gestion mémoire, etc. nécessaires à l'executable DOS.

    Si tu écris toi même un os (en mode réel ou protégé, c'est ton choix) c'est autre chose. Tu peux charger n'importe quel type d'exe à condition que ton os le supporte! Ca veut dire que ton os est muni d'un LOADER (la fonction que j'ai citée dans le précédent message fait précisemment appel au loader du dos (exec)), capable de créer un espace mémoire pour contenir le code, les données et la pile de ton executable. Tu peux très bien envisager de charger un exe DOS dans ton os (en mode vm86 si t'es en mode protégé) et l'executer (éventuellement en concurrence avec d'autres tâches, pourvu que ton scheduler le supporte ...).

    Mais en existe-t-il une autre sans être obligé d'utiliser le mode DOS ??? Ou est-ce vraiment dépendant de l'OS ???
    bah je dirais que oui, c'est dépendant de l'os ...

    golem
    +++

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    Merci bien golem, maintenant tout est clair, du moins pour lancer un exécutable à partir d'un autre.

    Mais, si en créant son propre compilateur-assembleur, est-ce que mes programmes ne seraient pas exploitable sous linux ET sous DOS si je n'utilise pas d'interruptions DOS ???
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    il y a un problème important, Linux est en 32 bits, en dos en 16 bits. Bon, mais ca doit pouvoir se résoudre. Mais tu ne pourra sous linux ni utiliser de fonctions dos ni de fonctions du bios. Euh, si tu regarde les possibilités qu'il reste a ton programme ca va etre reduit non ?

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    euh, là je comprends pas trop. Pourquoi les ints BIOS ne sont pas accessibles sous linux ??? Elles ne sont pas créées lors du démarrage du PC, donc du BIOS ???

    Dans un autre sens, je ne suis pas un utilisateur des ints, je préfère adresser directement les mémoires soit par des 'mov' soit par des 'out' mais est-ce-que cette méthode reste toujours valable (exemple: B800 le segment pour la vidéo si je me souvient bien vu que j'ai pas mes notes avec moi).
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    mais parce que, dès que tu es en mode protégé, les ints sont toutes réecrites. D'autre part, l'autre oncoveniant du point de vue "programme", du mode protégé, est que tu ne peux pas acceder a toute la mémoire, donc B800 ou A000 ne seront pas accessibles directement

  9. #9
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    OK, je ne savais pas que linux était en Pmode.

    Et d'après ce que tu me dis, je ne pourrais utiliser que des "in" et "out" dans ce cas. Je suppose qu'en plus, il y a les règles de priorité (ring) à respecter ?

    Si c'est le cas, je comprends pourquoi il y a temps de gens qui veulent créer leur OS.
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Euh,je crois que pour les in/out ca pose pas de problèmes. ('suis pas sur de moi) Des règles de priorité pour quoi ?

  11. #11
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    Je sais que pour le Pmode, il y a les rings. Donc je suppose que si je veux adresser la mémoire (B800) directement, il faudrait que je soit en ring0 ou est-ce que ça dépend là encore de l'OS qui permettrait ou non d'accéder directement à la mém ?
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  12. #12
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    linux, windows non plus d'ailleurs, ne te laisseront pas accéder à la mémoire vidéo en mode user (le moins privilégié, en général ring 3) tout simplement parce que tu risques de rentrer en conflit avec leurs propres drivers pour l'affichage. Si tu souhaites écrire toi meme ton driver de périphérique vidéo, l'os te donnera en général les droits ring 2 ou ring 1 (mais rarement ring 0 (mode noyau) à mon avis, mais c'est à vérifier), et là tu pourras accéder librement à la mem vidéo.

    C pareil pour les in et out. L'os doit explicitement te donner les droits pour pouvoir executer ces instructions. Cela fait partie du mécanisme de protection en pmode. C pour ça qu'il est beaucoup plus facile de flinguer un os en mode réel (DOS par exemple) qu'un os en mode protégé avec ce genre d'instructions.

    golem
    +++

  13. #13
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut [resolu]lancer un prog du DD à partir d'un autre prog
    Merci les gars pour toutes ces infos. Maintenant j'ai du boulot sur le dos
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/03/2009, 07h39
  2. Lancer une commande isql à partir d'un autre poste
    Par doudou10000 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/10/2005, 15h43
  3. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23
  4. Réponses: 13
    Dernier message: 01/10/2004, 14h03
  5. Réponses: 2
    Dernier message: 21/07/2003, 12h22

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