Обращение к диску >8 Гб с помощью Int 13
Как и куда передавать параметры и где получать результат
Вход: AH = 02
AL = число читаемых секторов
CH = цилиндр
CL = начальный сектор (биты 0..5)
и два старших бита номер
цилиндра (биты 6..7 )
DH = головка
DL = дисковод 00...7fh - FDD
80h..FFh - HDD
для первого master диска - 80h
ES:BX - адрес блока памяти, куда будут
отправлены прочитанные данные.
Выход: CF = 0
AH = 0
AL = число переданных секторов
Cf=1 -> Ошибка
А вообще INT 13h -это уже старый отстой. Лучше работать через контроллер HDD
from techno-cat
современных BIOS-ах (с 1998 года - точно).
Проверить его наличие можно так
Вход
AH = 41h
BX = AA55h
DL = номер дисковода
Выход
AH = номер версии
BX = 55AAh
CF = 0
Если CF = 1 и AH = 1, то BIOS не поддерживает
INT 13 Extension.
Функции у него такие
42h - чтение
43h - запись
44h - проверка
47h - поиск
48h - получить параметры устройства
49h - считать состояние Change Line
4Eh - настроить устройство
Первые четыре используются для операций с секторами и имеют следующий формат
Ввод
AH = номер функции
DL = номер дисковода
DSSI = адрес блока адресов
Выход
CF = 0 и AH = 0 либо CF = 1 и AH = код ошибки
Блок адресов устроен так
00 (1 байт) - размер блока в байтах (должен быть не меньше 10h)
01 (1 байт) - пустой
02 (1 байт) - число секторов (максимум 7Fh),
если 0 - данные не передаются
03 (1 байт) - пустой
04 (4 байта) - адрес буфера для обмена
данными (сегментсмещение)
08 (8 байт) - абсолютный номер сектора на
диске (начиная с 0)
10 - здесь теоретически тоже может быть какая-то информация, но реально эта область не используется
Функция AH = 48h имеет такой же формат, только DSSI - адрес, куда помещаются
параметры устройства в следующем виде
00h (2 байта) - размер блока параметров
02h (2 байта) - информационные биты
04h (4 байта) - число цилиндров (физических)
08h (4 байта) - число головок (физических)
0Ch (4 байта) - число секторов на дорожке
10h (8 байт) - общее число секторов на диске
18h (4 байта) - число байт в секторе
В остальных функциях указывается только номер
устройства в DL
[ Это Сообщение было отредактировано gerard в 2002-02-01 0504 ]