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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
| PRINT MACRO param
push dx
mov dx,offset param
mov ah,09h
int 21h
pop dx
ENDM
INIT MACRO
mov ax,@data
mov ds,ax
ENDM
CLRSCR MACRO
mov ah,0
mov al,2
int 10h
ENDM
INPSTR MACRO inpstr,lenth,needlenth,mes
local new
new:
PRINT mes
mov dx,offset inpstr
mov ah,0ah
mov bx,dx
mov al,needlenth
mov [bx],al
int 21h
mov al,[bx]+1
mov lenth,al
cmp lenth,0
jz new
PRINT ent
ENDM
GETCH MACRO
mov ah,07h
int 21h
ENDM
;-----------------------------------------------------------------------------------------------------------------------
CASE1 MACRO
local more1,@a,obx
cmp ifopen,0
jnz closef
jz more1
ex:
jmp exe
closef:
FILECLOSE handle
more1:
INPSTR filestr,lenthf,13,filenmes
cmp lenthf,0
jz more1
mov ch,0
mov cl,lenthf
mov di,0
@a:
mov al,filestr[di+2]
mov filename[di],al
inc di
loop @a
FILEOPEN filename,handle
GETFILESIZE handle
GETFILELARGE handle
mov ifopen,1
ENDM
FILECLOSE MACRO handle
mov ah,3eh
mov bx,handle
int 21h
ENDM
FILEOPEN MACRO path,handle
local endd,errorp
mov ah,3Dh
mov al,00
lea dx,path
int 21h
jc errorp
mov handle,ax
jmp endd
errorp:
PRINT warningmes
GETCH
jmp ente
endd:
ENDM
NUMTOSTR MACRO num,str
mov ax,num
mov bl,100
div bl
mov si,0
add al,48
mov str[si],al
sub al,48
mul bl
mov bx,num
sub bx,ax
mov ax,bx
mov bl,10
div bl
add al,48
inc si
mov str[si],al
sub al,48
mul bl
mov bx,num
sub bx,ax
mov ax,bx
add ax,48
inc si
mov str[si],al
mov str[si+1],'$'
ENDM
GETFILESIZE MACRO handle
mov ah,42h
mov al,2
mov bx,handle
mov cx,0
mov dx,0
int 21h
jc er
jnc next
er:
PRINT warn
GETCH
next:
mov size,ax
NUMTOSTR size,strout
PRINT filesmes
PRINT strout
ENDM
GETFILELARGE MACRO handle
mov bx,handle
mov al,0
mov ah,57h
int 21h
mov date,cx
mov time,dx
mov cl,3
shr ch,cl
mov cl,ch
mov ch,0
NUMTOSTR cx,strout
PRINT ent
PRINT strout
mov cx,date
mov ax,cx
and ax,0000011111100000b
mov cl,5
shr ax,cl
mov cx,ax
NUMTOSTR cx,strout
PRINT dwo
PRINT strout
mov cx,date
and cx,0000000000011111b
NUMTOSTR cx,strout
PRINT dwo
PRINT strout
PRINT ent
mov cx,time
mov ax,cx
and ax,1111111000000000b
mov cl,9
shr ax,cl
mov cx,ax
NUMTOSTR cx,strout
PRINT strout
PRINT spase
mov cx,time
mov ax,cx
and ax,0000000111100000b
mov cl,5
shr ax,cl
mov cx,ax
NUMTOSTR cx,strout
PRINT strout
PRINT spase
mov cx,time
and cx,0000000000011111b
NUMTOSTR cx,strout
PRINT strout
PRINT spase
GETCH
ENDM
;----------------------------------------------------------------------------------------------------------------------
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
startmes db 13,10,'Выберите вариант:',13,10,'1. Найти размер файла* .',13,10,'2.Выйти',13,10,'$'
filenmes db 13,10,'‚Введите имя файла :',13,10,'$'
warningmes db 13,10,'Файл не найден!!!',13,10,'$'
filename db 13 dup(0)
filestr db 15 dup ('*')
ent db 13,10,'$'
writestr db 258 dup ('@')
lenthf db 0
lenths db 0
handle dw 0
ifopen db 0
SIZE DW 0
STROUT DB 4 DUP('?')
WARN DB 'CANT GO TO END'
filesmes db 10,13,'Размер файла : $'
date dw 0
dwo db ':$'
spase db ' $'
time dw 0
.CODE
INIT
CLRSCR
ente:
PRINT startmes
inp:
GETCH
cmp al,'1'
jz mitka1
cmp al,'2'
jz ex
jmp inp
mitka1:
CASE1
jmp ente
exe:
mov ah,4Ch
int 21h
END |