Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ПУ(исп).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.25 Mб
Скачать

Коды ошибок дисковой операции

Код ошибки

Описание

00Н

отсутствие ошибки

01H

недопустимая команда

02Н

не найдена адресная метка

0ЗН

диск защищен от записи (Г)

04Н

не найден сектор

05Н

сброс в исходное состояние не выполнен (Ж)

06Н

гибкий диск снят (Г)

07Н

дефектная таблица параметров (Ж)

08Н

нарушение границ ПДП (Г)

09Н

ПДП пересек границу 64 Кбайт

0AН

флаг дефектного сектора (Ж)

0BН

флаг дефектной дорожки (Ж)

0CН

не найден тип носителя (Г)

0DН

недопустимое число секторов при форматировании

Продолжение таблицы 1

Код ошибки

Описание

0EН

обнаружена метка адреса управляющих данных - уровень арбитража ПДП вышел из диапазона (Ж)

0FH

ошибка ПДП

10H

невосстановимая ошибка циклического контроля (ECC)

11Н

ошибка данных скорректирована кодом проверки корректировки (Ж)

20Н

отказ контроллера

40Н

сбой поиска дорожки

80H

тайм-аут диска (отсутствие ответа)

ААН

дисковод не готов (Ж)

ВВН

неопределенная ошибка (Ж)

ССН

отказ записи (Ж)

E0Н

ошибка регистра состояния (Ж)

FFН

операция опознания не выполнилась (Ж)

Функция 02H - прочитать сектор. Читает в память один или более секторов. Эта функция позволяет прочитать один или несколько секторов диска в бу­фер, находящийся в оперативной памяти. Необходимо задать для начального секто­ра номер дорожки, головки и самого сектора.

Для НГМД номер дорожки и сектора задается следующим образом: биты реги­стра СХ 5...0 задают номер сектора, а биты 15...6 - номер дорожки.

Перед чтением необходимо подготовить таблицу параметров дискеты или дис­ка (для операций с НГМД).

При вызове АН = 02H, АL = число секторов, СН = цилиндр (дорожка), СL = сектор, DН = головка, DL = дисковод (00H, 01H,…, 80H, 81H,…), ЕS: ВХ = сегмент: относительный адрес буфера.

При возврате, если функция выполнена успешно, флаг переноса сброшен (CF=0) и АН= 00Н, АL = число переданных секторов. Если функция не выполнена, флаг переноса установлен (CF=1) и АН = состояние (см. Int 13H с функцией 01 Н).

При использовании жестких дисков код ошибки 11H свидетельствует о том, что ошибка чтения была скорректирована алгоритмом ЕСС (проверки и корректировки ошибки); в этом случае регистр АL содержит длину посылки. Возвращенные данные, скорее всего, правильны, хотя имеется незначительная вероятность неправильной корректировки. Если была запрошена многосекторная пересылка, операция заверши­лась передачей сектора, содержащего ошибку чтения. При использовании гибких дисков ошибка может возникнуть, если к моменту запроса выключен мотор. ПЗУ BIOS не организует автоматического ожидания раскрутки мотора до требуемой скорости перед попыткой выполнения операции чтения. Запрашивающая программа должна установить в исходное состояние диско­вую систему (Int 13H с функцией 00Н) и трижды повторить операцию перед тем, как прийти к заключению, что ошибка вызвана чем-то другим.

Функция 03Н - записать сектор. Записывает из памяти на диск один или более секторов. Функция записи секторов аналогична предыдущей функции, за исключением направ­ления перемещения данных. В этом случае данные записываются из буфера в сектора диска.

При вызове AН = 0ЗН, AL = число секторов, СН = цилиндр, CL = сектор, DН = головка, DL = дисковод (00H, 01H,…, 80H, 81H,…).

При возврате если функция выполнена успешно, флаг переноса сброшен (CF=0) и АН = 00Н, АL = число переданных секторов.

Если функция не выполнена, флаг переноса установлен (CF=1) и АН = состояние (cм.Int 13H с функцией 01Н).

Замечания. При использовании гибких дисков ошибка может возникнуть, если к моменту запроса выключен мотор. ПЗУ BIOS не организует автоматического ожидания раскрутки мотора до требуемой скорости перед попыткой выполнения операции записи. Запрашивающая программа должна установить в исходное состояние дисковую систему (Int 13Н с функцией 00Н) и трижды повторить операцию перед тем, как прийти к заключению, что ошибка вызвана чем-то другим.

Функция 04Н - верифицировать сектор. Верифицирует адресные поля одного или более секторов. Эта операция не пересылает данные ни в память, ни из памяти.

С помощью этой функции можно убедиться, что указанные сектора существуют и их можно прочесть. Данные проверяются по методу избыточного циклического контроля (CRC). Адрес буфера не нужен, так как чтения данных в оперативную память при проверке секторов не происходит.

При вызове АН = 04Н, АL = число секторов, СН =цилиндр (дорожка), CL = сектор, DН = головка , DL= дисковод (00H, 01H,…, 80H, 81H,…).

При возврате если функция выполнена успешно, флаг переноса сброшен (CF=0) и АН = 00Н, АL = число верифицированных секторов.

Если функция не выполнена, флаг переноса установлен (CF=1) и АН = состояние (см. Int 13H с функцией 01H). Эту функцию можно использовать для проверки, установлен ли диск в дисководе гибких дисков. Если используется компьютер с BIOS, выпущенной ранее 11.15.85, регистры ES:BX должны указывать на буфер соответствующего размера, как и при выполнении операции чтения.

Функция 05Н - форматировать дорожку. Инициализирует поля адресов секторов и дорожки на указанной дорожке диска. Функция форматирования предназначена для начального формирования структуры дорожки диска, она разрушает все имеющиеся на дорожке данные. С по­мощью функции 05h можно за один раз отформатировать только одну дорож­ку с указанным номером. Для этой функции необходимо задать буфер формата.

Перед вызовом функции форматирования регистры ES:BX должны содержать полный адрес буфера формата. Для дискет перед форматированием этот буфер должен представлять собой заполненный массив 4-байтовых элементов - номе­ра дорожки, головки, сектора и кода размера сектора. Код размера сектора мо­жет иметь следующие значения:

  • - 128 байт на сектор;

  • - 256 байт на сектор;

  • - 512 байт на сектор;

  • - 1024 байт на сектор.

Количество элементов в массиве должно быть равно количеству создаваемых на дорожке секторов, т. е. для каждого сектора буфер формата должен содержать один описывающий его четырехбайтовый элемент.

При форматировании флоппи-дисков с помощью этой функции таблица пара­метров дискеты должна содержать правильное значение количества секторов на дорожке и другие параметры.

При вызове АН =05Н, АL = чередование (жесткие диски РС/ХТ),

СН == цилиндр, DН = головка, DL= дисковод (00H, 01H,…, 80H, 81H,…), ЕS:ВХ= сегмент: относительный - адрес списка адресных полей.

При возврате если функция выполнена успешно, флаг переноса сброшен (CF=0) и АН = 00Н.

Если функция не выполнена, флаг переноса установлен (CF=1) и АН = состояние (см. Int 13H с функцией 01Н)

На гибких дисках список адресных полей состоит из последовательности 4-байтных записей, по одной записи на сектор, имеющих следующий формат (таблица 2).

Таблица 2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]