рефераты рефераты
Главная страница > Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану  
Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Програма Txtprint.com - резидентна програма для швидкого і зручного друкування виборчого тексту з екрану

Обробники преривань 25H і 26H виявляються звичайними функціями - під час повернення управління вони залишають в стеці регистр прапорців. А це класичний приклад помилки, якій в наслідок увішов у документацію.

Найбільш цікавими можливостями преодоління нереєнтабільністі DOS пов`язані з використовуванням недокументованого преривання 28H. Це преривання використовується резидентними процесами самої операційної системи, наприклад, PRINT, та генерується як раз під час виконання функцій DOS, коли прапорець активністі DOS взведений, але система знаходиться у безпечному стані.

За допомогою преривання 28H можна досягнути потрясаючих результатів. Отже, така програма може стартувати, наприклад, під час копіювання файлів, а іноді при форматуванні диску.

При натисканні на «гарячу» клавишу не відбувається негайна активізація програми, а лише встановлюється битовий прапорець, повідомляючий, що поступила команда стартувати. Обробник преривання 28H перевіряє стан прапорця, і, якщо прапорець встановлен, а програма ще не активна, активізує її. На прикінці роботи управління завжди передається завжди повинне передаватись початковому обробнику. Програми, які виконуються усередині преривання 28H, не повинні користуватись функціями DOS з номерами 00H - 0CH.

А як буть, коли довгий час не відбувається звертання до функцій DOS і, отже, не вироблялось преривання 28H? ПроРграма знов не в змозі стартувать. Щоб запобігнути цього, буде потрібна ще одна точка входу, в якісті якої зручно буде обрати обробник якогось часто возникаючого преривання, наприклад, від таймеру. Тоді перед активізацією програми треба перевіряти прапорець активністі DOS, чи свій власний прапорець.

Реакція на виключні випадки.

Іноді в результаті збоїв апаратної частини або неправильних дій користувача може скластися ситуація, коли подальша робота програми виявляється неможливою. В цьому випадку управління дістає спеціальна процедура обробки критичної помилки, адреса якої знаходиться у векторі преривання 24H. Користувач може також сам прервати програму, натиснувши комбинацію клавиш Ctrl+Break. При цьому MS-DOS передає управління до процедури завершення, яка починається по адресі обробника преривання 23H.

Цей сервіс DOS, неодмінно, дуже корисний, але орієнтован на звичайні програми і не може правильно працювати в резидентних програмах. Тому вам слід передбачити власну оброботку виключних випадків або відключити існуючу.

Почнемо з преривання Ctrl+Break. Реакція системи на це преривання залежить від стану прапорця перевірки по Ctrl+Break. Якщо прапорець скинутий, то перевірка натиснення Ctrl+Break і завершення програми відбувається тільки при виконанні функції DOS з номерами 00H - 0CH, а якщо прапорець встановлен, при виконанні будь-яких функцій. Тому, якщо в програмі не використовуються функції DOS 00H-0CH, тоді достатньо скинути прапорець перевірки по Ctrl+Break при активізації резидентної програми і встановити його початкове значення перед поверненням у пасивний стан.


Функція 33H. Прапорець перевірки по Ctrl+Break

Виклик: AH = 33H

AL = 0 - отримати стан прапорця

1 - змінити стан прапорця.

DL (якщо AL=1) = 0 - скинути прапорець

1 - встановити прапорець

Повертає: DL ( якщо AL дорівнював 0) -

стан прапорця:

0 - скинут

1 - встановлен

Для перевірки або зміни стану прапорця зручно застосовувати функцію DOS 33H.

Другий можливий путь - просто відмінити оброботку преривання 23H, тобто змінити його вектор так, щоб він вказував на інструкцію IRET.

При виникнинні критичної помилки (звично це помилка диску) MS-DOS завантажує у регістри AX, DI, SI, BP інформацію про помилку ініцирує преривання 24H. Стандартний системний обробоник преривання веде себе слідуючим чином: видає на дісплей повідомлення про помилку і запит користувача - «Abort, Retry, File or Ignore?» («Прервати, Повторити, Зняти або Ігнорувати»), чекає відповіді і повертає управління функції DOS, при виконанні якої виникла помилка. Подальші дії операційної системи визначається змістом регістру AL(відповідь користувача).

4. Розрахунки та експеріментальні матеріали, що підтверджують вірність програмних рішень

Насправді, програма не має в собі ніяких математичних розрахунків, тільки простіші. Складність написання програми полягала у технічній реалізації поставленої задачі. Тому підтвердити вірність програмних рішень можливо було тільки експеріментально. Були проведені тести на можливу недостачу пам`яті, роботу у версіях DOS 3.2 й вище, також під емуляцією DOS у системі WINDOWS`95. Також програма пройшла тести на правильність друку, загальну роботу з принтером. Результати тестів підтверджують правильність роботи програми. Тести проводилися з EPSON-сумісними принтерами.

5. Основні висновки

Програма TXTPRINT.COM - програма для вибіркового друку тексту з екрану. Для того, щоб получити готовий COM - файл з тексту програми, треба виконати: TASM TXTPRINT.ASM, потім TLINK TXTPRINT.OBJ /T. Після цього запустити програму TXTPRINT.COM. Під час просмотру інформації на екрані, яку треба розпечатати треба натиснути ScrollLock. Після цього, користуючись клавишами курсору і ENTER помітити необхідний фрагмент тексту. Потім для розпечатки натиснути клавишу BackSpace, щоб почати розпечатувати, або ESC в разі, якщо текст був помічений неправильно. Після цього програма завершує своє роботу до наступного виклику по ScrollLock. Коли роботу з розпечаткою закінчено взагалі, можна вилучити програму TXTPRINT.COM з пам`яті за допомогою комбинації клавиш Ctrl+Alt+Esc. Програма повідомить про закінчення своєї роботи, і для того, щоб розпочати роботу програми знов, треба заново завантажувати TXTPRINT.COM.

