Int 13h - Управление дисками 


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



ЗНАЕТЕ ЛИ ВЫ?

Int 13h - Управление дисками



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

(слайд №16)

 

Данное прерывание может быть использовано в указанных вариантах лабораторных работ в качестве демонстрации дополнительных возможностей работы с дисками.

 

Int 13h используется для работы с дисковыми устройствами ПЭВМ. Многочисленные функции прерывания INT 13h выполняют все операции по вводу/выводу на диски.

Отметим, что:

1. код функции всегда заносится в регистр AH;

2. для функций, требующих в качестве параметра номер устройства, нумерация дисководов для гибких дисков начинается с 0, нумерация жестких дисков начинается с 80h;

3. номер цилиндра жесткого диска кодируется в 10-битном виде (в регистре - младшая часть, в регистре CL - 2 старших бита номера цилиндра в битах 6 и 7);

4. результаты выполнения последней команды контроллера после вызова любой функции данного прерывания, обращающейся к диску, вы можете найти в буфере по адресу 0:442h. Длина буфера - 7 байт;

5. коды возврата последней выполнявшейся функции с жесткими дисками, возвращаемые обычно в регистре AH, записываются так же в байты по адресу 0:474 и могут быть после этого возвращены вызовом функции 01h.


6. стандартный BIOS XT выполняет только функции с 0 по 5 и предназначен для работы с накопителями на гибких дисках; для обслуживания запросов к жестким дискам на плате контроллера жестких дисков имеется расширенный BIOS (BIOS XT), который при выполнении процедуры инициализации, вызываемой в процессе сканирования ПЗУ, переписывает адрес стандартного обработчика INT 13h по адресу 0:100h и вызывает его при необходимости выполнения запроса к НГМД командой INT 40h;

7. расширенный BIOS XT выполняет функции с 0 по 14h;

8. при выполнении функций, требующих обмена с диском, следует разместить буфер для обмена в памяти таким образом, чтобы он не пересекал границу 64-Кбайтной страницы ПДП, иначе попытка обмена будет безуспешной;

9. для AT, XT-286, PC Convertible и PS/2 перед выполнением любой операции с диском BIOS выполняет вызов INT 15h, функция 90h ("устройство занято") с типом устройства 00h для жестких дисков. После завершения операции с диском BIOS выполняет вызов INT 15h, функция 91h - "обработка прерывания завершена".

10. для определения конкретных параметров накопителей BIOS берет информацию о них из таблиц параметров; на таблицу параметров первого жесткого диска вектор 41h, на таблицу параметров второго жесткого диска вектор 46h; конкретное содержание таблиц параметров жестких дисков зависит от типа диска.

 

Функции прерывания INT 13h:

 

00h Сброс дисковой подсистемы Эта функция выполняет установку в исходное состояние всей дисковой системы или выбранного дискового устройства. Используется обычно перед началом работы с устройством.
01h Получить состояние дисковой подсистемы Эта функция позволяет проверить результат выполнения предыдущей операции. Если операция завершилась аварийно, при помощи этой функции можно определить код ошибки.
02h Чтение сектора Выполняется чтение секторов в оперативную память компьютера или запись информации из памяти в сектора диска. Сектор задается для выбранных устройства, дорожки и головки. Программа должна также задать количество читаемых/записываемых секторов.
03h Запись сектора
04h Проверка сектора Функция проверяет сектора на правильность циклической контрольной суммы, CRC (Cyclic Redundancy Check); записи содержимого секторов в память не происходит.
05h Форматирование дорожки Функция форматирования предназначена для начального формирования структуры дорожки диска, она разрушает все имеющиеся на дорожке данные. С помощью функции 05 вы можете за один раз отформатировать только одну дорожку с указанным номером. Для этой функции необходимо задать два параметра - фактор чередования и буфер формата.

 

