Часть полного текста документа:INT 13H: Дисковый ввод-вывод Этот сервис предоставляет прямой доступ к адаптерам дискеты и твердого диска. Рекомендуется там, где это возможно, использовать INT 25H и INT 26H (INT 25H/26H - прямая дисковая операция чтения/записи: INT 25H читает секторы INT 26H записывает секторы), чтобы предоставить драйверам устройств DOS выполнять всю низкоуровневую обработку. Разумеется, для таких операций, как форматирование диска или установка защиты от копирования, прерывание INT 13H может оказаться единственной альтернативой. Подфункции: (Подфункции > 8 - только для твердых дисков) 00H сброс контроллера 0aH длинное чтение 01H дать статус 0bH длинная запись 02H читать секторы 0cH искать цилиндр 03H писать секторы 0dH альтернативный сброс 04H верификация 05H форматировать дорожку 08H дать параметры диска 09H инициализировать параметры диска 10H проверить готовность 11H рекалибрация 14H диагностика 15H дать тип диска 16H изменить статус 17H установить тип диска AH Сервис ___ ____________________________________________________________________________ 00H Сброс устройства. Вызывает рекалибрацию контроллера. Если DL равен 80H или 81H, выполнен сброс контроллера твердого диска. ___ ____________________________________________________________________________ 01H Дать статус ошибки последней операции. Вход: DL = диск. DL < 80H = дискета; DL > 7FH = твердый диск Выход: AL содержит код ошибки диска (то же, что значение по адресу 0:0441) ___ ____________________________________________________________________________ 02H Читать секторы Вход: DL = номер диска (0=диск A...;80H=твердый диск 0;81H=твердый диск 1) DH = номер головки чтения/записи CH = номер дорожки (цилиндра)(0-n) Таблица параметров дискеты (для гибких дисков) 0:0104 => Таблица параметров твердого диска (для твердых дисков) Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH. ES:BX буфер содержит данные, прочитанные с диска Замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит: 1 1 1 1 1 1 г5T4T3T2T1T0T9T8T7T6T5T4T3T2T1T0¬ CX: ¦c c c c c c c c C c S s s s s s¦ L-+-+-+-+-+-+-+-¦-+-+-+-+-+-+-+-- L=¦===> исп. как старшие биты номера цилиндра ___ ____________________________________________________________________________ 03H Писать секторы Вход: (аналогично подфункции 02H) ES:BX => данные, записываемые на диск. Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH. ___ ____________________________________________________________________________ 04H Проверить секторы. Проверяет CRC для указанных секторов на ошибки. Вход: (аналогично подфункция 02H. ES:BX лучше также предоставить) Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH. ___ ____________________________________________________________________________ 05H Форматировать дорожку. Данные на дорожке, если есть, разрушаются. Вход: DL,DH,CH = диск, головка, дорожка (см. подф. 02H) ES:BX => дескрипторы секторов (требуется 512-байтовый буфер) дискета: 1 4-байтовый 'CHNS' (Цилиндр, Головка, N сектора, Размер) для каждого сектора на дорожке (т.е. 36 байт для 9-секторных дорожек); номера секторов д.б. упорядочены. 'Z' - код размера сектора: 0=128; 1=256; 2=512; 3=1024 _AT_ Твердый диск: 1 2-байтовый 'FN' (Флаг, N сектора) для каждого сектора на дорожке. Последовательность полей 'N' определяет "коэффициент прослаивания" ("interleave factor"). _XT_ Твердый диск: ES:BX не используется. ............ |