Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
aizek1
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 9
1

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

05.12.2016, 17:28. Просмотров 760. Ответов 8

Собственно, не меняется дата и время, не могу понять в чем ошибка.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
STK segment para stack 'stack'
        db 200 dup(?)
STK ends
 
data segment para 'data'
stdout equ 1        ; дескриптор стандартного вывода
cr equ 0dh      ; возврат каретки
lf equ 0ah          ; перевод строки
handle dw ?             ; ячейка для дескриптора
oldname     db  '1.txt',0       ;Старое имя файла
old         db  'old',0         ;Старое имя файла
newname     db  '2.txt',0       ;Новое имя файла
sec         dw  6/2                 ;6 секунд
min         dw  15*32           ;15 минут
hour        dw  16*2048             ;16 часов
day         dw  25              ;25 число
mon         dw  3*32                ;март
year        dw  13*512          ;13 лет от 1980 года
 
data ends
 
code segment para public 'code'
assume cs:code, ds:data, ss:stk
 
main proc
mov ax,data
mov ds,ax
 
push    DS
pop     ES
 
;Переименуем файл
mov     AH,56h          ;Функция переименования
mov     DX, offset oldname  ;Адрес старого имени
mov     DI, offset newname  ;Адрес нового имени
int     21h
 
;Установим атрибут системный
mov     AH,43h      ;Функция работы с атрибутами
mov     AL,1            ;Установка атрибутов
mov     CX,20           ;Системный
mov     DX, offset newname ;Адрес имени файла
int     21h
 
;Удалим ненужный каталог
mov     AH,3Ah          ;Функция удаления каталога
mov     DX, offset old  ;Адрес старого имени
int     21h 
 
;Откроем файл
mov     AH,3Dh          ;Функция открытия файла
mov     AL,2                ;Доступ для чтения/записи
mov     DX, offset newname  ;Адрес имени файла
int     21h
mov     handle,AX           ;Получили дескриптор
 
;Изменим дату и время создания файла
mov     AH,57h          ;Функция даты/времени
mov     AL,1                ;Установить дату/время
mov     BX, handle          ;Дескриптор файла
mov     CX,0                ;Очистим CX
or  CX, sec             ;Добавим секунды
or  CX, min             ;Добавим минуты
or  CX, hour            ;Добавим часы
xor     DX, DX          ;Очистим DX
or  DX, day             ;Добавим день
or  DX, mon             ;Добавим месяц
or  DX, year            ;Добавим год
int     21h
 
;Завершим программу
mov     AX,4C00h            ;Функция завершения, код
int     21h                 ;завершения = 0
 
main endp
code ends
end main

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2016, 17:28
Ответы с готовыми решениями:

Время создания первого файла в каталоге
Написать на языке ассемблер com-программу, которая позволит вывести данные про...

Изменить дату создания файла. TASM
Требуется помощь. Нужно создать файл, а потом изменить дату его создания. Кроме...

Изменить время модификации файла
Есть файл. Любой файл. У него есть дата создания и дата изменения. Где...

Скрыть файлы и изменить дату
Помогите написать программу для скрытия всех файлов *.asm и изменения их даты!

Системный таймер. Вывести дату и время на экран на разных строках экрана
Вывести дату и время на экран на разных строках экрана. .model small .stack...

8
R71MT
4632 / 1438 / 306
Регистрация: 29.07.2014
Сообщений: 2,476
Записей в блоге: 5
05.12.2016, 20:30 2
Цитата Сообщение от aizek1 Посмотреть сообщение
не меняется дата и время
..так она у тебя не правильно задана. Справочник есть? Под отладчиком прогонял этот код?
Функция(57h) возвращает у тебя в АХ код ошибки(0Dh), а это "Не правильное время/дата":

Добавлено через 5 минут
Код
--------D-215700-----------------------------
INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
    AX = 5700h
    BX = file handle

