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 16-bits Assembleur Discussion :

Programme ASM compilé en .EXE pour amorcer sur HDD


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut Programme ASM compilé en .EXE pour amorcer sur HDD
    Bonjour à tous,

    Je me suis créé un CD amorçable basé sur MS-DOS, me permettant de lancer différentes applications (Drive Image, Partition Magic...) via un menu géré par la commande CHOICE.

    Mon souhait est d'ajouter une commande me permettant d'amorcer sur le 1er HDD (utile si CD toujours inséré dans le lecteur), toujours via mon menu, je pense qu'en ASM cela doit être possible, mais je ne connais RIEN à ce langage, quelqu'un aurait-il la gentillesse de me compiler un .EXE s'exécutant sous MS-DOS, afin d'amorcer mon 1er HDD ?!

    Merci d'avance @+

  2. #2
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    un boot ne se fait pas en .exe
    c'est un pur fichier binaire, il mesure 512 octets sur un HDD
    et c'est pas tres dur a faire
    par contre, la partie gestion du systeme de fichier, c'est une autre paire de manches

  3. #3
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Si j'ai bien compris, Sebio veux pouvoir lancer le BOOT de son disque dur
    APRES que son PC ait boote sur le CD-ROM

    Je ne sais pas si le fait de charger le boot a la bonne adresse (me rappelle
    plus l'adresse du chargement du boot desole) et faire un JMP fonctionnerait

    a+ Francois

  4. #4
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    org 7C00h

    et non, un jmp ne suffit pas
    il faut faire un programme de chargement dans un systeme de fichier
    et enfin, un jmp far

  5. #5
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Bonsoir à tous,

    Merci beaucoup pour vos réponses c'est chouette de ne plus se sentir seul !!!

    Si j'ai bien compris, Sebio veux pouvoir lancer le BOOT de son disque dur
    APRES que son PC ait boote sur le CD-ROM
    Oui Forthman c'est exactement ça, j'ai vu que c'était possible grâce au CD de boot Modboot (voir lien ici) au démarrage de celui-ci, il y a une option pour démarrer sur le 1er HDD (voir photo ci-dessous), j'aimerai simplement pouvoir le faire, mais sous MS-DOS (Modboot = noyau Linux) !!!



    @+

  6. #6
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    c cool, ce truc ça se grave simplement sur cd, et ça gere tout?
    est ce que c'est opensource?

  7. #7
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Oui c'est open source mais les softs sont évidemment à rajouter Mais ça ne fait pas avancer mon schmilblick tu peux m'aider Edfed ?!

    @+

  8. #8
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    t'aider a faire quoi?
    apparement tu as tout ce qu'il faut maintenant.

  9. #9
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Mais NON pas du TOUT !!! Modboot est basé sur un noyau Linux moi je suis sous MS-DOS !!!

    Personne pour m'aider SVP !!!

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    bonsoir,

    je n'ai pas tout à fait compris ce que veux faire 'Sebio' mais il me semble que en travaillant correctement "boot.ini" on doit réussir (sauf qu'il va y avoir des problèmes de relocation)
    sinon c'est un peu plus souple avec GRUB

    sinon et enfin il y a la solution de changer dans la mémoire du bios la lettre de code du démarage.

  11. #11
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Salut Stabia,

    Je veux simplement pouvoir amorcer sur mon 1er HDD (via mon fameux menu), quand bien même je viens d'amorcer sur mon CD de boot, lis les post plus haut.

    Merci d'avance @+

  12. #12
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    le truc, c'est que tu dis que tu le veux depuis un cd
    le machin là, il marche sur cd
    sinon, comme le dit stabia, le boot.ini c'est pas fait pour rien

    nivo asm, il faut savoir ce que l'on veu EXACTEMENT, sous peine de ne jamais avoir de resultats... comme partout d'ailleur.

    pour booter depuis un hd, c'est simple

    il faut charger le secteur de boot en memoire, dans un segment x à l'offset 7C00h
    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
     
    segment?=????
    drive?=80h ; bios c:\
            mov dl,drive?
            mov ax,201h ;lire (2) un (01) secteur
            mov cx,1      ;a partir du premier (1)
            mov dh,0      ;premier (0)
            push word segment?  ;dans le segment ?
            pop es          
            mov bx,7C00h           ;a partir de l'offset 7C00h
            int 13h             ;excution, nom de dieu
    puis faire:
    call segment?:7C00h
    ou 
    jmp segment?:7C00h
    c'est pas plus compliqué que ça

    segment? est une constante a definir evidement

  13. #13
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Alors explique-moi comment fait-on pour lancer le boot.ini sous MS-DOS depuis mon menu de démarrage STP ?! Est-ce que GRUB fonctionne sous DOS ?!

    Pourquoi ça fonctionnerait sous Linux & pas sous MS-DOS ?!

  14. #14
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    linux demarre en mode protegé, et msdos est en mode reel

    grub, il est independant du systeme

    puis pour boot.ini, je sais que c'est fait pour ça, mais je ne l'utiliserai jamais de toute mon existance, car c'est du MS

  15. #15
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Ok, donc un simple appel a l'INT 13h fonction 02h devrait marcher ?

    exemple : (desole je n'utilise pas de compilateur standard)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xor AX,AX
    mov ES,AX
    mov BX,7C00h ( c'est pour pointer sur 0000:7C00h )
    mov AX,2
    mov CX,1
    mov DX,80h ( 80h = disque 1 ; 81 = disque 2)
    int 13h
    jc erreur
    jmp far 0000:7C00h
    erreur:
    ;reste du code pour gestion de l'erreur
    Donc oui, desole, je n'utilise pas de compilo conventionnel
    Mais le code doit etre lisible (j'espere )

    J'ai volontairement simplifie le code en ne detaillant pas les valeurs de certains
    registres, par exemple :normalement ce n'est pas DX=80h mais DL=80h et
    DH=numero de tete + bits 10 et 11 du numero de cylindre, ici tout est a 0
    alors...

    a+ Francois

  16. #16
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    c'est exactement ça, et ça marche.

    les different registres et leur representation sont en fait la representation directe des registres du controleur disque dur, dans les port I/O 17xh (IDE2) et 1Fxh ( IDE1)

    c'est exactement la meme chose...

    les registres controleurs ont les noms suivants:

    170-17F Fixed disk 1 (AT)
    170 disk 1 data
    171 disk 1 error
    172 disk 1 sector count
    173 disk 1 sector number
    174 disk 1 cylinder low
    175 disk 1 cylinder high
    176 disk 1 drive/head
    177 disk 1 status

    1F0-1FF Fixed disk 0 (AT)
    1F0 disk 0 data
    1F1 disk 0 error
    1F2 disk 0 sector count
    1F3 disk 0 sector number
    1F4 disk 0 cylinder low
    1F5 disk 0 cylinder high
    1F6 disk 0 drive/head
    1F7 disk 0 status

    HelpPC 2.10 Quick Reference Utility Copyright 1991 David Jurgens

  17. #17
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Salut Edfed,

    C'est super gentil, mais comment je fais pour intégrer ce code dans mon MENU.BAT ?!

    Merci encore pour ton aide !!! @+

  18. #18
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    hé hé
    facile encore une fois
    ce code peut etre compilé pour donner un .com
    ce .com peut etre appellé par le .bat si je ne m'abuse

  19. #19
    Membre à l'essai Avatar de SebioHazard
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Salut Edfed,

    hé hé facile encore une fois
    - Hum hum... si tu le dis...

    ce code peut etre compilé pour donner un .com
    - J'ai AUCUNE idée de comment procéder... j'ai jamais programmé sauf en BASIC sur COMMODORE 64

    ce .com peut etre appellé par le .bat si je ne m'abuse
    - Oui là je me sens dans mon élément, y'a pas de problème, je sais comment lancer un .COM depuis un fichier .BAT Ca t'ennuierait de me compiler ce .COM STP ?! Un grand merci d'avance !!!

    @+

  20. #20
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    c'est pas si simple, il me faut des données precises quand à la memoire utilisée par ton .bat
    je suppose qu'il est en mode reel.

    mais où exactement, histoire que je ne foute pas en l'air ton pc.
    je m'explique, si je fait ce code por qu'il charge le boot à l'addresse X, il faut que je soit sur que cette addresse est libre, sinon, le risque de casser le delire d'un autre programme est grand.

    pour mon pc, ça serai simple, car je peu obtenir facilement les données d'addressage à n'importe quel moment, si tu veu bien , je te poste d'abord un programme sensé indiquer des chiffres, tu me communiques les chiffres, et je te pond aussitôt le .com que tu esperes.

    les chiffres dans l'ordre bien sur.
    merci

    ps:
    utilise ce programme en lieu et place de celui que tu desires dans ton .bat
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Problème sur fichier compilé en .exe
    Par Thyrolas dans le forum Débuter
    Réponses: 4
    Dernier message: 15/09/2008, 08h53
  2. Réponses: 1
    Dernier message: 05/11/2007, 17h58
  3. Compiler pour utilisation sur Windows
    Par bit_o dans le forum Linux
    Réponses: 3
    Dernier message: 25/04/2007, 21h07
  4. Réponses: 5
    Dernier message: 16/12/2006, 12h24
  5. aide pour un programme a compiler
    Par letombeur dans le forum C++
    Réponses: 8
    Dernier message: 11/01/2006, 21h53

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