Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану
Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану
Міністерство
освіти та науки України
Кіровоградський Державний Технічний університет
Кафедра
програмного забезпечення
Курсова
робота
з
дисципліни “Програмування на мові ASM-86” на тему:
Програма
TXTPRINT.COM - резидентна програма для швидкого і зручного друкування виборчого
тексту з екрану
Зміст
Вступ.
1. Призначення та область
використання системи.
2. Огляд iснуючих систем. Обґрунтування вибору принципу розробки та методики побудови системи. Постановка задачі
по реалізації технічного
завдання
3. Опис та обґрунтування проектних рішень по проектуванню системи.
4. Разрахунки та експерементальні
матеріали які підтверджують вірність
програмних рішень
5. Основнi висновки
Перелiк скорочень, символiв та
спецiальних термiнiв.
Список лiтератури.
Анотацiя.
Додатки.
Текст програми.
Вступ
Програма txtprint.com - резидентна програма, яка предназначена для того, щоб швидко і
зручно надрукувати виборчий текст з екрану. Це може бути корисним, коли
доводиться аналізувати в водночас багато текстової інформаціі, наприклад різні
файли-помічники, текст іншої програми, та багато ін. Також ця програма може
стати у пригоді тоді, коли треба надрукувати текстовий файл, але не повністю,
окремими епізодами. Програма дуже зручна для її використання, займає усього 2
килобайти DOS - пам`яті, також її можна вилучити з пам`яті в будь-який час. Просто і
зрозуміло оформлен інтерфейс з користувачем, отже навчитись роботі з програмою TXTPRINT.COM можна за хвилину.
Також в програмі
встановлено тест на подвійну загрузку, отже при спробі завантажити її вдруге
користувач отримає повідомлення про це, а також програма нагадае про «гарячі» клавіші, таким чином запобігаючи подвійного завантаження.
Програма не конфліктує з іншими резидентними програмами (якщо, звісно, вони
працюють коректно), але в разі змінення ними хочаб одного з векторів преривань INT 08H, INT 09H, INT 28H, INT 2FH програма TXTPRINT.COM не в змозі буде вилучитись з пам`яті
по вимозі користувача. Про це програма видасть повідомлення, і нагадає про
причину цього (не на вершині). Але після вилучення з пам`яті тієї програми, що
змінила вище перечислених векторів преривань, при подальшої вимоги користувача
програму TXTPRINT.COM теж буде вилучено з пам`яті.
1.
Призначення та область використання системи
Програма TXTPRINT.COM призначена для друку на принтері
вибіркового тексту з екрану. Також її можна використовувати в учбових закладах
для полегчення і прискорення засвоєння потрібної документації з комп`ютера (різні HELP-програми, завдання задач та ін.).
Для цього користувачу потрібно перед переглядом документації на комп`ютері завантажити програму TXTPRINT.COM і в потрібний час викликати її за
допомогою «гарячих» клавиш. Потім помітити потрібну частину тексту і дати
команду «печатати». Після чого цей текст розпечатається на принтері, і буде
більш зручнішим для прочитання та багаторазового перегляду під час виконання
роботи (лабораторної тощо). Програма має дуже простий і зручний інтерфейс, що
дуже полегшує роботу з нею, займає усього 2 кілобайти DOS-пам`яті.
Також ця програма
дуже цікава з точки зору вивчення резидентних програм. На її прикладі можна
обучати студентів по роботі з функціями DOS в резидентних програмах.
2. Огляд існуючих систем, обґрунтування вибору принципу розробки та методики побудови
системи. Постановка задачі по
реалізації технічного завдання
Існує багато
систем, у яких можна зробити вибіркову розпечатку тексту (усі
програми-редактори, та багато ін.), але їх недолік у тому, що вони не
резидентні, і можуть розпечатувати тільки текст, редагуванням якого вони
займаються.
Програма TXTPRINT.COM повинна бути резидентною, працювати
швидко та надійно при різних процесорах, а також займати якомога менше пам`яті. Тому задача розроблялась на мові
асемблера (ASM-86) для TASM версії не нижче 2.0.
Програма повинна:
n бути резидентною і не конфліктувати з
операційною системою та іншими програмами;
n викликатись по натисненню «гарячих»
клавиш; мати дружній інтерфейс з користувачем;
n розпечатувати помічений текст з
екрану;
n не завантажуватись в друге;
n займати якомога менше пам`яті;
n по вимозі користувача вилучатись з
пам`яті.
По обґрунтуванню
та реалізації цього завдання см. розділ 3.
3. Опис та обґрунтування
проектних рішень по проектуванню системи
Усе, що
приводиться у цьому параграфi вiдноситься тiльки до "випригуючих"
(popup) резидентних програм.
Реентабельною
(повторно входимою) програмою називаеться програма чи процедура, одна копiя
якої в пам`ятi може бути одночасно викликатись кiлькома процесами, при чьому
рiзноманiтнi виповнювання цiєї процедури не впливають одна на одну.
Нереентабильність
MS-DOS проявляеться в неможливiстi звертання к функцiям DOS, якщо вже
виповнюеться яка-небудь iнша функцiя DOS. Порушення цiєї вимоги призведе до
зруйнування системного стеку i краху операцiйної системи. Саме з
нереентабильнiстю DOS пов`язанi основнi труднощi розработки popup - програм.
Справа в тому, що цi резидентнi програми використовують для свого запуску
аппаратнi преривания, якi можуть статися в будь-який час, у тому числi й тодi,
коли виповнюється функцiя DOS.
Найпростiше
рiшення цiєї проблеми складається у повнiй вiдмовi вiд використання системного
сервiсу DOS в резидентних програмах. Iнколи це не дуже складно. Так, для виводу
на дiсплей можна користуватись прериванням BIOS 10H чи прямим записом у
вiдеобуфер, для вводу символiв з клавiатури приємлимо користуватись прериванням
16H, при роботi з принтером i послiдовними портами також неважко працювати на
рiвнi BIOS. Але у разi, коли потрiбен дисковий ввод - вивод, це вже стає дуже
проблематичним.
Працювати з
дисками средствами BIOS - дiйсно дуже хлопотна справа.
Iснують i iншi
ситуацiї, коли зручнiше було б використовувати функцiї DOS. Отже, треба
навчитися перемагати нереентабiльнiсть DOS. Для цього iснує багато можливостей.
Почнем з того, що
існує простий (хоча й недокументований) спосiб запобiгнути конфлiктiв з операційною
системою. При активiзацiї програма може перевiрити байтовий прапорець активнiстi
DOS i, якщо вiн вiдмiнний вiд нуля (сервiс DOS недоступний), повернутись до
пасивного стану. Адресу цього прапорця повiдомляє функцiя DOS 34H.
Функція 34H. Дає адресу прапорця активністі DOS
Виклик: AH = 34H
Повертає: ES:BX - адреса прапорця
Нажаль, якщо
вибрати цей путь, така резидентна программа, скоріше за все, взагалі буде не
взмозі стартувати. Це пов`язано з тим, що COMMAND.COM та багато інших програм проводять
багато часу в очикуванні ввода строки з клавіатури посредством функції DOS 0AH, і, отже, прапорець активністі DOS майже завжди взведений. Ця обставина
використовується у диспетчері функцій DOS, який може мати вигляд на зразок цього:
Int_21h PROC far
sti
pushf
cmp
ah,0Ah ;
якщо номер функції не рівний 0ah,
jnz Exec ; то приступити к
виконанню.
Fn0Ah:
push ax ; якщо функція 0ah, то затримати
mov ah,0bh ; її
виповнення до тіх пір, поки у
int 21h ; буфері клавіатури
не з`явиться
cmp al,0 ; хочаб один символ.
pop ax
jnz
Exec
push
cx
mov
cx,4000h
Delay: loop
Delay ; зробити
паузу
pop
cx
jmp
short Fn0Ah ; і
повторити перевірка буфера.
Exec:
or
byte ptr cs:DOS_busy,01h ; встановити признак
; зайнятості
DOS.
Popf ; визвати початковий
обробник.
pushf
call
dword ptr cs:[Int_21h_vect]
pushf
and
byte ptr cs:DOS_busy,0feh ; скинути признак
;
зайнятості.
popf
ret
2
Int_21h_vect
dd ?
Dos_busy
db 0
Int_21h
ENDP
Запит на
виконання функції 0AH не передається одразу до операційної
системи. Замість цього периодично перевіряється стан буфера вводу (функція DOS 0BH або функція 01H преривання 16H). І вже тільки після того як буфер
почав заповниватися, визивається функція 0AH.
Оберніть увагу на те, як оформлен возврат у програму - це викликано тим, що DOS використовує прапорець CF в якості признаку помилки.
Важливо те, що в
описаному прикладі можна відмовитись від перевірки недокументованого прапорця
активністі DOS. Замість того диспетчер
встановлює свій власний прапорець, який дотого ж бітовий, отже він може бути об`єднан з іншими прапорцями резидентної
програми.
Диспетчер функцій
DOS - приємлимий, але не
найбільш вдалий спосіб перевагання нереєнтабільності DOS. Програмам, використовуючим його,
далеко не завжди вдається стартувати. Крім того, їм приходиться аналогічним
чином відслежувати ще й преривання 25H (читати сектор), 26H (писати
сектор) DOS, а також преривання 13H BIOS.
Страницы: 1, 2, 3, 4, 5 |