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
Partager