Програма в процесі роботи змінює вектори преривань 08H, 09H, 28H, 2FH, 23H і 24H. Тому якщо після завантаження TXTPRINT.COM були також завантажені інші програми, використовуючи хоча б одне з цих преривань, то цю програму неможна буде вилучити з пам`яті доти, доки не будуть вилучені ті програми, а отже востановлені вектори цих преривань.


Перелiк скороченнь, символiв та спецiальних термiнiв

i т.д. - i так далi

i т.i. - i таке iнше

та iн. - та iншi

т.я. - так як

п. - пункт

ОС - операцiйна система

popup - резидентні програми, які викликаються користувачем

DOS  - дискова операцiйна система

BIOS - базова система вводу/виводу

INT   - переривання

PC     - персональний комп'ютер

WINDOWS - операцiйна система


Список літератури

1. Р. Джордейн «Справочник программиста персональных компьютеров типа IBM PC» М: Мир, 1991р.

2. П. Абель «Мова асемблера для IBM PC та програмування.» М.: Вища школа,1992.

3. Р. Лей та "Уейт-Груп" «Написання драйверів для MS-DOS.» М.: Мир, 1995р.

4. Електронний спавочник «TeachHelp»

5. Конспект лекцій по системному програмуванню


Анотація

Програма TXTPRINT.COM - програма для вибіркового друку тексту з екрану. Для того, щоб получити готовий COM - файл з тексту програми, треба виконати: TASM TXTPRINT.ASM, потім TLINK TXTPRINT.OBJ /T. Після цього запустити програму TXTPRINT.COM. Під час просмотру інформації на екрані, яку треба розпечатати треба натиснути ScrollLock. Після цього, користуючись клавишами курсору і ENTER помітити необхідний фрагмент тексту. Потім для розпечатки натиснути клавишу BackSpace, щоб почати розпечатувати, або ESC в разі, якщо текст був помічений неправильно. Після цього програма завершує своє роботу до наступного виклику по ScrollLock. Коли роботу з розпечаткою закінчено взагалі, можна вилучити програму TXTPRINT.COM з пам`яті за допомогою комбинації клавиш Ctrl+Alt+Esc. Програма повідомить про закінчення своєї роботи, і для того, щоб розпочати роботу програми знов, треба заново завантажувати TXTPRINT.COM.

Програма в процесі роботи змінює вектори преривань 08H, 09H, 28H, 2FH, 23H і 24H. Тому якщо після завантаження TXTPRINT.COM були також завантажені інші програми, використовуючи хоча б одне з цих преривань, то цю програму неможна буде вилучити з пам`яті доти, доки не будуть вилучені ті програми, а отже востановлені вектори цих преривань.

Текст програми має дев`ять модулів. Їх текст, краткий опис та пояснення приводяться у додатках.


Додатки

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

; Файл TXTPRINT.ASM - основна програма

; Для створення готового продукту необхідно

; виповнити слідуючі команди:

; TASM TXTPRINT.ASM

; TLINK /t TXTPRINT.OBJ

;**************************************************

cr equ 13         ; символ "Возврат каретки".

lf equ 10         ; символ "Перевод строки".

start_offset equ 0b8h   ; сміщення початку резидентної

;              порції у сегменті команд

;              і вершина внутрішнього стеку.

internal_flags record Sf:1,Rf:1,Af:1,Tf:1,Pf:1  ; набор прапорців

;                                       1=печать дозволена

;                                                 1=Int_08h активна

;                                             1=программа активна

;                                             1=команда "удалити"

;                                             1=команда "стартувати"

.model tiny

.code

org 100h

entry:

    jmp boot   ; перейти на процедуру загрузки резиденту.

shift = offset callvideo - start_offset   ; Величина

;                  сдвигу резидентної порції.

Страницы: 1, 2, 3, 4, 5

рефераты
Новости