2012-06-24 26 views
6

Przeczytałem gdzieś w Internecie, że przed skokiem do 0x7c00, BIOS ładuje się do% dl "numeru napędu" uruchomionego urządzenia. Ale czym jest ten "numer napędu"? Każde urządzenie podłączone do komputera ma numer przypisany przez BIOS? Jeśli tak, to w jaki sposób mogę się dowiedzieć, do którego numeru przypisane jest dane urządzenie?Uruchamianie komputera: rejestr dl i napęd numer

Odczytywanie kodu źródłowego GRUB Znalazłem, gdy% dl zawiera bitów 0x80 i 0x70, nadpisuje cały rejestr wartością 0x80. Dlaczego? Oto kod:

jmp 3f  /* grub-setup may overwrite this jump */ 
testb $0x80, %dl 
jz 2f 
3: 
/* Ignore %dl different from 0-0x0f and 0x80-0x8f. */ 
testb $0x70, %dl 
jz 1f 
2:  
movb $0x80, %dl 
1: 

Przy okazji. Czy istnieje jakiś szczegółowy zasób dotyczący procesu uruchamiania komputera w sieci? Szczególnie o tym, co robi BIOS, zanim przekazuje kontrolę do bootloadera, a także standardowe kody używane do komunikowania się z nim (jak ten "numer dysku"). Miałem nadzieję napisać własny bootloader i wszystko, co znalazłem, jest nieco zbyt ogólnikowe, nie na tyle techniczne, aby dokładnie poinformować o stanie komputera, gdy mój bootloader zacznie działać.

Odpowiedz

3

BIOS 13h funkcje przyjmują numer napędu. To powinien być ten numer napędu w DL, który system BIOS rozumie, ponieważ, cóż, sam używa int 13h do ładowania sektorów startowych.

+0

Ok. Wiem, że bios to rozumie, ale ja też chcę to zrozumieć. :) Chcę wiedzieć, w jaki sposób przypisuje się te kody. Na przykład, jeśli są statyczne (0 dla danego urządzenia, 1 dla innego ... itd.) I jeśli tak, to gdzie mogę uzyskać tę listę; a jeśli nie, to jak bios przydziela je. – Kei

+1

AFAIK, 0x80 to jedyny prawidłowy numer napędu twardego dysku rozruchowego, podobnie 0x00 dla dyskietki rozruchowej. W kodzie jest ten komentarz: 'Jest to obejście dla błędnych BIOSów, które nie przekazują poprawnie napędu rozruchowego. Jeśli GRUB jest zainstalowany na HDD, sprawdź, czy DL jest poprawnie zamaskowany. Jeśli nie, załóżmy, że BIOS przeszedł fałszywą wartość i ustaw DL na 0x80, ponieważ jest to jedyny możliwy napęd rozruchowy. Jeśli GRUB jest zainstalowany na dyskietce, to nic nie robi (przeskakuje). "Tak to było tradycyjnie. Numery dysków bez rozruchu są wyższe. –

+0

Rozumiem. Czy będzie to ta sama liczba (0x80) dla dysków flash i CD-ROM? – Kei