Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Работа с дисками MBR и GPT на уровне секторов.

Работа с дисками MBR и GPT на уровне секторов.

Для работы с HDD-дисками большого объема возможности адресации CHS стали «тормозом»и не позволяли работать с полным объемом дисков. Поэтому для обеспечения поддержки новых возможностей HDD в набор функций Int 13h фирмой Phoenix Technologies были введены дополнительные функции (BIOS Extensions). Дополнительные функции имеют номера 41h - 49h и 4Eh. Порядок работы с этими функциями существенно отличается от принятого для стандартных функций прерывания Int 13h :

- вся адресная информация передается через буфер в оперативной памяти, а не через регистры;

- соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);

- для определения дополнительных возможностей аппаратуры (параметров) используются флаги.

Фундаментальной структурой данных для дополнительных функций прерывания Int I3h является так называемый «Пакет дискового адреса» (Disk Address Packet). Получив пакет дискового адреса, прерывание Int 13h преобразует содержащиеся в нем данные в физические параметры, соответствующие используемому носителю информации. Формат пакета дискового адреса описан в табл. 1.

Таблица 1. Формат пакета дискового адреса. 

Смещение

Размер поля

Назначение поля

00h

BYTE

Размер пакета в байтах

01h

BYTE

Зарезервировано (имеет значение 0)

02h

BYTE

Число передаваемых блоков (0-7Fh) или признак передачи большого массива данных (FFh)

03h

BYTE

Зарезервировано (имеет значение 0)

04h

DWORD

Адрес буфера данных в оперативной памяти в режиме «сегмент:смещение» или признак линейной адресации памяти (FFFF: FFFFh)

08h

QWORD

Абсолютный номер начального блока (LBA-адрес) данных на диске

10h

QWORD

64-разрядный линейный адрес буфера передачи

18h

DWORD

Число передаваемых блоков при передаче большого массива данных

1Ch

DWORD

Зарезервировано (имеет значение 0)

Правила передачи параметров дополнительным функциям.

При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:

- в АН — номер вызываемой функции;

- в DL — номер диска;

- в DS: SI — адрес буфера, содержащего пакет дискового адреса.

Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.

После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата (кодов ошибок), для дополнительных функций введено еще несколько кодов.

Прерывание Int 13h, функция 42h: расширенное чтение.

Функция осуществляет передачу секторов с заданной области диска в буфер памяти (см. рис. 1). Перед вызовом прерывания требуется записать в регистры следующие значения:

- в АН — значение 42h;

- в DL — номер дисковода;

- в DS: SI — адрес пакета дискового адреса.

После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).

 

Рис. 1. Пример программы «Чтение BOOT-сектора (LBA = 3F)».

Подгруппы функций

Дополнительные функции условно разделены на три подгруппы:

• функции для доступа к диску;

• функции для блокировки доступа и смены носителей;

• функции внутреннего назначения.

Функции первой группы применяются при работе с дисками всех типов, функции второй группы — при работе со сменными носителями информации, функции третьей группы используются для внутренних нужд BIOS.

В группу функций доступа к диску входят:

• функция 41h — проверка наличия поддержки дополнительных функций;

• функция 42h — расширенное чтение;

• функция 43h — расширенная запись;

• функция 44h — верификация секторов;

• функция 47h — расширенный поиск;

• функция 48h — чтение параметров диска.

В группу функций блокировки доступа и смены носителей входят:

• функция 41h — проверка наличия поддержки дополнительных функций;

• функция 45h — блокировка/разблокирование диска;

• функция 46h — извлечение диска;

• функция 48h — чтение параметров диска;

• функция 49h — получение расширенного статуса смены диска.

В группу функций EDD входят:

• функция 41h — проверка наличия поддержки дополнительных функций;

• функция 48h — чтение параметров диска;

• функция 4Eh — установка конфигурации аппаратуры.

 

Как видно из вышеизложенного, проверка наличия поддержки дополнительных функций является обязательной и входит во все три подгруппы. Если после вызова функции 41h флаг CF имеет значение 1, а регистр АН содержит код 01h, то дополнительные функции не поддерживаются BIOS и не могут использоваться прикладной программой.

 


Лицензия