Главная » Просмотр файлов » Текст программы

Текст программы (1071438), страница 2

Файл №1071438 Текст программы (КП - мониторинг файлов) 2 страницаТекст программы (1071438) страница 22017-12-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

308 02FF Loaded:

309 ;Действия по установке программы в памяти

310 02FF E8 0061 call SaveOldVectors

311 0302 E8 007B call SetNewVectors

312 0305 BB 0410r lea BX, MesLoaded

313 0308 E8 FFB8 call PrintStr

314 ;Оставим программу резидентной

315 030B BA 002F mov DX,(ressize+10Fh)/16;Размер в параграфах

316 030E B8 3100 mov AX, 3100h ;функция завершить и оставить в памяти

317 0311 CD 21 int 21h

318 0313 installed:

319 0313 80 3E 0407r 01 cmp UnloadFlag,1 ;Запрос на выгузку установлен?

320 0318 74 05 je unload ;Да, на выгрузку

321 031A B8 4C01 mov ax,4c01h ;Завешим программу обычным образом

322 031D CD 21 int 21h ;код завершения = 1

323 031F unload:

324 031F E8 0011 call CheckOther

325 ;Прервем резидентную копию программы

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

327 0324 B0 01 mov AL,01h ;Подфункция прерывания

328 0326 CD 2D int 2Dh

329 0328 BB 0463r lea BX,MesUnloaded

330 032B E8 FF95 call PrintStr

331 ;Первая копия программы выгружена. Завершим и эту.

332 032E B8 4C00 mov ax,4c00h ;Завешим программу обычным образом

333 0331 CD 21 int 21h ;код завершения = 0

334 0333 init endp

335 ;------------------------------------------------------------

336 ;

337 ;------------------------------------------------------------

338 0333 CheckOther proc

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

340 0333 B4 35 mov AH,35h ;Функция получения вектора

341 0335 B0 2D mov AL,2Dh ;Номер вектора

342 0337 CD 21 int 21h

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

OPCL.asm

343 0339 89 1E 0408r mov word ptr temp_2Dh,BX ;Сохраним старое IP

344 ;Сохраним вектор DOS прерывания 21h

345 033D B4 35 mov AH,35h ;Функция получения вектора

346 033F B0 21 mov AL,21h ;Номер вектора

347 0341 CD 21 int 21h

348 0343 89 1E 040Cr mov word ptr temp_21h,BX ;Сохраним старое IP

349 ;Проверка наша программа ли была загружена?

350 0347 81 3E 0408r 0179r cmp word ptr temp_2Dh, offset new_2Dh

351 034D 75 09 jne OtherLoaded

352 034F 81 3E 040Cr 01C5r cmp word ptr temp_21h, offset new_21h

353 0355 75 01 jne OtherLoaded

354 0357 C3 ret

355 0358 OtherLoaded:

356 0358 BB 053Cr lea BX,MesOtherLoaded

357 035B E8 FF65 call PrintStr

358 035E B8 4C00 mov ax,4c00h ;Завешим программу обычным образом

359 0361 CD 21 int 21h ;код завершения = 0

360 0363 CheckOther endp

361 ;--------------------------------------------------------

362 ; Процедура сохранения старого обработчика прерываний

363 ;--------------------------------------------------------

364 0363 SaveOldVectors proc

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

366 0363 B4 35 mov AH,35h ;Функция получения вектора

367 0365 B0 2D mov AL,2Dh ;Номер вектора

368 0367 CD 21 int 21h

369 0369 89 1E 0103r mov word ptr old_2Dh,BX ;Сохраним старое IP

370 036D 8C 06 0105r mov word ptr old_2Dh+2,ES ;Сохраним старое CS

371 ;Сохраним вектор DOS прерывания 21h

372 0371 B4 35 mov AH,35h ;Функция получения вектора

373 0373 B0 21 mov AL,21h ;Номер вектора

374 0375 CD 21 int 21h

375 0377 89 1E 0107r mov word ptr old_21h,BX ;Сохраним старое IP

376 037B 8C 06 0109r mov word ptr old_21h+2,ES;Сохраним старое CS

377 037F C3 ret

378 0380 SaveOldVectors endp

379 ;------------------------------------------------------

380 ; Процедура установки новых векторов

381 ;-------------------------------------------------------

382 0380 SetNewVectors proc

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

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

385 0382 B0 2D mov AL,2Dh ;Номер вектора

386 0384 BA 0179r mov DX, offset new_2Dh ;Адрес нового обработчика

387 0387 CD 21 int 21h

388 ;Заполним вектор DOS прерывания 21h

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

390 038B B0 21 mov AL,21h ;Номер вектора

391 038D BA 01C5r mov DX, offset new_21h ;Адрес нового обработчика

392 0390 CD 21 int 21h

393 0392 C3 ret

394 0393 SetNewVectors endp

395 ;------------------------------------------------------

396 ; Процедура проверки параметра

397 ;------------------------------------------------------

398 0393 CmdLine proc

