(12.1) |
Da beide verwendeten Register 16 Bit groß sind, werden vom Segmentregister nur 4 Bit benötigt. Der Speicher ist also aufgeteilt in 16 Segemente zu 65.536 Bytes. Die Adresse ergibt sich dann nach folgender Regel: Das Segementregister wird um 4 Bit nach links verschoben. Das entspricht einer Multiplikation mit 16. Der entstehende Wert wird dann mit dem Offsetregister addiert. Schauen wir uns doch mal als Beispiel das Segmentregister 0xA000 und das Offsetregister 0x3F00 an.
(12.2) |
Die Schreibweise für die Adresse lautet dann: 000A:3F00.
Nachdem nun der Prozessor angefangen hat zu arbeiten, startet er den Programmcode an der Speicherstelle 0000F:FFF0. Hier befindet sich direkt nach dem Einschalten der Initialisierungscode des BIOS. Dieser Programmcode sucht nun ab dem zehnten Segment den Speicher nach weiterem BIOS-Code von Geräten (Grafikkarte, SCSI-Controller) durch und führt ihn aus. Dies ist übrigens auch der Grund, warum die Meldung der Grafikkarte als erstes erscheint.
Nach der Initialisierung und Ausführung des Grafikkarten-BIOS startet das BIOS den Power On Self Test. Dieser auch als POST abgekürzte Test überprüft den Prozessor und die DMA- und Interrupt-Controller. Danach führt er einen Test des Arbeitsspeichers durch, der als auffälliges Element beim Booten eigentlich jederm Anwender ins Auge fällt.
Am Ende des POST wird dafür gesorgt, daß auftretende Interrupts verarbeitet werden können. Interrupts sind Signale, die ein Programm darüber informieren, daß ein Ereignis eingetreten ist, was nun bearbeitet werden soll. In vielen Fällen wird dazu das Programm angehalten, das aufgetretene Ereignis wird abgearbeitet und danach setzt das Programm seine normale Tätigkeit fort. Denken Sie daran, daß auch das Betriebssystem nur ein Programm ist. Jedenfalls wird nun dafür gesorgt, daß im ersten Speicher-Segment12.1 die Interrupt-Vektor-Tabelle initialisiert wird. In ihr steht für jeden Interrupt eine Sprungadresse zu dem passenden Programmcode. Nach dem Abschluß des POST wird als letzte Aktion der Interrupt 0x1912.2 ausgelöst, dessen Programmcode nun versucht ein Betriebssystem zu starten. Dafür macht es sich auf die vorhandenen Datenträger nach einem funktionsfähigen Master Boot Record zu durchsuchen. Den Aufbau des Master Boot Records habe ich schon in Abschnitt 10.2 beschrieben. Das im MBR enthaltene Mini-Programm wird gestartet. Dies sorgt nun dafür, daß ein Bootloader gestartet wird. Dabei kann es sein, daß das Mini-Programm schon den ersten Teil des Bootloaders darstellt.