... der Bootsektorlader lädt die 512 Bytes der Daten einer Diskette, die sich an der Speicheradresse 0x7C00 (wenn ich recht habe) in den Arbeitsspeicher befindet
...
Da die Maschine hochfährt, muss der Arbeitsspeicher leer sein, also hat der Bootloader bei 0x0000 des Arbeitsspeichers geladen?
Nr. 0000:7C00
bezieht sich auf eine RAM-Adresse . RAM bedeutet "Random Access Memory", bedeutet, dass auf jede Stelle im Speicher direkt zugegriffen werden kann. Es geht nichts über "leeren RAM". Sie können sich auch auf die INT13-Interrupt-Funktion „Read Sectors From Drive“ beziehen:einer der Parameter (übergeben in ES:BX
) muss auf die Zieladresse zeigen, wo der Sektorinhalt gespeichert wird. Daher lädt das BIOS 512 Bytes vom Laufwerk und speichert sie in 0000:7C00
bis 0000:7DFF
, und springt dann zu 0000:7C00
um den primären Bootloader-Code auszuführen.
Irgendwelche Artikel/Bücher, die ich lesen sollte, um mich mit Kernels usw. vertraut zu machen?
Dieses Wiki ist sehr nützlich:http://wiki.osdev.org/Main_Page. Informationen zum Bootvorgang finden Sie unter http://wiki.osdev.org/Boot_Sequence.