Иллюстрированный самоучитель по задачам и примерам Assembler

Создание, открытие, закрытие и удаление файла. Атрибуты файла.

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

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

DX – биты установлены следующим образом: 0..4 – день месяца в диапазоне 1..31; 5..8 = месяц в диапазоне 1..12; 9..15 – число лет, начиная с 1980 года.

Выход: CF = 0 – успешное выполнение функции; CF = 1: АХ код ошибки.

Аналогично функции 5704h данная функция позволяет установить только дату создания файла.

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

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

СХ – биты установлены следующим образом: 0..4 – секунды, деленные на 2; 5..10 = минуты 0..59; 11..15 – часы;

DX – биты установлены следующим образом: 0..4 = день месяца в диапазоне 1..31; 5..8 = месяц в диапазоне 1..12; 9..15 = число лет начиная с 1980 года;

SI – двоичное значение количества 10-миллисекундных интервалов, добавляемых к времени MS DOS в диапазоне 0..199.

Выход: CF = 0 – успешное выполнение функции; CF = 1: АХ – код ошибки.

Данная функция реализована в полном объеме.

Кроме дополнительных функций для работы с различными временными характеристиками файла Windows-версия MS DOS содержит две функции для преобразования форматов времени. Дело в том, что Windows работает со временем в 64 разрядном формате. При этом точкой отсчета является 00 часов 00 минут 1 января 1601 года. Значение времени содержит число 100-наносекундных интервалов, прошедших с этой даты. По расчетам разработчиков этого значения должно хватить на 400 лет. Для того чтобы манипулировать этим 64-разрядным "средневековьем" с целью представления его в виде, воспринимаемом человеком (DOS-время), введена функция 71a7h.

Вход: АХ = 71a7h; BL = 0 – преобразовать 64-разрядное время в DOS-время;

DS:SI = указатель на экземпляр структуры FILETIME, содержащей 64-битное значение времени.

Выход: CF = 0 – успешное выполнение функции, при этом регистры устанавливаются следующим образом: ВН = число 10-миллисекундных интервалов, добавляемых к времени MS DOS (значение в диапазоне 0..199);

СХ – время в упакованном формате со значением бит: 0..4 – секунды, деленные на 2; 5..10 – минуты в диапазоне 0..59; 0..4 – часы в диапазоне 0..23;

DX = дата в упакованном формате со значением бит: 0..4 – день месяца в диапазоне 1.31; 5..8 – месяц в диапазоне 1..12; 9..15 – число лет начиная с 1980 года (для получения истинного значения прибавьте 1980);

CF = 1: АХ – код ошибки.

Структура filetime описывается в программе следующим образом:

FILETIME struc
DwLowOateTime dd?:младшие 32 бита значения времени
DwHighDateTime dd?:старшие 32 бита значения времени
FILETIME ends

Вход: АХ = 71a7h; BL – 1 – преобразовать DOS-время в 64-разрядное время;

ВН = число 10-миллисекундных интервалов, добавляемых ко времени MS DOS (значение в диапазоне 0..199);

СХ = время в упакованном формате со значением бит: 0..4 – секунды, деленные на 2; 5..10 – минуты в диапазоне 0..59; 0..4 – часы в диапазоне 0..23;

DX – дата в упакованном формате со значением бит: 0..4 – день месяца в диапазоне 1..31; 5..8 – месяц в диапазоне 1..12; 9..15 – число лет начиная с 1980 года (для получения истинного значения прибавьте 1980)

DS:SI = указатель на экземпляр структуры FILETIME, в которой вернется 64-битное значение времени.

Выход: CF=O – успешное выполнение функции, при этом в области памяти, адресуемой DS:SI, возвращается 64-битное значение времени;

CF=1: AX – код ошибки.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.