Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

00h – сброс дисковой подсистемы.




00h – сброс дисковой подсистемы.

 

На входе: AH = 00h
DL = Адрес дисковода (0, 1, ..., 80h, 81h, ... )
На выходе: -
Примечание: PC, XT, AT, PS/2

 

Эта функция вызывает сброс и рекалибровку дискового контроллера (головки устанавливаются на нулевой цилиндр). Если в адресе дисковода старший бит (бит 7 ) установлен в 1, выполняется сброс контроллера НМД. Сброс рекомендуется выполнять после того, как произошла ошибка при выполнении других операций, таких как чтение или запись. После сброса можно попытаться повторить операцию.

 

01h - получить состояние дисковой подсистемы.

 

На входе: AH = 01h
DL = Адрес дисковода (0, 1, ..., 80h, 81h, ... )
На выходе: AL = Состояние дисковода после завершения последней операции
Примечание: PC, XT, AT, PS/2

 

Эта функция может быть использована для анализа результата выполнения дисковой операции и получения кода ошибки. Передаваемый в регистре AL код ошибки функция берет из области данных BIOS - из байта с адресом 0000: 0441h.

 

Код ошибки может принимать следующие значения:

 

00h Успешное завершение операции
01h Неправильная команда
02h Не найдена адресная метка
03h Попытка записи на диск, защищенный от записи
04h Сектор не найден
05h Ошибка при сбросе (НМД)
06h Произошла замена дискеты
07h Неправильные параметры дисковода (НМД)
08h Переполнение канала ПДП (НГМД)
09h Переход за границу 64К при работе с ПДП
0Ah Обнаружен плохой сектор (НМД)
0Bh Обнаружена плохая дорожка (НМД)
0Ch Неправильный номер дорожки
0Dh Неправильный номер сектора при форматировании (НМД)
0Eh Обнаружена адресная метка управляющих данных (НМД)
0Fh Ошибка ПДП (НМД)
10h Обнаружена ошибка в CRC/ECC
11h Данные скорректированы с использованием ECC (НМД)
20h Сбой контроллера
40h Сбой при поиске дорожки
80h Таймаут - программа не успевает обрабатывать данные
AAh Дисковод не готов (НМД)
BBh Неизвестная ошибка (НМД)
CCh Сбой при записи (НМД)
E0h Ошибка регистра состояния (НМД)
FFh Ошибка операции считывания (НМД)

08h - получить текущие параметры дисковода (НМД).

 

На входе: AH = 08h
DL = Адрес дисковода (0, 1, ..., 80h, 81h, ... )
На выходе: AH = Состояние дисковода после завершения последней операции
CF = 1, если произошла ошибка,        0, если ошибки нет
BL = тип дисковода (только для AT и PS2)
DL = количество НМД, обслуживаемых первым контроллером
DH = максимальный номер головки
CL = максимальный номер сектора
CH = максимальный номер цилиндра
ES: DI = адрес таблицы параметров дисковода
Примечание: PC, XT, AT, PS/2

 

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

 

не используется;
360К, 40 дорожек, 5, 25 дюймов;
1, 2М, 80 дорожек, 5, 25 дюймов;
720 К, 80 дорожек, 3, 5 дюйма;
1, 44М, 80 дорожек, 3, 5 дюйма.

 

Еще раз отметим, что прерывание INT 13h используется для организации ввода/вывода на диск. Для определения количества установленных НГМД используется значение из слова конфигурации прерывания INT 11h, а также для определения наличия НЖМД. Для того же, чтоб определить тип установленных НЖМД и НГМД можно использовать информацию, хранимую в CMOS-памяти.

 


15h – Получить тип дисковода

 

На входе: AH = 15h
DL = Адрес дисковода (0, 1, ..., 80h, 81h, ... )
На выходе: AH = Тип дисковода
CX: DX = количество секторов размером 512 байтов
Примечание: AT, PS/2

 

Возвращаемый этой функцией тип дисковода может принимать следующие значения:

 

диск отсутствует;
НГМД без аппаратных средств обнаружения замены дискеты;
НГМД оснащенный средствами обнаружения замены дискеты;
НМД.

 

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

 

Анализ содержимого CMOS-памяти

 

Программа не может непосредственно адресовать CMOS-память, как обычную оперативную память. Для работы с CMOS-памятью необходимо использовать порты ввода/вывода с адресами 70h и 71h, причем процедура записи или чтения состоит из двух шагов:

  1. на первом шаге операции чтения или записи программа должна записать в порт 70h номер нужной ячейки CMOS-памяти ( 0... 3Fh );
  2. на втором шаге программа должна обратиться к порту 71h для выполнения записи в указанную ячейку памяти или чтения из нее.

 

Приведем фрагмент программы, составленной на языке ассемблера, который считывает байт из CMOS-памяти с адресом 12h:

mov al, 12h

out 70h, al ; задаем адрес в CMOS-памяти

jmp $+2     ; небольшая задержка

in    al, 71h  ; записываем в AL считанное значение

 

Запись в CMOS-память выполняется аналогично.

При анализе конфигурации дисковой системы для нас представляют наибольший интерес ячейки CMOS-памяти со следующими адресами 14h, 10h и 12h.

 

В памяти CMOS хранится:

 

Адрес ячейки Содержимое
00h - 0Dh Используются часами реального времени                                                                                                Вариант №6.
0Eh Байт состояния диагностики при включении питания                                                                                                Вариант №7.
0Fh Байт состояния отключения
10h Тип НГМД                                                                                                Вариант №8.
11h Зарезервировано
12h Тип НМД (если меньше 15)                                                                                                Вариант №1.
13h Зарезервировано
14h Конфигурация оборудования                                                                                                Вариант №11.
15h - 16h Объем основной памяти                                                                                                  Вариант №2.
17h - 18h Объем расширенной памяти                                                                                                Вариант №2.
19h Тип первого НМД (если он больше 15)                                                                                                Вариант №1
1Ah Тип второго НМД (если он больше 15)                                                                                                Вариант №1
1Bh - 20h Зарезервировано
21h - 2Dh Зарезервировано
2Eh - 2Fh Контрольная сумма ячеек 10h - 20h
30h - 31h Объем расширенной памяти                                                                                                Вариант №2.
32h Текущее столетие в двоично-десятичном коде (19h для 19-го столетия)
33h Различная информация
34h - 3Fh Зарезервировано

 

Рассмотрим подробно назначение отдельных ячеек CMOS-памяти.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...