Return:  CF clear if successful / set on error
    CX = file's time (see #01665)
    DX = file's date (see #01666)
    AX = error code (01h,06h) (see #01680)

Bit(s) Description (Table 01665)
 15-11 hours (0-23)
 10-5  minutes
  4-0  seconds/2

Bit(s) Description (Table 01666)
  15-9 year - 1980
   8-5 month
   4-0 day

Error-code (Table 01680)
Values for DOS extended error code:
------------------------------------
 00h (0)  no error
 01h (1)  function number invalid
 02h (2)  file not found
 06h (6)  invalid handle
 0Bh (11) format invalid
 0Dh (13) data invalid             <---------------------------------||
 0Fh (15) invalid drive
 12h (18) no more files
0
Ethereal
4849 / 1870 / 243
Регистрация: 17.02.2013
Сообщений: 2,780
07.12.2016, 15:57 3
А я запускаю под FAR в Windows XP-32 и у меня все работает. И граблей не вижу.

Добавлено через 1 минуту
Цитата Сообщение от R71MT Посмотреть сообщение
..так она у тебя не правильно задана.
В том то и дело, что правильно. Файл будет якобы создан 25 марта 1993 в 16:15.
0
R71MT
4632 / 1438 / 306
Регистрация: 29.07.2014
Сообщений: 2,476
Записей в блоге: 5
07.12.2016, 16:04 4
Цитата Сообщение от Ethereal Посмотреть сообщение
В том то и дело, что правильно
Не знаю.. У меня
Цитата Сообщение от R71MT Посмотреть сообщение
в АХ код ошибки(0Dh)
0
Ethereal
4849 / 1870 / 243
Регистрация: 17.02.2013
Сообщений: 2,780
08.12.2016, 10:00 5
Так ПОД ЧЕМ ты запускаешь ? Я сказал под чем. Ты нет.
0
R71MT
4632 / 1438 / 306
Регистрация: 29.07.2014
Сообщений: 2,476
Записей в блоге: 5
08.12.2016, 10:54 6
-FASM/-XP/-NTVDM
0
Ethereal
4849 / 1870 / 243
Регистрация: 17.02.2013
Сообщений: 2,780
08.12.2016, 17:18 7
Может у тебя шибко вумный антивирус стоит, который не дает передатировать файлы задним числом ? А может для такой передатировки нужны права Админа ? А может так низзя в NTFS (у меня FAT-32) ? И еще куча подобных нелепых предположений типа значения ключа реестра NtfsDisableLastAccessUpdate или что-то типа того.

Дело в том, что с точки зрения чистой MS-DOS в программе ошибок нет.

Добавлено через 14 минут
В файловой системе NTFS временные атрибуты файлов содержатся в файловой записи для каждого файла в главной файловой таблице (MFT). И как ни странно у файла их ровно 8!, а не 3 как мы привыкли. За временные атрибуты отвечает две структуры $STANDARD_INFORMATION и $FILE_NAME, каждая из которых содержит: дату и время создания файла, последнего изменения файла, последнего доступа к файлу, а также дату и время последнего изменения сведений в файловой записи.

Вот как там все запущено. И мы со своим DOS-овским рылом да в NTFS-овский калашный ряд. Всякое от того может быть.
1
R71MT
4632 / 1438 / 306
Регистрация: 29.07.2014
Сообщений: 2,476
Записей в блоге: 5
08.12.2016, 17:36 8
Цитата Сообщение от Ethereal Посмотреть сообщение
А может так низзя в NTFS (у меня FAT-32)
..видимо в этом проблема.
Исходник уже отправил в топку (брал просто структуру со-временем, и вставлял его в фасмовский код), поэтому если сл.раз будет нужно, то учту эти варианты. Кстати ХР-32, и обычно под NTVDM никаких глюков не наблюдается (кроме конечно-же INT-13, и некоторых портов). Видимо точно из-за NTFS
1
Ethereal
4849 / 1870 / 243
Регистрация: 17.02.2013
Сообщений: 2,780
08.12.2016, 18:13 9
Я вот подумал а зачем в NTFS с этими датами такой огород городили ? Зачем 4 штуки да еще и в двух экземплярах ? Зачем вот это ?
Цитата Сообщение от Ethereal Посмотреть сообщение
дату и время последнего изменения сведений в файловой записи.
Это же вообще информационный мусор. А нет ... не мусор. Если нужно уличать на суде.
А тут ты средствами другой операционной системы, да файл задним числом. Да как посмел ?
0
08.12.2016, 18:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2016, 18:13

Всем .obj файлам в директории выставить другую время и дату модификации
Здравствуйте! Мне нужно всем obj файлам в директории выставить другую дату и...

Дата создания файла
При помощи функции 57h прерывания 21h в регистрах cx и dx сохраняются время...

Месяц создания первого файла
Ребят, здравствуйте !:) Надеюсь, это моя последняя просьба о помощи с кодом на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru