На входе: | AH | 08h |
DL | Адрес НГМД или НМД (0, 1, ..., 80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
BL | Тип устройства (только для IBM PC/AT и PS/2) | |
DL | Кол-во устройств, подключенных к первому контроллеру диска | |
DH | Максимальный номер головки | |
CL | Максимальный номер сектора | |
CH | Максимальный номер цилиндра | |
ES:DI | Адрес таблицы параметров НГМД | |
Примечание: | PC, XT, AT, PS/2 |
С помощью этой функции программа может определить тип НГМД или НМД, количество устройств, подключенных к первому контроллеру НМД и другие параметры, которые нужны программе для организации доступа к диску на физическом уровне.
Инициализация контроллера НМД.
На входе: | AH | 09h |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
Функцию инициализации контроллера НМД применяют после изменения таблиц параметров жесткого диска. Функции BIOS "узнают" о внесенных в таблицы изменениях и инициализируют соответствующим образом контроллер НМД.
Чтение секторов длинное (НМД).
На входе: | AH | 0Ah |
AL | Количество секторов, которые нужно прочитать | |
CH | Номер дорожки | |
CL | Номер сектора | |
DH | Номер головки | |
DL | Адрес НМД (80h, 81h, ...) | |
ES:BX | Адрес буфера для данных | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
Функция "Чтение секторов длинное" отличается от обычной функции чтения (с кодом 02h) тем, что она дополнительно считывает в буфер данных 4 байта кода коррекции ошибки (ECC).
Поиск дорожки (НМД).
На входе: | AH | 0Ch |
CH | Номер дорожки | |
CL | Номер сектора | |
DH | Номер головки | |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
С помощью функции 0Ch программа может подвести головки к дорожке с заданным номером. Функции чтения и записи секторов не требуют предварительного поиска дорожки, они выполняют поиск самостоятельно.
Альтернативный сброс НМД.
На входе: | AH | 0Dh |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
Вы можете использовать эту функцию для сброса контроллера вместо функции с кодом 00h. В отличие от функции сброса дисковой системы с кодом 00h, эта функция не влияет на контроллер НГМД, она сбрасывает только контроллер накопителя на жестком магнитном диске.
Чтение буфера сектора (НМД).
На входе: | AH | 0Eh |
ES:BX | Адрес буфера для данных | |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT |
Контроллеры НМД, как правило, имеют внутренний буфер данных. С помощью функции 0Eh программа может прочитать содержимое этого буфера в оперативную память. Обращение к диску при этом не происходит. Функция чтения буфера используется в основном для диагностики контроллера.
Запись буфера сектора (НМД).
На входе: | AH | 0Fh |
ES:BX | Адрес буфера для данных | |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT |
Функция полностью аналогична предыдущей, за исключением того, что происходит не чтение, а запись данных из оперативной памяти в буфер контроллера. Она может быть использована для инициализации содержимого буфера сектора перед форматированием диска функцией 05h прерывания INT 13h.
Определение состояния НМД.
На входе: | AH | 10h |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
О готовности НМД можно судить по байту состояния, передаваемому функцией в регистре AH. Аналогичный байт возвращается в регистре AH функцией 01h.
Рекалибровка НМД.
На входе: | AH | 11h |
DL | Адрес НМД (80h, 81h, ...) | |
На выходе: | AH | Состояние устройства после завершения последней операции |
CF | 1, если произошла ошибка, 0, если ошибки нет | |
Примечание: | PC, XT, AT, PS/2 |
Вызов функции приводит к позиционированию головок выбранного НМД на нулевую дорожку. Дополнительно в регистре AH возвращается байт состояния устройства.
Дата: 2019-05-28, просмотров: 210.