Не удается прочитать сектора диска на языке ассемблера

Я пытаюсь прочитать сектора диска с помощью следующего кода:

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 ; 

Проблема в том, что флаг Carry устанавливается каждый раз, обозначая ошибку. Сначала я попробовал загрузочный диск 0x00, который, когда я проверял регистр AL, впоследствии обнаружил, что ни один сектор не читается. Затем я изменил на 0x80, теперь регистр AL будет иметь точное количество запрошенных секторов, но флаг Carry будет установлен!

Так в чем может быть проблема здесь? Кажется, Carry устанавливается всегда после int 0x13! Я запускаю iso-файл в Virtual Box, если это имеет значение.

Ответы на вопрос(1)

Ваш ответ на вопрос