Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 16.03.2018
Сообщений: 40
emu8086

Месяц создания первого файла

21.04.2018, 19:14. Показов 1802. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, здравствуйте ! Надеюсь, это моя последняя просьба о помощи с кодом на ассемблере Дано задание: Написать на языке ассемблера com-программу, которая позволит вывести данные о месяце создания первого файла в каталоге (в текстовом формате).
В примере была программа, которая должна выводить все данные о каталоге, но она не работала. Я вырезала некоторые части программы (вывод года, времени), оставила только вывод месяца, но после вывода слова "Sozdan", ничего не выводит.
Помогите, пожалуйста
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
.model tiny
.code
.startup
;---------------------------------------------
        lea dx,DTA              
                            
 
  mov ah,1ah
        int 21h
 
        call Find_First             
        jc exit1                    
        call Out_Info               
 
cukl:   call Find_Next                
  jc exit2                  
        call Out_Info               
        loop cukl           
 
exit1 : lea dx,info             
        mov ah,09h
        int 21h
 
exit2 : mov ah,4ch              
        int 21h
;----------------------------------------------------------------
Find_First proc                 
        lea dx,Path         
        mov cx,00                   
        mov ah,4eh              
        int 21h
        ret
Find_First endp
 
Find_Next proc                       
        lea dx,Path     
        mov cx,00                   
        mov ah,4fh          
        int 21h
        ret
Find_Next endp
 
Out_Info proc                   
;------------------------------------------------------------------
                                
  lea dx,strk               
        mov ah,9h                   
        int 21h                 
 
        mov cx,0dh              
                                
  mov bx,1eh                
                                    
  lea dx,DTA + bx               
                                
  mov bx,1                      
                                
  mov ah,40h                
        int 21h
;-----------------------------------------------------------------
        lea dx,sozdan           
        mov ah,09h
        int 21h
 
        mov cx,2                    
        mov bx,18h          
                            
        lea bx,DTA + bx             
        mov ax,[bx]                                     
        mov di,ax                   
                        
    
 
;----------------------------------------------------------------
                            
  mov ax,di                     
        and ax,01e0h                
                        
        shr ax,5                    
 
        sub al,1                
        mov ah,11               
                        
        mul ah                  
        lea dx,Mis              
        add dx,ax                   
 
        mov ah,9h                   
                        
        int 21h
;------------------------------------------------------------------------
 
Out_Info endp
;-------------------------------------------------------------------------
        ret
DTA db 50 dup(?),'$'                
Path db "D:\*.*",0           
strk db 0ah,0dh,'$'             
Mis db ' Sichen  $ Lyutogo  $ Bereznya $ Kvitnya  $ Travnya  $ Chervnya $ Lupnya   $ Serpnya  $ Veresnya $ Ghovtnya $ Lustopada$ Grudnya  $'
chuslo db '   $'                
 
Sozdan db '            sozdan: $'  
OB db ' y $'                
 
Info db 'V daniy deruktoriyi fayliv nema!!!$'  
        end
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2018, 19:14
Ответы с готовыми решениями:

Год создания первого найденного файла
Обещаааю что последнее сообщение с просьбой о помощи с ассемблером. Помогите, пожалуйста, вывести год создания первого файла в каталоге. ...

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

1 месяц для создания сайта
С момента регистрации сайти и до того как он появится в поисковой машине пройдет не менее месяца. Сайт не совсем доделан, так может его уже...

6
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
21.04.2018, 20:08
GingerGi, плохо, что вы совершенно не комментируете код.

Обработку ситуации при отсутствии файлов в каталоге сделаете самостоятельно.
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
.model tiny
 
.code
        ;маски атрибутов файлов
        faReadOnly      equ     01h
        faHidden        equ     02h
        faSystem        equ     04h
        faVolumId       equ     08h
        faDirectory     equ     10h
        faArchive       equ     20h
        ;описатель файла в стандартный вывод
        StdOut          equ     1
 
        org     100h
main    proc
 
start:
        ;программа
 
        ;Настройка DTA
        mov     ah,     1Ah
        lea     dx,     [NewDTA]
        int     21h
        ;Вызов FindFirst
        mov     ah,     4eh
        lea     dx,     [WildCard]
        mov     cx,     [Attribute]
        int     21h
@@Repeat:
        jc      @@FindStop      ;завершение поиска при отрицательном результате
        ;ошибка в DOS, из-за которой функции поиска вместо файлов
        ;возвращается названия каталогов несмотря на атрибуты в поиске
        ;поэтому проверим результат в DTA на то, что это не файл, а каталог
        mov     al,     [dtaAttr]
        test    al,     faDirectory
        jnz     @@FindNext
 
        ;найден подходящий файл
        call    ShowInfo
        jmp     @@FindStop
        ;FindNext
@@FindNext:
        mov     ah,     4Fh
        lea     dx,     NewDTA
        int     21h
        jmp     @@Repeat
 
