BIOS pełni różne funkcje związane z dostępem do dysków twardych:
W celu ułatwienia pisania przenośnych programów niskopoziomowych, BIOS udostępnia przerwanie 0x13 do pracy z dyskami twardymi. Niestety, jego możliwości są znacznie ograniczone. Interfejs tego przerwania używa jedynie 24 bitów do opisu geometrii dysku.
Na tę liczbę składa się:
Daje to razem 2^24 sektorów - jeżeli każdy ma 512 bajtów, to BIOS obsługuje dyski do wielkości ok. 8 GB. W czasach, gdy powstał pierwszy BIOS, była to nieprawdopodobnie duża liczba, dziś istnieją już dyski o znacznie większych pojemnościach.
Starsze BIOSy miały jeszcze jedno ograniczenie - kod ładujący system operacyjny musiał się znajdować przed pierwszą połową pierwszego gigabajta dysku. Dlatego ludzie instalujący w połowie lat dziewięćdziesiątych Linuksa musieli używać dodatkowych dysków, usuwać stare systemy operacyjne lub dzielić dysk na partycje, by sektor startowy mieścił się w dopuszczalnym przez BIOS zakresie.
Na szczęście, jakiś czas temu pojawiły się rozszerzenia przerwania 0x13 BIOSu umożliwiające korzystanie z większych dysków twardych. Są to po prostu nowe funkcje tego przerwania, które wykorzystują 64 bity do adresowania dysku.
Parametry: AH - 01 Zwracane wartości: AL - stan (00 - bez błędu, 01 - zły rozkaz, 04 - sektor nie znaleziony itp. Zwracana jest tak naprawdę zawartość spod adresu 0040:0041 Bios Data Area.
Parametry: AH - 02 AL - liczba sektorów do odczytania (1-128) CX - numer ścieżki (głowicy)/cylindra (0-1023) to 8 bitów CH oraz 2 bity CL, 6 najmłodszych bitów CL to numer sektora DH - numer głowicy (0-15) DL - numer urządzenia (0x00 - stacja dysków 1, 0x01 - stacja dysków 1, 0x80 - dysk 0, 0x81 - dysk 2 ES:BX - wskaźnik na bufor Zwracane wartości: AX - stan AL - liczba przeczytanych sektorów flaga carry (CF) - 0 gdy nie było błędu, 1 gdy nastąpił błąd
Parametry: AH - 02 AL - liczba sektorów do zapisania (1-128) Pozostałe parametry są takie, jak dla funkcji numer 2. Zwracane wartości: AX - stan, 0 jeśli flaga carry równa 0 AL - liczba zapisanych sektorów flaga carry (CF) - 0 gdy nie było błędu, 1 gdy nastąpił błąd
Przy pomocy tych funkcji można już napisać prosty program odczytujący zawartość dysku, który może się przydać w razie awarii komputera. Należy go zamieścić na pierwszym sektorze zerowej ścieżki dyskietki (dysku) i uruchomić komputer, a BIOS go sam załaduje i uruchomi.