Chargement du système d'exploitation
Lorsque le système est démarré ou réinitialisé, l'exécution du programme commence à l'adresse mémoire 0FFFF0h (FFFFh:0000h). Il s'agit d'une caractéristique de la famille de microprocesseurs 80x86 et n'a rien à voir avec le système d'exploitation MS-DOS. Les systèmes basés sur ces microprocesseurs sont conçus de telle sorte que l'adresse 0FFFF0h se trouve dans une zone de la mémoire ROM et contient une instruction machine de saut pour transférer le contrôle au code de test du système et à la routine d'amorçage contenu dans la ROM. La routine d'amorçage ROM effectuera la lecture de la routine d'amorçage du disque du premier secteur du disque de démarrage du système (le secteur d'amorçage) dans la mémoire à une adresse arbitraire, puis lui transfère le contrôle. Le secteur de démarrage contient également un tableau d'informations sur le format du disque. Il charge d'abord se secteur de démarrage à l'adresse de mémoire 0000h:07C00h. La routine d'amorçage provenant du secteur de démarrage et chargé en mémoire vérifie si le disque contient une copie d'un système d'exploitation, soit dans ce cas du système d'exploitation MS-DOS. Pour ce faire, il lit le premier secteur du répertoire racine et détermine si les deux premiers fichiers sont IO.SYS et MSDOS.SYS (ou IBMBIO.COM et IBMDOS.COM) sont présents, dans cet ordre. Si ces fichiers ne sont pas présents, l'utilisateur est invité à changer de disque et à appuyer sur n'importe quelle touche pour réessayer. Si les deux fichiers système sont trouvés, l'ensemble de démarrage du disque les chargent en mémoire et transfère le contrôle au point d'entrée initial de IO.SYS. Dans certaines mise en oeuvres, l'amorçage du disque lit uniquement IO.SYS en mémoire et IO.SYS charge à son tour le fichier MSDOS.SYS. Le fichier IO.SYS étant chargé à partir du disque se compose en fait de deux modules distincts. Le premier est le BIOS, contenant l'ensemble lié de pilotes de périphériques résidents pour la console, le port auxiliaire, l'imprimante, le bloc et les périphériques d'horloge, ainsi qu'un code d'initialisation spécifique au matériel n'étant exécuté qu'au démarrage du système. Le deuxième module, SYSINIT, est fourni par Microsoft et lié au fichier IO.SYS, avec le BIOS, par le fabricant de l'ordinateur. Le SYSINIT est appelé par le code d'initialisation du BIOS du fabricant. Il détermine la quantité de mémoire contiguë présente dans le système, puis se déplace vers une mémoire élevée. Il déplace ensuite le noyau DOS, MSDOS.SYS, de son emplacement de chargement d'origine vers son emplacement de mémoire final, en superposant le code SYSINIT d'origine et tout autre code d'initialisation consommable contenu dans le fichier IO.SYS. Ensuite, le SYSINIT appelle le code d'initialisation dans MSDOS.SYS. Le noyau DOS initialise ses tables internes et ses zones de travail, configure les vecteurs d'interruption 20h à 2Fh et trace la liste liée des pilotes de périphériques résidents, appelant la fonction d'initialisation pour chacun.