06h Форматирование дорожки (НМД) Функция форматирования дорожки с кодом 6 предназначена только для НМД и устанавливает флаг плохого сектора. Буфер формата подготавливается аналогично функции 5.
07h Форматирование диска (НМД) Функция форматирования с кодом 7 предназначена для форматирования целого диска начиная с определенной дорожки. Буфер формата подготавливается аналогично функции 5.
08h Получить текущие параметры дисковода (НМД) С помощью этой функции программа может определить тип дисковода, количество дисководов, обслуживаемых первым дисковым контроллером и другие параметры дисковода, которые нужны программе для организации доступа к диску на физическом уровне. Тип дисковода, возвращаемый в регистре BL, может принимать следующие значения:
09h Инициализация таблиц параметров жесткого диска Функцию инициализации контроллера НМД применяют после модификации таблиц параметров жесткого диска. BIOS BIOS узнает о внесенных в таблицы изменениях и инициализирует соответствующим образом контроллер НМД.
0Ah Чтение длинное (НМД) Функция "Чтение секторов длинное" отличается от обычной функции чтения (код 02h) тем, что она дополнительно считывает в буфер данных 4 байта кода коррекции ошибки (ECC).
0Bh Запись длинная (НМД) Функция "Запись секторов длинная" отличается от обычной функции записи (код 03h) тем, что она дополнительно записывает на диск из буфера данных 4 байта кода коррекции ошибки (ECC).
0Ch Поиск цилиндра (НМД) С помощью функции 0Ch программа может подвести головки к дорожке с заданным номером. Функции чтения/записи секторов не требуют предварительного поиска дорожки, они выполняют поиск сами.
0Dh Альтернативный сброс дисковода (НМД) Вы можете использовать эту функцию для сброса контроллера вместо функции с кодом 00h. В отличие от функции сброса дисковой подсистемы с кодом 00h эта функция не влияет на контроллер НГМД, она сбрасывает только контроллер накопителя на жестком магнитном диске.

 

0Eh Чтение буфера сектора (НМД) Контроллеры НМД в компьютерах PC и XT содержат внутренний буфер данных. С помощью функции 0Eh программа может прочитать содержимое этого буфера в оперативную память. Чтения данных с диска при этом не происходит. В основном функция чтения буфера используется для диагностики дискового контроллера.
0Fh Запись буфера сектора (НМД) Функция полностью аналогична предыдущей, за исключением того, что происходит не чтение, а запись данных из оперативной памяти в буфер контроллера. Она может быть использована для инициализации содержимого буфера сектора перед форматированием диска функцией 05h прерывания INT 13h.
10h Проверка готовности дисковода (НМД) О готовности дисковода можно судить по байту состояния, передаваемому функцией в регистре AH. Этот байт аналогичен возвращаемому в регистре AH функцией 01h.
11h Рекалибровка дисковода (НМД) Вызов функции приводит к позиционированию головок выбранного дисковода на нулевую дорожку. Дополнительно в регистре AH возвращается байт состояния дисковода.
12h Проверка памяти контроллера (НМД) Эта функция предназначена для запуска встроенной диагностики дискового контроллера, она проверяет внутренний буфер сектора и возвращает байт состояния.
13h Проверка дисковода (НМД) Функция используется для запуска внутренней диагностики контроллера.
14h Проверка контроллера (НМД) Функция запускает внутреннюю диагностику контроллера.
15h Получить тип дисковода Возвращаемый этой функцией тип дисковода может принимать значения от 0 до 3. С помощью этой функции программа может определить тип диска и возможность обнаружения замены магнитного носителя (дискеты).
16h Проверка замены диска В некоторых случаях замена дискеты нежелательна до выполнения определенных действий (мы говорили об этом при обсуждении драйверов дисковых устройств). С помощью этой функции программа может убедиться в том, что в дисководе установлена все та же дискета, что и в начале цикла операций. Если дискета была по ошибке заменена раньше времени, программа может потребовать установить старую дискету для завершения работы с ней.

 

17h Установка типа дискеты Функцию установки типа дискеты необходимо использовать перед началом работы с дискетой. Устанавливаемый тип может принимать значения от 0 до 4. Если перед вызовом этой функции был установлен флаг замены дискеты, то он сбрасывается. Дополнительно BIOS устанавливает скорость передачи данных через контроллер НГМД в зависимости от типа дискеты.
18h Установка среды носителя данных для форматирования Эта функция должна быть вызвана перед использованием функции 05h форматирования диска для установки правильной скорости передачи данных через дисковый контроллер. Дополнительно функция сбрасывает флаг замены дискеты (если этот флаг установлен).
19h Парковка головок (НМД) Парковка головок - это их установка в нерабочую область, т.е. на нерабочую дорожку. Эту операцию обычно выполняют перед транспортировкой компьютера для исключения повреждения дисковода.
1Ah Форматирование диска (ESDI НМД) Эта функция форматирования жесткого диска предназначена для НМД, используемого совместно с контроллером ESDI. Она поддерживает таблицу дефектных дорожек и имеет несколько режимов форматирования в зависимости от содержимого регистра CL при вызове.

 

Рассмотрим некоторые функции более подробно:

(слайд №17)

 



Поделиться:


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

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