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

26H. В этом случае не используются оглавление диска и преимущества

блокирования и разблокирования записей, обеспечиваемые функцией DOS INT

21H.

Абсолютные операции предполагают, что все записи имеют размер

сектора, поэтому прямой доступ осуществляется к полному сектору или блоку

секторов. Адресация диска выполняется по "логическому номеру записи"

(абсолютный сектор). Для определения логического номера записи на

двухсторонних дискетах с девятью секторами счет секторов ведется с дорожки

0, Сектора 1, следующим образом:

Дорожка Сектор Логический номер записи

0 1 0

0 2 1

1 1 9

1 9 17

2 9 26

Для двухсторонних дискет используется следующая формула:

Логический номер записи = (дорожка х 9) + (сектор - 1)

Например, логический номер записи на дорожке 2 и секторе 9

определяется как

(2 х 9) + (9 - 1) = 18 + 8 = 26

Фрагмент программы для абсолютных операций ввода-вывода:

MOV AL,drive# ;0 для A, 1 для B и т.д.

MOV BX,addr ;Адрес области ввода-вывода

MOV CX,sectors ;Число секторов

MOV DX,record# ;Начальный логический номер записи

INT 25H или 26H ;Абсолютное чтение или запись

Операции абсолютного чтения или запись разрушают содержимое всех

регистров, кроме сегментных, и устанавливают флаг CF для индикации

успешной (0) или безуспешной (1) операции. В случае безуспешной операции

содержимое регистра AL описывает характер ошибки:

AL Причина

1000 0000 Устройство не отвечает

0100 0000 Ошибка установки головок

0010 0000 Ошибка контролера

0001 0000 Ошибка дискеты?

0000 1000 Переполнение DMA при чтении

0000 0100 Сектор не найден

0000 0011 Попытка записи на защищенной дискете

0000 0010 Не найден адресный маркер

Команда INT записывает содержимое флагового регистра в стек. После

завершения команды INT следует восстановить флаги, но проверив перед этим

флаг CF.

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

________________________________________________________________

Кроме основных дисковых функций DOS имеется несколько дополнительных

полезных дисковых операций.

Сброс диска: Шест.D

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

Обычно нормальное закрытие файла приводит к занесению всех оставшихся

в буфере записей на диск и корректировке оглавления. В особых случаях

(между шагами программы или аварийном завершении) может потребоваться

сброс диска. Функция DOS шест.D освобождает все файловые буфера и не

корректирует оглавление диска. Если необходимо, то вначале данная функция

закрывает все файлы.

MOV AH,ODH ;Запрос на сброс диска

Int 21h ;Вызов dos

Установка текущего дисковода: Шест.E

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

Основное назначение функции DOS шест.E - установка номера текущего

(по умолчанию) дисковода. Номер дисковода помещается в регистр DL, причем

0 Соответствует дисководу a, 1 - b и т.Д.

MOV AH,OEH ;Запрос на установку

MOV DL,02 ; дисковода C