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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

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

 

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

 

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

 

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

 

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

 

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

(слайд №18)

 

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 Ошибка операции считывания (НМД)

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

(слайд №19)

 

На входе: 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-памяти.

 

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

(слайд №20)

 

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

 

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

 

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

 

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

 

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

(слайд №21)

 

Программа не может непосредственно адресовать 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 хранится:

(слайд №22)

 

Адрес ячейки Содержимое
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-памяти.

 

H - 0Dh - область часов реального времени

Для варианта №6, Лабораторной работы №2 – Написать программу, извлекающую текущее время и дату из области CMOS и отображающую эту информацю на экране в реальном времени.

(слайд №23)

 

Ячейки с адресами 00h - 0Dh используются часами реального времени.

 


Eh - байт диагностики

Для варианта №7, Лабораторной работы №2 –Определить состоние байта диагностики из области CMOS (0Eh) и написать программу, анализирующую возможные неисправности в системе.

 

Байт диагностики содержит результаты выполнения диагностики при включении питания компьютера. Выполнив анализ содержимого байта 0Eh, программа может выявить неисправность НМД, часов реального времени, разрядку аккумулятора и ошибки в конфигурации. Приведем формат этого байта:

 

Бит Описание
0-1 Не используется, равно 0
  0 - неправильная установка часов реального времени; 1 - часы реального времени установлены правильно
  0 - НМД исправен; 1 - неисправность НМД, невозможно загрузить операционную систему с жесткого диска
  0 - размер оперативной памяти указан правильно; 1 - фактический размер оперативной памяти не соответствует указанному в памяти CMOS
  0 - конфигурация указана правильно; 1 – ошибка в конфигурации системы, фактическая конфигурация не соответствует указанной в байте конфигурации оборудования (ячейка 14h)
  0 - контрольная сумма памяти CMOS правильная; 1 - ошибка в контрольной сумме памяти CMOS
  0 – аккумулятор, питающий память CMOS, исправен и заряжен; 1 - разрядка аккумулятора выше нормы

 

H - тип НГМД

Для варианта №8, Лабораторной работы №2 –Определить количество и тип установленных накопителей на гибких магнитных дисках (НГМД).

(слайд №24)

 

Младшая и старшая тетрады этого байта описывают, соответственно, второй и первый НГМД:

 

Значение Емкость, Кбайт Диаметр Количество секторов на одну дорожку Количество дорожек
  НГМД не установлен - - -
    5,25"    
    5,25"    
    3,5"    
    3,5"    

12h - тип НМД C: и D:

Для варианта №1, Лабораторной работы №2 –Определить наличие и тип установленного в системе накопителя на жестких магнитных дисках (НЖМД).

 

Этот байт разделен на две тетрады аналогично байту, который описывает НГМД. Однако в тетраде можно закодировать только 16 значений, а различных типов НМД значительно больше. Поэтому тип 15 используется специальным образом - если тип НМД в младшей тетраде (диск C:) равен 15, то правильное значение типа находится в CMOS-памяти по адресу 19h. Аналогично для диска D: этот тип можно взять из байта по адресу 1Ah (если содержимое старшей тетрады байта с адресом 12h равно 15).

 

Если в вашем компьютере установлен НМД с интерфейсом ESDI, SCSI или другим специализированным интерфейсом, то, как правило, для работы с ними используется специальная "дисковая" базовая система ввода/вывода. Соответствующая микросхема ПЗУ может быть расположена непосредственно в контроллере. При этом в CMOS-памяти в ячейке 12h для типа диска может быть указано нулевое значение, несмотря на то, что диск установлен. Прерывание INT 11h, тем не менее, скажет вам, что в системе имеется НМД.

 

Если используется "дисковая" базовая система ввода/вывода, то она сама инициализирует таблицу параметров диска и выполняет обработку прерывания INT 13h. Так как MS-DOS при обращении к дискам использует именно это прерывание, то не возникает никаких проблем, связанных с отсутствием типа диска в CMOS-памяти. Другие операционные системы, такие как Windows NT и OS/2, используют для работы с дисками специальные драйверы.

 

Приведем сокращенную таблицу параметров для стандартных типов НМД (зависит от версии BIOS):

(слайд №25)

 

Тип Количество цилиндров Количество головок Емкость диска в байтах
      10.653.696
      21.411.840
      32.117.760
      65.454.080
      49.090.560
      21.411.840
      32.169.984
      31.900.160
      117.504.000
      21.411.840
      37.209.600
      52.093.440
      21.307.392
      44.660.224
       
      21.307.392
      42.519.040
      59.526.656
      62.390.272
      31.900.160
      44.660.224
      31.900.160
      10.653.696
      42.519.040
      80.216.064
      74.575.872
      117.190.656
      159.805.440
      71.303.168
      98.041.856
      87.892.992
      72.460.800
      89.128.960
      106.954.752
      115.867.648
      124.780.544
      17.825.792
      142.606.336
      119.854.080
      42.823.680

 

Для всех приведенных в таблице типов дисков на одной дорожке располагается 17 секторов.

Стандартный компьютер IBM PC/XT комплектуется обычно НМД с типом 1, тип 2 используется в стандартном компьютере IBM PC/AT. Остальные типы НМД используются главным образом старыми версиями BIOS.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 284; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.107.96 (0.023 с.)