@@FindStop:
 
        int     20h
main    endp
 
 
ShowInfo        proc
        ;вычисление длины строки с именем файла
        lea     si,     [dtaFileName]
        mov     cx,     0
@@FileNameLength:
        mov     al,     [si]
        inc     si
        inc     cx
        cmp     al,     0
        jne     @@FileNameLength
        dec     cx
        ;вывод имени файла/каталога
        mov     ah,     40h
        mov     bx,     StdOut
        lea     dx,     dtaFileName
        mov     cx,     cx
        int     21h
        ;перевод строки
        mov     ah,     09h
        lea     dx,     CrLf
        int     21h
        ;вывод названия месяца
        mov     si,     [dtaDate]
        mov     cl,     5
        shr     si,     cl
        and     si,     000Fh
        mov     ax,     10
        mul     si
        lea     dx,     [Mis]
        add     dx,     ax
        mov     ah,     09h
        int     21h
        ret
ShowInfo        endp
 
        ;Данные
        CrLf            db      0Dh, 0Ah, '$'
strk    db 0ah,0dh,'$'
Mis     db ' Sichen   $ Lyutogo  $ Bereznya $ Kvitnya  $'
        db ' Travnya  $ Chervnya $ Lupnya   $ Serpnya  $'
        db ' Veresnya $ Ghovtnya $ Lustopada$ Grudnya  $'
chuslo  db '   $'
 
Sozdan  db '            sozdan: $'
OB      db ' y $'
 
Info    db 'V daniy deruktoriyi fayliv nema!!!$'
        ;каталог и маска для поиска
        WildCard        db      'd:\*.*', 0
        ;атрибуты файлов
        Attribute       dw      faReadOnly or faHidden or faSystem or faArchive
        ;новая область DTA для хранения результатов поиска
        NewDTA          label   byte
                        db      15h dup(?)
        dtaAttr         db      ?
        dtaTime         dw      ?
        dtaDate         dw      ?
        dtaFileSize     dd      ?
        dtaFileName     db      0Dh dup(?)
        dtaReserved     db      (80h-2Ch) dup(?)
 
end     main
1
1 / 1 / 0
Регистрация: 16.03.2018
Сообщений: 40
21.04.2018, 20:23  [ТС]
Извините, пожалуйста, что без комментариев. Они есть к каждой строке, но на украинском
Спасибо Вам за помощь!
Но у меня программа возвращает контроль к операционной системе и все
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
21.04.2018, 20:31
Это вопросы можно задавать только на русском или английском (по Правилам форума). А комментарии на украинском можно было не удалять.

Цитата Сообщение от GingerGi Посмотреть сообщение
Но у меня программа возвращает контроль к операционной системе и все
Измените WildCard на '*.*', 0 Может emu8086 не работает с диском D:\

Добавлено через 31 секунду
Ну и ожидание любого нажатия в конец добавьте.
1
1 / 1 / 0
Регистрация: 16.03.2018
Сообщений: 40
22.04.2018, 09:35  [ТС]
Огромное спасибо Вам!
Все работает Сейчас попробую вставить обработку при отсутствии файла и вывод сообщения
И как-то вывести название файла)
Спасибооо большое!
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
22.04.2018, 09:55
Ох, внимательная вы наша!
Имя файла и так выводит, просто не выделяет сопровождающим текстом.
Вывод имени файла через функцию вывода в файл, только хэндлом выступает специальный зарезервированный в DOS со значением равным 1 (вывод на экран). Не через int 21h ah=09h - т.к. изменять признаком конца строки "$" не хотелось, а длину строки с именем можно было посчитать.

Ещё обратите внимание на способ объявления метка NewDTA - через ключевое слово LABEL.
1
1 / 1 / 0
Регистрация: 16.03.2018
Сообщений: 40
22.04.2018, 15:11  [ТС]
Ой все(
Я смотрела только по выводу результата потому что, как уже ранее говорила, не понимаю ничего по ассемблеру
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2018, 15:11
Помогаю со студенческими работами здесь

Найти все файлы у которых месяц создания совпадает с полученным месяцем
Здравствуйте, помогите,пожалуйста. Есть 1.bat в нем написана программа расчета даты (определение текущей даты, затем прибавление или...

Изменение времени создания файла на минус Х дней от текущей даты создания
День добрый, ветераны форума. Помогите пожалуйста следующую задачу: Есть папка в ней вложеные папки и файлы (более 20к штук),...

Перемещение файлов, в дате создания которых есть парный месяц и непарный день
как создать пакетный файл, который перемещает в папку filtered файлы дата созданий которых парный месяц и непарный день.

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

Известна зарплата каждого из 12 работников фирмы за каждый месяц первого квартала.
Известна зарплата каждого из 12 работников фирмы за каждый месяц первого квартала. Организовать ввод информации по этой таблице и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru