Nie można odczytać sektorów dysku w języku asemblera

Próbuję odczytać sektory dysku za pomocą następującego kodu:

disk_load :
push dx 

mov ah , 0x02 ; BIOS read sector function
mov al , dh ; Read DH sectors(dh is initialized before calling the routine)
mov ch , 0x01 ;
mov dh , 0x00 ; Select head 0
mov cl , 0x02 ; Start reading from second sector ( i.e.
; after the boot sector )

mov dl,0x80 (tried with 0x00 as well)

int 0x13 ; BIOS interrupt

pop dx ; Restore DX from the stack
jc cset

cmp dh,al ; if AL ( sectors read ) != DH ( sectors expected )
jne disk_error ; 

Problem polega na tym, że flaga Carry jest ustawiana za każdym razem, gdy występuje błąd. Początkowo próbowałem dysku rozruchowego 0x00, który po sprawdzeniu rejestru AL stwierdził, że nie są odczytywane żadne sektory. Potem zmieniłem na 0x80, teraz rejestr AL miałby dokładną liczbę żądanych sektorów, ale nadal ustawiana jest flaga Carry!

Więc jaki może być tutaj problem? Carry wydaje się być ustawiany zawsze po int 0x13! Używam pliku iso w Virtual Box, jeśli to ma znaczenie.

questionAnswers(1)

yourAnswerToTheQuestion