MS-DOS для программиста

Анализ регистров


Когда обработчик получает управление, регистры процессора содержат информацию, необходимую для определения причины и места появления ошибки:

Регистр Содержимое
AH Информация об ошибке.Бит 0: тип операции:

0 - чтение, 1 - запись

Биты 1,2: область диска, где произошла ошибка:

00 - системные файлы;

01 - область FAT ;



10 - область каталога;

11 - область данных.

Бит 3: если равен 1, возможен выход с кодом FAIL

Бит 4: если равен 1, возможен выход с кодом RETRY

Бит 5: если равен 1, возможен выход с кодом IGNORE

Бит 6 зарезервирован, равен 0

Бит 7 тип устройства: 0 - диск; 1 - символьное устройство

AL Номер диска (если бит 7 регистра AH равен 0)
DI Код ошибки (биты 0...7, остальные биты не определены)
BP:SI Адрес заголовка драйвера устройства, в котором произошла ошибка

Обработчик критических ошибок не должен пользоваться функциями MS-DOS с кодами, большими чем 0Ch (из-за того, что функции MS-DOS не реентерабельны).

Программа обработки критических ошибок может вывести на экран сообщение об ошибке и запросить оператора о необходимых действиях. Ей разрешено также получить дополнительную уточняющую информацию об ошибке с помощью функции 59h прерывания INT 21h или узнать версию MS-DOS с помощью функции 30h этого же прерывания.

Дополнительная информация об устройстве, в котором произошла ошибка, может быть получена с использованием адреса заголовка драйвера устройства, который передается операционной системой при вызове обработчика в регистрах BP:SI.



Содержание раздела