Текст программы (КП - мониторинг файлов)

2017-12-28СтудИзба

Описание файла

Файл "Текст программы" внутри архива находится в следующих папках: КП - мониторинг файлов, anka, documentation. Документ из архива "КП - мониторинг файлов", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.

Онлайн просмотр документа "Текст программы"

Текст из документа "Текст программы"

16


Московский Государственный Технический Университет имени Н.Э. Баумана.

УТВЕРЖДАЮ

"___"__________2006 г.

_____________________

(Виноградова М.В.)

Программа "Регистратор открытия/закрытия файлов"

Текст программы

(тип документа)

Бумага формата А4

(вид носителя)

16

(количество листов)

ИСПОЛНИТЕЛЬ

" " 2006 г.

_____________________

(Зелинская А.Д.)

Москва – 2006

СОДЕРЖАНИЕ

1. opcl.lst 3

2. UNLDTSR.lst 15


1. opcl.lst

Turbo Assembler Version 4.1 24/12/06 12:26:45 Page 1

OPCL.asm

1 0000 text segment 'code'

2 assume CS:text, DS:text

3 org 100h

4 0100 main proc far ;Главная процедура

5 0100 E9 01E5 jmp init

6 ;----------------------------------------------------------------

7 ;//////////Резидентный модуль////////////////////////////////////

8 ;-----------------------------------------------------------------

9 ;Поля для резидентной части программы

10 0103 00000000 old_2Dh dd 0

11 0107 00000000 old_21h dd 0

12 010B 0A 0D 00 MesCRLF db 10,13,0

13 010E 0A 0D 41 74 74 65 6E+ MesNew db 10, 13, 'Attention! File was opened: ',0

14 74 69 6F 6E 21 20 46+

15 69 6C 65 20 77 61 73+

16 20 6F 70 65 6E 65 64+

17 3A 20 00

18 =001F mesNewln equ $-MesNew

19 012D 0A 0D 41 74 74 65 6E+ MesCl db 10, 13, 'Attention! The file was closed: ',0

20 74 69 6F 6E 21 20 54+

21 68 65 20 66 69 6C 65+

22 20 77 61 73 20 63 6C+

23 6F 73 65 64 3A 20 00

24 =0023 MesClln equ $-MesCl

25 0150 0A 0D 45 72 72 6F 72+ MesError db 10, 13, 'Error! Impossible to open file log.txt',0

26 21 20 49 6D 70 6F 73+

27 73 69 62 6C 65 20 74+

28 6F 20 6F 70 65 6E 20+

29 66 69 6C 65 20 6C 6F+

30 67 2E 74 78 74 00

31

32 ;Резидентная секция программы

33 ;---------------------------------------------------------

34 ; Процедура обработчика мультиплексорного прерывания

35 ;----------------------------------------------------------

36 0179 new_2Dh proc far ;Обработчик мультиплексного прерывания

37 0179 9C pushf

38 017A 1E push DS

39 017B 06 push ES

40

41 017C 0E push CS ;DS:=CS

42 017D 1F pop DS

43

44 017E 80 FC C8 cmp AH,0C8h ;Наша фукция прерывания 2Dh?

45 0181 75 10 jne out_2Dh

46 0183 3C 00 cmp AL,00h ;Подфунция проверки на повторную установку

47 0185 74 06 je insert

48 0187 3C 01 cmp AL,01h ;Подфункция выгрузки

49 0189 74 0F je uninstall

50 018B EB 06 jmp short out_2Dh ;Неизвестна подфункция.На выход.

51 018D insert:

52 018D B0 FF mov AL,0FFh ;Программа уже установлена

53 018F 07 pop ES

54 0190 1F pop DS

55 0191 9D popf

56 0192 CF iret

57 0193 out_2Dh:

Turbo Assembler Version 4.1 28/12/06 12:26:45 Page 2

OPCL.asm

58 0193 07 pop ES

59 0194 1F pop DS

60 0195 9D popf

61 0196 FF 2E 0103r jmp old_2Dh

62 019A uninstall: ;Выгрузим программу

63

64 ;Восстановим вектор мультиплексного прерывания 2Dh

65 019A B4 25 mov AH,25h ;Функция заполнения вектора

66 019C B0 2D mov AL,2Dh ;Номер вектора

67 019E 2E: C5 16 0103r lds DX,CS:old_2Dh

68 01A3 CD 21 int 21h

69 ;Восстановим вектор прерывания DOS

70 01A5 B4 25 mov AH,25h ;Функция заполнения вектора

71 01A7 B0 21 mov AL,21h ;Номер вектора

72 01A9 2E: C5 16 0107r lds DX,CS:old_21h

73 01AE CD 21 int 21h

74

75 ;Получим из PSP адрес собственного окружения и восстановим его

76 01B0 2E: 8E 06 002C mov ES,CS:2Ch ;в ES адрес окружения из PSP

77 01B5 B4 49 mov AH,49h ;Фукция освобождения памяти

78 01B7 CD 21 int 21h

79 ;Выгрузим саму программу

80 01B9 0E push CS

81 01BA 07 pop ES

