Ассемблер и программирование для IBM PC



       

ГЛАВА 16. Дисковая память II: Функции базовой версиии DOS - часть 14


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

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

Ассемблер для IBM PC. Глава 16. 14

Например, логический номер записи на дорожке 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

Ассемблер для IBM PC. Глава 16. 15

Основное назначение функции DOS шест.E - установка номера текущего (по умолчанию) дисковода. Номер дисковода помещает ся в регистр DL, причем 0 соответствует дисководу A, 1 - B и т.д. MOV AH,OEH ; Запрос на установку MOV DL,02 ; дисковода C INT 21H ; Вызов DOS Операция возвращает в регистр AL число дисководов (незави симо от типа). Так как для DOS необходимо по крайней мере 2 логических дисковода A и B, то DOS возвращает значение 02 и для систем с одним дисководом. (Для определения действитель ного числа дисководов используется команда INT 11H).




Содержание  Назад  Вперед