Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Int 13h - Управление дисками
Для вариантов №1 и №8, Лабораторной работы №2 – «Определить наличие и тип установленного в системе накопителя на жестких магнитных дисках (НЖМД)» и «Определить количество и тип установленных накопителей на гибких магнитных дисках (НГМД)» соответственно.
(слайд №16)
Данное прерывание может быть использовано в указанных вариантах лабораторных работ в качестве демонстрации дополнительных возможностей работы с дисками.
Int 13h используется для работы с дисковыми устройствами ПЭВМ. Многочисленные функции прерывания INT 13h выполняют все операции по вводу/выводу на диски.
Отметим, что:
1. код функции всегда заносится в регистр AH;
2. для функций, требующих в качестве параметра номер устройства, нумерация дисководов для гибких дисков начинается с 0, нумерация жестких дисков начинается с 80h;
3. номер цилиндра жесткого диска кодируется в 10-битном виде (в регистре CН - младшая часть, в регистре 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)
|