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

Programmation d'OS Assembleur Discussion :

Le MBR de Windows XP


Sujet :

Programmation d'OS Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut Le MBR de Windows XP
    Salut, je suis présentement entrai de programmer un MBR pour mon mini OS que je développe. Pour me donné une idée de ce que fait un MBR, j'ai décidé de désassemblé le MBR que Windows XP installe. Cependant, il y a une petite chose que je ne comprend pas pourquoi Microsoft à fait ainsi. Je vous explique ...

    Lorsque c'est le temps de charger en mémoire le secteur d'amorçage d'une partition, Microsoft utilise INT 0x13 avec la fonction 0x8 pour obtenir la géométrie du disque. Si INT 0x13 échoue, il utilise l'adresse CHS indiqué dans la table des partitions pour chargé le secteur d'amorçage avec INT 0x13 fonction 0x2. Sinon, avec la géométrie du disque il calcule le nombre de block du disque et la compare avec l'adresse LBA de la partition qui est indiqué dans la table. Si le nombre de block est plus petit que l'adresse LBA, il utilise INT 0x13 avec la fonction 0x2 sinon, il utilise INT 0x13 avec la fonction 0x41.

    Pourquoi ne pas simplement comparer l'adresse LBA de la partition avec 0xFB0400 (nombre de block maximal que le BIOS peut adresser en mode CHS) et ensuite déterminer la fonction de INT 0x13 è utiliser ?

    merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Bonsoir spiner900,

    Avec le mode CHS (Cluster Head Sector), il me semble qu'il n'est pas possible d'accéder à des disques de plus de 8 Go, contrairement au mode LBA (Logical Block Sector). C'est vrai que le MBR de Windows XP pourrait directement utiliser la fonction 0x41 de l'INT 0x13. Mais alors, il ne fonctionnerait pas sur les disques durs anciens, c'est-à-dire ceux ne supportant pas le mode LBA. Voilà pourquoi le MBR de Windows XP doit déterminer la fonction à utiliser, afin d'être sur qu'il fonctionnera sur tous les disques durs. Pour savoir si le disque supporte le mode LBA, il faut utiliser (si je ne me trompe pas) la fonction 0x48 de l'INT 0x13.

    Concernant la fonction 0x8, je ne vois pas en quoi il est nécessaire de l'utiliser. Un MBR doit juste connaître l'emplacement du secteur de boot de la partition active, puis de le charger en mémoire. Et pour connaître la taille d'un bloc, ce n'est pas la fonction 0x8 qu'il faut utiliser. Avec la plupart des disques durs, la taille d'un secteur est de 512 octets.

    Je te fournit un lien vers un MBR standard (si cela peut t'aider), qui est très bien commenté... à condition que tu manies très bien l'anglais : http://www.geocities.com/thestarman3/asm/mbr/STDMBR.htm.

    Je te souhaite bonne continuation pour ton projet d'OS. Cela me fait plaisir que je ne sois pas le seul français à vouloir développer un OS. J'ai écrit et mis en ligne sur ce forum un secteur de boot pour CD-ROM que tu peux trouver ici.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    merci pour ta réponse. Moi non plus je comprend pas pourquoi il utilise INT 0x13 fct 0x8 .... Donc, je peut très bien comparer l'adresse LBA qui est dans la table des partitions avec le nombre de block maximal que le BIOS peut adresser en CHS pour ensuite déterminer quel fonction de l'interruption INT 0x13 utiliser ?

    Pour déterminé si l'extension LBA est disponible c'est la fonction 0x41 et non la 0x48 (Extended Disk Parameter).

    Et pour ton boot sector pour les CD-ROM je les téléchargé lorsque j'ai posté mon MSG...... sa fait longtemp que je cherche comment faire alors j'ai sauté dessus dès que je les vu ... lol

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par spiner900 Voir le message
    Moi non plus je comprend pas pourquoi il utilise INT 0x13 fct 0x8 .... Donc, je peut très bien comparer l'adresse LBA qui est dans la table des partitions avec le nombre de block maximal que le BIOS peut adresser en CHS pour ensuite déterminer quel fonction de l'interruption INT 0x13 utiliser ?
    Si tu veux... cela marche aussi !

    Citation Envoyé par spiner900 Voir le message
    Pour déterminé si l'extension LBA est disponible c'est la fonction 0x41 et non la 0x48 (Extended Disk Parameter).
    Tu as raison, c'est bien la fonction 0x41 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
    	AH = 41h
    La fonction pour lire un secteur en utilisant le mode LBA est la fonction 0x42 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
    	AH = 42h
    Citation Envoyé par spiner900 Voir le message
    Et pour ton boot sector pour les CD-ROM je les téléchargé lorsque j'ai posté mon MSG...... sa fait longtemp que je cherche comment faire alors j'ai sauté dessus dès que je les vu ... lol
    Heureux que cela puisse t'être utile.

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

Discussions similaires

  1. [MBR] perte MBR sous Windows
    Par Roncevaux dans le forum Windows XP
    Réponses: 3
    Dernier message: 02/06/2014, 07h29
  2. Où est le MBR Windows 7
    Par foxxe dans le forum Windows 7
    Réponses: 2
    Dernier message: 27/07/2010, 11h55
  3. windows et mbr
    Par foxxe dans le forum Windows 7
    Réponses: 0
    Dernier message: 18/07/2010, 14h14
  4. Problème MBR & Windows
    Par julien-blaise dans le forum Windows XP
    Réponses: 7
    Dernier message: 08/07/2007, 16h12
  5. Installer windows apres linux (perdu le mbr)
    Par kacedda dans le forum Administration système
    Réponses: 6
    Dernier message: 04/01/2006, 12h19

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