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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
| model tiny
.code
.startup
;---------------------------------------------
lea dx,DTA ;встановлення адресу зміщення для
;локального буфера
mov ah,1ah
int 21h
call Find_First ;пошук першого файла
jc exit1 ;якщо нема файлів перейти до exit1
call Out_Info ;виведення даних про файл
cukl: call Find_Next ;пошук наступного файла
jc exit2 ;якщо нема файлів перейти до exit2
call Out_Info ;виведення даних про файл
loop cukl ;перейти до cukl
exit1 : lea dx,info ;виведення даних info
mov ah,09h
int 21h
exit2 : mov ah,4ch ;завершення програми
int 21h
;----------------------------------------------------------------
Find_First proc ;пошук першого файла
lea dx,Path ;загрузка в dx адреса строки Path
mov cx,00 ;встановлення атрибутів
mov ah,4eh ;виклик функції для пошуку
int 21h
ret
Find_First endp
Find_Next proc ;пошук наступного файла
lea dx,Path ;загрузка в dx адреса строки Path
mov cx,00 ;встановлення атрибутів
mov ah,4fh ;виклик функції для пошуку
int 21h
ret
Find_Next endp
Out_Info proc ;виведення даних про файл
;------------------------------------------------------------------
;вивід імені файла
lea dx,strk ;загрузка в dx адреса строки strk
mov ah,9h ;для переведення курсора на
int 21h ;наступний рядок
mov cx,0dh ;запис в cx 0dh – кілкість байтів,
;які буде виводити ф-я 40h
mov bx,1eh ; імені
;імені файла відносно DTA
lea dx,DTA + bx ; загрузка в dx адреса зміщення
;імені файла
mov bx,1 ;запис в bx=1, див. використання
;функції 40h
mov ah,40h ;виклик функції 40h
int 21h
;-----------------------------------------------------------------
lea dx,sozdan ;вивід на екран слова sozdan
mov ah,09h
int 21h
mov cx,2 ;запис в cx 0dh – кілкість байтів,
mov bx,18h ;загрузка в bx адреса зміщення
;для визначення дати
lea bx,DTA + bx ;загрузка в bx адреса зміщення дати
mov ax,[bx] ;запис в ax значення, що знаходиться ;по адресі в bx
mov di,ax ;запис в di значення ax (в di будемо
;зберігати два байта, що зберігають
;дані про дату
;Vuvid chusla
mov si,10 ;запис в si значення 10
and ax,001fh ;лог. операція складання числа в ax
;з маскою 001fh результат в ax
mov dx,0 ;запис в dx значення 0
div si ;AX/10 результат в AX, залишок в DX
add dx,'0' ;додавання до залишку 30h
lea bx,chuslo ; загрузка в bx адреса зміщення
;строки chuslo
mov [bx+1],dl ;запис в строку із адресом зміщення
; [bx+1] значення, регістра dl
add ax,'0' ;додавання до ax 30h
lea bx,chuslo ; загрузка в bx адреса зміщення
;строки chuslo
mov [bx],al ; запис в строку із адресом зміщення
; [bx] значення, регістра al
lea dx,chuslo ; загрузка в dx адреса зміщення
; строки chuslo
mov ah,09h ;виклик ф-ї виводу на екран строки
;строки chuslo
int 21h ;вивід на екран строки chuslo
;визначеня року
;визначення року відбувається аналогічно визначенню числа, тільки
;потрібно додати 1980, так як вказано у теоретичних відомостях
;і крім того потрібно ділити рік на 10 3 рази, тому що він складається
;з чотирьох цифр (для числа ділити 1 раз, воно склад. з двох цифр),
;а все інше за тим самим принципом, що і для визначення числа
mov ax,di
and ax,0fe00h
shr ax,9 ;Vuvod roky
add ax,1980
mov bp,0
mov di,ax
lea bx,rik+4
cukl2: mov ax,di
mov dx,0
div si
add dx,'0'
mov di,ax
mov [bx],dl
sub bx,1
mov cx,4
add bp,1
sub cx,bp
loop cukl2
mov dx,di
add dx,'0'
mov [bx],dl
lea dx,rik
mov ah,9h
int 21h
lea dx,OB
mov ah,09h
int 21h
ret
Out_Info endp
;-------------------------------------------------------------------------
ret
DTA db 50 dup(?),'$' ;локальний буфер інформації про файл
Path db "Z:\*.*",0 ;шлях і маска пошуку файлів
strk db 0ah,0dh,'$' ;перев. курсора на поч. наступного рядка
rik db 5 dup(?),' roky$' ;рядок, в який записується рік
Mis db ' Sichen $ Lyutogo $ Bereznya $ Kvitnya $ Travnya $ Chervnya $ Lupnya $ Serpnya $ Veresnya $ Ghovtnya $ Lustopada$ Grudnya $'
chuslo db ' $' ;рядок, в який записується число
Sozdan db ' sozdan: $' ;рядок в пам’яті із словом sozdan:
OB db ' y $' ;рядок в пам’яті із словом y
chas db ' : : $' ;рядок, в який записується час
Info db 'V daniy deruktoriyi fayliv nema!!!$'
end |