399 ;Получим хвост комманы из PSP

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

OPCL.asm

400 0393 26: 8A 0E 0080 mov CL,ES:80h ;Длина хвоста из PSP

401 0398 80 F9 00 cmp CL,0

402 039B 74 15 je ahead ;Программа запущена без параметров

403 039D 32 ED xor CH,CH ;Теперь CX=CL=длина хвоста

404 039F 8B D1 mov DX,CX ;Сохраним CX в DX

405 03A1 BE 0405r lea SI, tailHelp ;DS:SI->поле tailHelp в проге

406 03A4 8B CA mov CX,DX ;Восстановим CX из DX

407 03A6 E8 0038 call scanHelp

408 03A9 WrongParam: ;Введен неверный параметр

409 03A9 BB 0499r lea BX, MesWrongParam

410 03AC E8 FF14 call PrintStr

411 03AF E8 0041 call Help

412 03B2 ahead:

413 03B2 B4 C8 mov AH,0C8h ;Наша функция прерывания 2Dh

414 03B4 B0 00 mov AL,00 ;Подфункция проверки установки

415 03B6 CD 2D int 2Dh

416 03B8 3C FF cmp Al,0FFh

417 03BA 75 11 jne NOT_I

418 ;Прервем резидентную копию программы

419 03BC B4 C8 mov AH,0C8h ;Наша функция прерывания 2Dh

420 03BE B0 01 mov AL,01h ;Подфункция прерывания

421 03C0 CD 2D int 2Dh

422 03C2 BB 0463r lea BX,MesUnloaded

423 03C5 E8 FEFB call PrintStr

424 ;Первая копия программы выгружена. Завершим и эту.

425 03C8 B8 4C00 mov ax,4c00h ;Завешим программу обычным образом

426 03CB CD 21 int 21h ;код завершения = 0

427 03CD NOT_I:

428 03CD C3 ret

429 03CE CmdLine endp

430

431 03CE scanUnload proc

432 ;Процедура сканирования хвоста на пробелы

433 03CE FC cld ;Вперед

434 03CF BF 0081 mov DI,81h ;ES:DI->хвост в PSP

435 03D2 F3> AE repe scasb

436 03D4 4F dec DI ;DI->на первый символ после пробелов

437 03D5 B9 0002 mov CX,2 ;Ожидаемая длина праметра

438 03D8 F3> A6 repe cmpsb ;Сравниваем введенный текст с ожидаемым

439 03DA 75 04 jne GoExitUnload ;Введена неизвестная комманда

440 03DC FE 06 0407r inc UnloadFlag ;Установим флаг на выгрузку

441 03E0 GoExitUnload:

442 03E0 C3 ret

443 03E1 scanUnload endp

444 ;-----------------------------------------------------------

445 ;Проверка параметра на хелп

446 ;-----------------------------------------------------------

447 03E1 scanHelp proc

448 ;Процедура сканирования хвоста на пробелы

449 03E1 FC cld ;Вперед

450 03E2 BF 0081 mov DI,81h ;ES:DI->хвост в PSP

451 03E5 F3> AE repe scasb

452 03E7 4F dec DI ;DI->на первый символ после пробелов

453 03E8 B9 0002 mov CX,2 ;Ожидаемая длина праметра

454 03EB F3> A6 repe cmpsb ;Сравнивае введенный текст с ожидаемым

455 03ED 75 03 jne GoExitHelp ;Введена неизвестная комманда

456 03EF E8 0001 call Help ;Вывод справки

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

OPCL.asm

457 03F2 GoExitHelp:

458 03F2 C3 ret

459 03F3 scanHelp endp

460

461 03F3 Help proc ;Процедура вызова справки и

462 ;завершение программы

463 03F3 BB 04B2r lea BX, MesHelp

464 03F6 E8 FECA call Printstr

465 03F9 B8 4C02 mov AX,4c02h ;Завешим программу обычным образом

466 03FC CD 21 int 21h ;код завершения = 1

467 03FE C3 ret

468 03FF Help endp

469 ;------------------------------------------------------------

470 ; Процедура вызова 21 прерывания

471 ;------------------------------------------------------------

472 03FF call_int21h proc

473 03FF 2E: FF 1E 0107r call CS:old_21h

474 0404 CF iret

475 0405 call_int21h endp

476 ;------------------------------------------------------------

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

478

479 0405 2F 3F tailHelp db '/?'

480 0407 00 UnloadFlag db 0 ;Флаг требования выгрузки

481 0408 00000000 temp_2Dh dd 0

482 040C 00000000 temp_21h dd 0

483 0410 50 72 6F 67 72 61 6D+ MesLoaded db 'Program ',22h,'INT registrator',22h,'was loaded to memory.', +

484 20 22 49 4E 54 20 72+ 10,13,0

485 65 67 69 73 74 72 61+

486 74 6F 72 22 77 61 73+

487 20 6C 6F 61 64 65 64+

488 20 74 6F 20 6D 65 6D+

489 6F 72 79 2E 0A 0D 00