82 01BB B4 49 mov AH,49h ;Фукция освобождения памяти

83 01BD CD 21 int 21h

84 01BF B0 99 mov AL,99h ;Код успешной выгрузки

85 01C1 07 pop ES

86 01C2 1F pop DS

87 01C3 9D popf

88 01C4 CF iret

89 01C5 new_2Dh endp

90 ;-------------------------------------------------------------

91 ; обработчик прерывания 21h

92 ;-------------------------------------------------------------

93 01C5 new_21h proc far ;Обработчик прерывания DOS

94 ;Адрес строки имени файла в DS:DX. Она завршена 0

95 01C5 9C pushf

96 01C6 1E push DS

97 01C7 50 push AX

98 01C8 06 push ES

99 01C9 52 push DX

100

101 01CA 1E push DS ;ES:=старый DS

102 01CB 07 pop ES

103

104 01CC 0E push CS ;DS:=CS

105 01CD 1F pop DS

106

107 01CE 80 FC 3D cmp AH, 3Dh ;Открытие файла

108 01D1 74 10 je New_3Dh

109 01D3 80 FC 3E cmp AH, 3eh ;Закрытие файла

110 01D6 74 10 je New_3eh

111

112

113 01D8 Finally:

114 01D8 5A pop DX

Turbo Assembler Version 4.1 28/12/06 12:26:45 Page 3

OPCL.asm

115 01D9 07 pop ES

116 01DA 58 pop AX

117 01DB 1F pop DS

118 01DC 9D popf

119 01DD 2E: FF 2E 0107r jmp dword ptr cs:old_21H

120 01E2 CF iret

121 01E3 New_3Dh: ;Функция открытия файла

122 01E3 E8 0007 call OpenFile

123 01E6 EB F0 jmp Finally

124 01E8 New_3eh:

125 01E8 E8 006F Call CloseFile ; Функция закрытия файла (описателя)

126 01EB EB EB jmp Finally

127

128

129 01ED new_21h endp

130 ;---------------------------------------------------------

131 ; Процедура сообщения об открытии файла

132 ;----------------------------------------------------------

133 01ED OpenFile proc ;Процедура сообщения о создании файла

134 ;Адрес строки имени файла в DS:DX. Она завршена 0

135 01ED 50 push AX

136 01EE 52 push DX

137 01EF 53 push BX

138

139 01F0 06 push ES ;DS:=старый DS

140 01F1 1F pop DS

141 01F2 89 16 05D8r mov opclfile, DX

142

143 01F6 0E push CS

144 01F7 1F pop DS

145

146 01F8 B4 3D mov AH, 3Dh ;функция открытия файла

147 01FA B0 01 mov AL, 1 ;режим доступа - запись

148 01FC BA 05D0r mov DX, offset newfile ;адрес спецификации файла

149 01FF 9C pushf

150 0200 2E: FF 1E 0107r call CS:old_21h

151 0205 A3 05CCr mov handle, AX ;запоминаем дескриптор

152 0208 73 09 jnc nex

153 020A BB 0150r lea BX, MesError

154 020D E8 00B3 call PrintStr

155 0210 E9 00AC jmp ExitCloseFile

156

157

158 0213 nex:

159 0213 B4 42 mov AH, 42h ; Функция установки указателя

160 0215 B0 02 mov AL, 02 ; От конца файла

161 0217 8B 1E 05CCr mov BX, handle

162 021B B9 0000 mov CX, 0 ;Старшая половина указателя

163 021E BA 0000 mov DX, 0 ;Младшая половина указателя

164 0221 CD 21 int 21h

165 ;Допишем новую строку

166 0223 B4 40 mov AH, 40h

167 0225 8B 1E 05CCr mov BX, handle

168 0229 B9 001F mov CX, mesnewln

169 022C BA 010Er lea DX, mesnew

170 022F 9C pushf

171 0230 2E: FF 1E 0107r call CS:old_21h

Turbo Assembler Version 4.1 28/12/06 12:26:45 Page 4

OPCL.asm

172 0235 B4 40 mov AH, 40h

173 0237 8B 1E 05CCr mov BX, handle

174 023B B9 000A mov CX, 10 ;длина имени файла

175 023E 06 push ES

176 023F 1F pop DS

177 0240 8B 16 05D8r mov DX, opclfile

178 0244 9C pushf

179 0245 2E: FF 1E 0107r call CS:old_21h

180 ;Закрытие файла

181 024A B4 3E mov AH, 3Eh

182 024C 8B 1E 05CCr mov BX, handle

183 0250 9C pushf

184 0251 2E: FF 1E 0107r call CS:old_21h

185 0256 ExitOpenFile:

186 0256 5B pop BX

187 0257 5A pop DX

188 0258 58 pop AX

189 0259 C3 ret

190 025A OpenFile endp

191 ;---------------------------------------------------------

192 ; Процедура сообщения о закрытии файла

193 ;---------------------------------------------------------

194 025A CloseFile proc

195 ;Адрес строки имени файла в DS:DX. Она +

196 завершена 0

197 025A 50 push AX

198 025B 52 push DX

199 025C 53 push BX

200

201 025D 06 push ES ;DS:=старый DS

