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



       

ГЛАВА 17. Дисковая память III: Расширенные функции DOS - часть 9


0 - смещение от начала файла.

Ассемблер для IBM PC. Глава 17. 9

1 - смещение текущего значения файлового указателя, которое может быть в любом месте, включая начало файла. 2 - смещение от конца файла. Размер файла (и следовательно смещение до конца файла) можно определить, установив регистровую пару CX:DX в 0 и используя код 2 в регистре AL.

В следующем примере устанавливается файловый указатель на смещение 1024 байта от начала файла:

MOV AH,42H ; Установка указателя MOV AL,00 ; от начала файла LEA BX,HANDLE1 ; Установка файлового номера MOV CX,00 ; MOV DX,1024 ; Смещение 1024 байта INT 21H ; Вызов DOS JC error

Правильно выполненная операция сбрасывает флаг CF и воз вращает новый указатель в регистровой паре DX:AX. Неправиль ная операция устанавливает флаг CF в 1 и возвращает в регист ре AX код 01 (ошибка кода отсчета) или 06 (ошибка файлового номера).

Проверка или изменение атрибута: шест.43 Для проверки или изменения файлового атрибута в оглавле нии диска используется функция шест.43H. При этом в регистре DX должен быть установлен адрес ASCIIZ строки. Для проверки атрибута регистр AL должен содержать 00. Для изменения атрибута регистр AL должен содержать 01, а регистр CX - новое значение атрибута. Следующий пример устанавливает нормальный атрибут:

MOV AH,43H ; Запрос на установку MOV AL,01 ; нормального MOV CX,00 ; атрибута LEA DX,PATHNM2 ; ASCIIZ-строка INT 21H ; Вызов DOS

В случае проверки функция возвращает текущий атрибут фай ла в регистре CX. В случае изменения функция устанавливает в соответствующем элементе оглавления атрибут из регистра CX. Неправильная операция возвращает в регистре AX коды ошибок 02, 03 или 05.

Получить текущее оглавление: шест.47 Определение текущего оглавления для любого дисковода осуществляется с помощью функции шест.47. При этом необходи мо определить область памяти достаточно большую, чтобы содер жать пути доступа максимальной длины и загрузить адрес этой области в регистр DX. Регистр DL должен содержать номер дисковода: 0 - текущий, 1 - A, 2 - B и т.д. В результате




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