Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Получить/изменить дату и время создания или модификации файла можно с помощью подфункций функции 57h.

Поиск

Вход: АХ = 5700h; ВХ = дескриптор файла.

Выход: Если CF = 0: СХ = время, DX = дата.

Если CF = 1: АХ = код ошибки (CF = п. 1 — недопустимый номер подфункции в А1; 6 — недопустимый дескриптор.

Время и дата файла получаются в следующих форматах.

CX=Время DX=Дата
Биты Описание Биты Описание
15-11 Часы (0-23) 15-9 Год
10-5 Минуты 8-5 Месяц
4-0 Секунды 4-0 День

 

Установить дату и время создания или последней модификации файла

Вход: АХ = 5701h; ВХ - дескриптор файла; СХ - новое время, DX = новая дата.

Выход: Если CF = 0: СХ = время, DX = дата.

Если CF = 1 — АХ = код ошибки: 1 — недопустимый номер подфункции в Аl; 6 — недопустимый дескриптор.


Изменение характеристик файлов

Рассмотрим в качестве примера программу задания даты и времени создания файла (пример 13.4).

Пример 7. Назначение файлу даты и времени создания.

;В сегменте команд

;---------------------------Откроем файл ---------------------------------

mov AH,3Dh; Функция открытия файла

mov AL,2

mov DX,offset fname; Адрес имени файла

int 21h

mov handle,ax; Получили дескриптор

;---------------Изменим дату и время создания файла ---------------

mov ah,57h; Функция даты/времени

mov al,1; Установить дату/время

mov bx,handle; Дескриптор файла

mov сх.,0; очистим Сх

or cx,sec; добавим секунды cx=0000 0000 0000 0110

or cx,min; добавим минуты cx=0000 0001 1110 0110

or cx,hour;добавим часы cx=0110 0001 1110 0110

xor dx,dx; очистим dx

or dx,day; добавим день

or dx,month;добавим месяц

or dx,year; добавим год

int 21h

;В сегменте данных

handle dw 0; ячейка для дескриптора

fname db ‘MYFILE.TXT’,0; имя файла

sec dw 6; 6 секунд = 110

min dw 15*32; 15 минут =1111 => 001111 00110

hour dw 12*2048; 12 часов =1100 => 01100 001111 00110

day dw 10; 10 число

month dw 3*32; март

year dw 21*512 21 год от 1980, то есть 2001 г.

 

Для установки даты и времени создания файла используется функция 5701h. Она требует указания даты (в регистре DX) и времени (в регистре СХ) в том же формате, в котором эти данные хранятся в элементе каталога. Сдвиг составляющих даты/времени в соответствующие места осуществляется с помощью команд умножения на этапе трансляции. Например, для сдвига числа минут в группу битов 5... 10 число необходимо умножить на 25=32.


Переименование имеющегося файла

Для переименования имеющегося файла предусмотрена функция 56h. Она требует указания двух спецификаций файла - исходной, чтобы можно было его найти, и новой, присваиваемой файлу.

Если в обеих спецификациях указан один и тот же путь к файлу (или имеется только имя файла), осуществляется его переименование; если же пути различаются, функция выполняет перенос файла в другой каталог. Перенос файла в другой каталог не требует копирования файла на другое место диска; файл остается на том же месте, изменяются только записи об этом файле в каталогах.

Адрес исходной спецификации должен содержаться в регистрах DS:DX; адрес новой спецификации - в регистрах ES:DI.

 

Пример 8. Переименование файла

; В сегменте команд

push DS; Настроим ES на

pop ES;наш сегмент данных

mov AH,56h;Функция переименования

mov DX,offset fname1;Исходная спецификация

mov DI,offset fname2;Новая спецификация

int 21h

;B сегменте данных

fnamel db 'myfile.txt',0

fname2 db 'myfile0l.txt',0

 


На самом низком уровне каталог — тот же файл, в атрибуте которого бит 4 установлен в 1 и который содержит список имен вложенных файлов, их атрибутов и физических адресов на диске.

Создать каталог

Функция DOS 39h — Создать каталог

Ввод:

АН = 39h

DS:DX = адрес ASCIZ-строки с путем, в котором все каталоги, кроме последнего, существуют.

Вывод:

CF = 0, если каталог создан

CF = 1 и АХ = 3, если путь не найден, 5 — если доступ запрещен

 

Удалить каталог

Функция DOS 3Ah — Удалить каталог

Ввод:

АН = 3Ah

DS:DX = адрес ASCIZ-строки с путем, последний каталог в котором будет удален (только если он пустой, не является текущим)

Вывод:

CF = 0, если каталог удален

CF = 1 и АХ = 3, если путь не найден, 5 — если доступ запрещен, 10h — если удаляемый каталог — текущий

Определить текущий каталог

Функция DOS 47h — Определить текущий каталог

Ввод:

АН = 47h

DL = номер диска (00h — текущий, 01h — А: и т.д.)

DS:SI = 64-байтный буфер для текущего пути (ASCIZ-строка без имени диска, первого и последнего символа «\»)

Вывод:

CF = 0 и АХ = 0100h, если операция выполнена

CF = 1 и АХ = 0Fh, если указан несуществующий диск

 


Перечень функций прерывания 21h, работающих с файлами, которые имеют длинные имена и соответствующие функции API Win32.

  +     +   +   +     + +   +


Перечислим функции API Win32, имеющие отношение к работе с файловой системой.

  + +   +     +   +     +   +     +

 

 

  +     +  


Получение атрибутов файлов



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.36.130 (0.005 с.)