Was steht wärend dem Bootvorgang per default in den Registern
-
Hallo zusammen
Ich schreibe gerade einen Bootloader und muss den Opcode minimieren. Ich habe beobachtet, dass im vorhandenen Opcode vielen Registern der Wert 00h zugewiesen wird und ich frage mich gerade, ob diese während dem Bootvorgang nicht ohnehin der Fall ist?Kann man davon ausgehen, dass sämtliche Register die werte 00h enthalten, wenn der Computer gestartet wird oder nicht?
Mfg Ishildur
-
Wozu musst du den Code minimieren? Normal hat man am Anfang genügend Platz um einen Bootloader spielend unterzubekommen.
Deinen richtigen Loader lädst du dann nach und nicht gleich mit.Alternativ würde ich aber einfach zu Grub/LILO greifen und mir die Arbeit sparen, falls möglich.
-
Sind nun sämtliche Register mit 00h initialisiert oder nicht?
-
nein.
-
Hi,
wenn der Master Boot Record vom BIOS gestartet wird, hat zumisndest dl die nummer des boot drives.
beispeile:
dl=0x00 -> erstes diskettenlaufwerk
dl=0x01 -> zweites diskettenlaufwerk
dl=0x80 -> erstes festplattenlaufwerk
dl=0x81 -> zweites festplattenlaufwerkdiese nummern sind für den aufruf von "int 0x13" vorgesehen, damit der MBR weitere sectoren "einfacher" (also ohne noch groß das bootlaufwerk bestimmen zu müssen) laden kann.
-
http://lowlevel.brainsware.org/wiki/index.php/Ausgabe_1#Etwas_Systemtheorie
Codesegment-Register CS wird beim Reset auf 0xFFFF gesetzt, damit das BIOS startet.; Rebooten. reboot: jmp 0xffff:0x0000
-
Ja, der Eintrittspunkt des BIOS ist bei FFFF0, aber das, sowie die Werte aller Uebrigen Register beim Start des BIOS, spielt beim Schreiben eines Bootloaders mal ueberhaupt keine Rolle...