490 0441 44 6F 75 62 6C 65 20+ db 'Double uploading is impossible.',10,13,0

491 75 70 6C 6F 61 64 69+

492 6E 67 20 69 73 20 69+

493 6D 70 6F 73 73 69 62+

494 6C 65 2E 0A 0D 00

495 0463 50 72 6F 67 72 61 6D+ MesUnloaded db 'Program ',22h,'INT registrator',22h,' was unloaded from memory.',10, +

496 20 22 49 4E 54 20 72+ 13,0

497 65 67 69 73 74 72 61+

498 74 6F 72 22 20 77 61+

499 73 20 75 6E 6C 6F 61+

500 64 65 64 20 66 72 6F+

501 6D 20 6D 65 6D 6F 72+

502 79 2E 0A 0D 00

503 0499 42 61 64 20 63 61 6C+ MesWrongParam db 'Bad call of program.',10,13,10,13,0

504 6C 20 6F 66 20 70 72+

505 6F 67 72 61 6D 2E 0A+

506 0D 0A 0D 00

507 04B2 48 6F 77 20 74 6F 20+ MesHelp db 'How to use program ',22h,'INT registrator',22h,': OPCL.COM [/?]',10,13

508 75 73 65 20 70 72 6F+

509 67 72 61 6D 20 22 49+

510 4E 54 20 72 65 67 69+

511 73 74 72 61 74 6F 72+

512 22 3A 20 4F 50 43 4C+

513 2E 43 4F 4D 20 5B 2F+

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

OPCL.asm

514 3F 5D 0A 0D

515 04E7 54 6F 20 6C 6F 61 64+ db 'To load to memory: OPCL.COM',10,13

516 20 74 6F 20 6D 65 6D+

517 6F 72 79 3A 20 4F 50+

518 43 4C 2E 43 4F 4D 0A+

519 0D

520 0504 54 6F 20 75 6E 6C 6F+ db 'To unload from memory: UNLDTSR.EXE',10,13

521 61 64 20 66 72 6F 6D+

522 20 6D 65 6D 6F 72 79+

523 3A 20 55 4E 4C 44 54+

524 53 52 2E 45 58 45 0A+

525 0D

526 0528 48 65 6C 70 3A 20 4F+ db 'Help: OPCL.COM /?',10,13,0

527 50 43 4C 2E 43 4F 4D+

528 20 2F 3F 0A 0D 00

529 053C CD E5 E2 EE E7 EC EE+ MesOtherLoaded db 'Невозможно выгрузить программу ',22h,'Регистратор событий',22h,' из +

530 E6 ED EE 20 E2 FB E3+ памяти.',10,13

531 F0 F3 E7 E8 F2 FC 20+

532 EF F0 EE E3 F0 E0 EC+

533 EC F3 20 22 D0 E5 E3+

534 E8 F1 F2 F0 E0 F2 EE+

535 F0 20 F1 EE E1 FB F2+

536 E8 E9 22 20 E8 E7 20+

537 EF E0 EC FF F2 E8 2E+

538 0A 0D

539 057D C2 EE E7 EC EE E6 ED+ db 'Возможно для векторов 2Dh, 21h были установлены новые обработчики +

540 EE 20 E4 EB FF 20 E2+ прерываний',10,13,0

541 E5 EA F2 EE F0 EE E2+

542 20 32 44 68 2C 20 32+

543 31 68 20 E1 FB EB E8+

544 20 F3 F1 F2 E0 ED EE+

545 E2 EB E5 ED FB 20 ED+

546 EE E2 FB E5 20 EE E1+

547 F0 E0 E1 EE F2 F7 E8+

548 EA E8 20 EF F0 E5 F0+

549 FB E2 E0 ED E8 E9 0A+

550 0D 00

551 05CC ???? handle dw ?

552 05CE 00 fhandle db 0

553 05CF 00 fhandle2 db 0

554

555 05D0 4C 4F 47 2E 54 58 54+ newfile db 'LOG.TXT',0

556 00

557 05D8 ???? opclfile dw ?

558 05DA ???? opclfile2 dw ?

559 05DC 66 69 6C 65 20 77 61+ string db 'file was opened',10, 13

560 73 20 6F 70 65 6E 65+

561 64 0A 0D

562 =0011 stringln equ $-string

563 05ED text ends

564 end main

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

Symbol Table

Symbol Name Type Value Cref (defined at #)

??DATE Text "24/05/07"

??FILENAME Text "OPCL "

??TIME Text "12:26:45"

??VERSION Number 040A

@CPU Text 0101H

@CURSEG Text TEXT #1

@FILENAME Text OPCL

@WORDSIZE Text 2 #1

AHEAD Near TEXT:03B2 402 #412

CALL_INT21H Near TEXT:03FF #472

CHECKOTHER Near TEXT:0333 324 #338

CLOSEFILE Near TEXT:025A 125 #194

Характеристики

Тип файла
Документ
Размер
159 Kb
Тип материала
Высшее учебное заведение

Список файлов курсовой работы

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