System operacyjny
Przerwanie 0x13

Przerwanie 0x13 zapewnia dostęp do dysku.

Możemy wczytywać dany sektor dysku podająć kolejno numer cylindra, głowicy i sektoru. Ten tryb adresowania oznacza się przez CHS (Cylinder-Head-Sector). Jednakże wygodniej jest stosować tryb LBA (Logical block addressing) który każdemu sektorowi nadaje logiczny adres, który potem jest przeliczany na adres CHS wedlug wzoru

LBA = ( numer_cylindra * liczba_glowic_na_cylinder + numer_glowicy ) * liczba_sektorow_na_sciezke + numer_sektora -1

   mov ax, 0
   mov ds, ax     ;  ustawienie segmentu DS na zero
 
   mov ah, 0x42           ; odczyt LBA 
   mov dl, 0x80           ; numer dysku (dysk nr 0)
   mov si, read_pocket    ; DS:SI adres struktury definiujacej ile przeczytać i gdzie umieścić
   int 0x13
 
;... 
 
read_pocket:
    db 0x10         ; rozmiar rekordu (pocket)
    db 0            ; zarezerwowane  = 0
    dw 1            ; ile sektorów odczytać
    dd 0x00007E00   ; gdzie umieścić wynik
    dd 1            ; który sektor odczytać
    dd 0            ; starsze bajty nr. sektora
 


Tomasz Kapela, Kraków 2011-2020