202 025E 1F pop DS

203

204 025F 0E push CS

205 0260 1F pop DS

206

207 0261 B4 3D mov AH, 3Dh ;функция открытия файла

208 0263 B0 01 mov AL, 1 ;режим доступа - запись

209 0265 BA 05D0r mov DX, offset newfile ;адрес спецификации файла

210 0268 9C pushf

211 0269 2E: FF 1E 0107r call CS:old_21h

212 026E A3 05CCr mov handle, AX ;запоминаем дескриптор или код ошибки

213 0271 73 09 jnc nex1

214 0273 BB 0150r lea BX, MesError

215 0276 E8 004A call PrintStr

216 0279 EB 44 90 jmp ExitCloseFile

217

218

219 027C nex1:

220 027C B4 42 mov AH, 42h ; Функция установки указателя

221 027E B0 02 mov AL, 02 ; От конца файла

222 0280 8B 1E 05CCr mov BX, handle

223 0284 B9 0000 mov CX, 0 ;Старшая половина указателя

224 0287 BA 0000 mov DX, 0 ;Младшая половина указателя

225 028A CD 21 int 21h

226 ;Допишем новую строку

227 028C B4 40 mov AH, 40h

228 028E 8B 1E 05CCr mov BX, handle

Turbo Assembler Version 4.1 28/12/06 12:26:45 Page 5

OPCL.asm

229 0292 B9 0023 mov CX, mesClln

230 0295 BA 012Dr lea DX, mesCl

231 0298 9C pushf

232 0299 2E: FF 1E 0107r call CS:old_21h

233 029E B4 40 mov AH, 40h

234 02A0 8B 1E 05CCr mov BX, handle

235 02A4 B9 000A mov CX, 10 ;длина имени файла

236 02A7 06 push ES

237 02A8 1F pop DS

238 02A9 8B 16 05D8r mov DX, opclfile

239 02AD 9C pushf

240 02AE 2E: FF 1E 0107r call CS:old_21h

241 ;Закрытие файла

242 02B3 B4 3E mov AH, 3Eh

243 02B5 8B 1E 05CCr mov BX, handle

244 02B9 9C pushf

245 02BA 2E: FF 1E 0107r call CS:old_21h

246

247 02BF ExitCloseFile:

248 02BF 5B pop BX

249 02C0 5A pop DX

250 02C1 58 pop AX

251 02C2 C3 ret

252 02C3 CloseFile endp

253 ;--------------------------------------------------------------

254 ; Печать строки через функции BIOS

255 ;--------------------------------------------------------------

256 02C3 PrintStr proc ;Процедура печати строки через BIOS

257 ;Вход: смещение строки в BX

258 02C3 50 push AX

259 02C4 57 push DI

260 02C5 53 push BX

261 02C6 B4 0E mov AH,0Eh ;Функция вывода символа

262 02C8 cycl:

263 02C8 80 3F 00 cmp [BX],byte ptr 0 ;Сравним с 0

264 02CB 74 0E je exit

265 02CD 8A 07 mov AL,[BX] ;Символ

266 02CF 8B FB mov DI, BX ;Сохраняем адрес строки в DI

267 02D1 B9 0001 mov CX,1

268 02D4 CD 10 int 10h

269 02D6 8B DF mov BX, DI ;Восстанавливаем адрес строки из DI

270 02D8 43 inc BX

271 02D9 EB ED jmp cycl

272 02DB exit:

273 02DB 5B pop BX

274 02DC 5F pop DI

275 02DD 58 pop AX

276 02DE C3 ret

277 02DF PrintStr endp

278 ;--------------------------------------------------------------

279 ; Перевод строки

280 ;--------------------------------------------------------------

281 02DF CRLF proc ;Процедура перевода строки

282 02DF 53 push BX

283 02E0 BB 010Br lea BX, MesCRLF

284 02E3 E8 FFDD call PrintStr

285 02E6 5B pop BX

Turbo Assembler Version 4.1 28/12/06 12:26:45 Page 6

OPCL.asm

286 02E7 C3 ret

287 02E8 CRLF endp

288 02E8 main endp

289

290 =01E8 ressize=$-main ;Размер в байтах резидентной части

291 ;---------------------------------------------------------------

292 ; процедура инициализации

293 ;---------------------------------------------------------------

294 02E8 init proc

295 02E8 E8 00A8 call CmdLine ;вызов процедуры обработки параметров

296 ;Проверим установлена ли данная программа

297 02EB B4 C8 mov AH,0C8h ;Наша функция прерывания 2Fh

298 02ED B0 00 mov AL,00 ;Подфункция проверки установки

299 02EF CD 2D int 2Dh

300 02F1 3C FF cmp Al,0FFh

301 02F3 75 03 jne NotInstalled ;Программа не установлена.

302 02F5 EB 1C 90 jmp Installed ;Программа установлена.

303 ;При наличии флага ее можно выгрузить

304

305 02F8 NotInstalled:

306 02F8 80 3E 0407r 01 cmp UnloadFlag, 1 ;Если вызвана с параметрами - неверно

307 02FD 75 00 jne Loaded

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее