Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
19
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

Глава 18 Дисковая память IV: Функции bios

__________________________________________________________________________

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

для создания и чтения дисковых файлов.

ВВЕДЕНИЕ

________________________________________________________________

Для дисковых операций можно программировать непосредственно на уровне

BIOS, хотя BIOS и не обеспечивает автоматически использование оглавления

или блокирование/деблокирование записей. Дисковая операция BIOS INT 13H

рассматривает все "записи", как имеющие размер сектора, а адресацию диска

осуществляет в терминах действительных номера дорожки и номера сектора.

Для дисковых операций чтения, записи и верификации необходима

инициализация следующих регистров:

AH Определяет тип операции: чтение, запись, верификация или

форматирование.

AL Определяет число секторов.

CH Определяет номер дорожки.

CL Определяет номер начального сектора.

DH Номер головки (стороны) : 0 или 1 для дискеты.

DL Номер дисковода: 0=A, 1=B и т.д.

ES:BX Адрес буфера ввода/вывода в области данных (за исключением

операции верификации).

ДИСКОВЫЕ ОПЕРАЦИИ В BIOS

________________________________________________________________

Для указания необходимой дисковой операции необходимо перед INT 13H

загрузить в регистр AH соответствующий код.

AH = 00: Сброс системы контролера дисковода

---------------------------------------------

Данная операция осуществляет полный сброс контролера дисковода и

требует для выполнения INT 13H загрузку в регистр AH значение шест.00.

Операция используется в случаях, когда после других дисковых операций

возвращается код серьезной ошибки.

AH = 01: Определить состояние дисковода

-----------------------------------------

Данная операция возвращает в регистре AL состояние дисковода после

последней операции ввода/вывода (см.Байт состояния в следующем разделе).

Операция требует только загрузки значения 01 в регистр AH.

AH = 02: Чтение секторов

--------------------------

Данная операция выполняет чтение в память определенного числа

секторов на одной дорожке. Число секторов обычно 1, 8 или 9. Адрес памяти

для области ввода должен быть загружен в регистр BX, причем следует

помнить, что реальный адрес зависит от содержимого регистра EX, так как в

данном случае используется регистровая пара ES:BX. В следующем примере

выполняется чтение сектора в область INSECT, которая должна быть

достаточно большой, чтобы вместить все данные:

MOV AH,02 ;Запрос на чтение

MOV AL,01 ; один сектор

LEA BX,INSERT ;Буфер ввода в ES:BX

MOV CH,05 ;Дорожка 05

MOV CL,03 ;Сектор 03

MOV DH,00 ;Сторона (головка) 00

MOV DL,01 ;Дисковод 01 (B)

Int 13h ;Вызов bios

Число действительно прочитанных секторов возвращается в регистре AL.

Регистры DS, BX, CX и DX сохраняют свои значения.

В большинстве случаев программа указывает только один сектор или все

сектора на дорожке. Для последовательного чтения секторов программа должна

увеличивать содержимое регистров CH и CL. Заметьте, что когда номер

сектора достигает максимального значения, его необходимо сбросить в 01, а

номер дорожки увеличить на 1 или изменить сторону 0 на 1 (для

двухсторонних дискет).

AH = 03: Запись секторов

--------------------------

Данная операция записывает данные из указанной области памяти (обычно