- •Министерство образования и науки Украины
- •«Системное программирование и операционные системы»
- •Чепыгова а. В.
- •Аннотация
- •Содержание
- •Задание
- •Вариант № 2.25
- •Введение
- •Описание применения
- •Назначение программы
- •Структура программы
- •Входные и выходные данные
- •Алгоритм работы программы
- •Инсталляционная часть:
- •Резидентная часть:
- •Руководство пользователя
- •Список литературы
- •Текст программы
-
Описание применения
-
Назначение программы
-
Данная программа представляет собой курсовой проект по курсу «Системное программирование», которая написана на языке Assembler. Она создает выполняемую COM-программу, оставаясь в памяти резидентно. В ней предусматривается изменение цвета фона, при этом подается звуковой сигнал если нажата клавиша Caps Lock. Защитить доступ к программе паролем. Во время выполнения всей программы в правом верхнем углу должна присутствовать информация о разработчике и полное название НАКУ ХАИ.
-
Структура программы
Программа состоит из:
-
CURSA4.ASM - исходного файла программы;
-
MY.MAC – макрос программы;
-
A.TXT – дополнительный файл;
-
Входные и выходные данные
При запуске программы пользователю необходимо ввести пароль. Если пароль введен неверно или в папке отсутствует файл a.txt, то перед пользователем на экране выводиться сообщение об ошибки и выполнение программы завершается. Но если пользователь ввел правильный пароль и необходимое условие выполняется, то выводится сообщение о входе в программу. Программа завершает свою работу и остается в памяти резидентно. И при выполнение необходимых условий будет видно работу программы. При этом вовремя выполнения всей программы в правом верхнем углу будет чередоваться информация о разработчике и полного названия НАКУ ХАИ.
Входные данные:
M_pas db 12 dup() – буфер для хранения пароля вводимого пользователем.
Выходные данные:
MesPass db 'Введите пароль - $'
MesPassError db ' ВХОД НЕ РАЗРЕШЕН!!!!'
db '$'
MesPassOk db ' :-) ВХОД РАЗРЕШЕН :-)! '
db '$'
my_name db ' Чепыгова Ангелина Влодимировна '
my_hai db ' Национальный аэрокосмический университет "ХАИ" '
my_pus db ' '
-
Алгоритм работы программы
-
Инсталляционная часть:
В начале инсталляционной части, до ввода пароля необходимо сделать некоторые действия. Во-первых, прочитать вектор прерывания системного обработчика 1ch (осуществляется с помощью функции 35 int 21h), а затем сохранить его адрес и смещение в резидентных переменных. Во-вторых, установить свой собственный обработчик 1сh_2 (осуществляется с помощью функции 25 int 21h), который будет обеспечивать чередование фамилии разработчика и полного названия НУКА ХАИ, при этом его надо реализовать виде не резидентной процедуры. После этого мы вводим пароль. Перед этим мы очищаем экран процедурой ClearScreen, с помощью макросы vivod выводи запрос о вводе пароля в заданном месте экрана. Ввод пароля осуществляется процедурой Enter_Password. За тем происходит анализ пароля 3-мя уровнями (1 – введенный пароль сравнивается с эталоном, 2 – анализируется нажатие 2-ух клавиш Caps Lock и Num Lock, 3 – проверяется файл в каталоге, при этом если одно из условий не выполняется, осуществляется выход из программы, сопровождающийся соответствующим сообщением). Если пользователь ввел правильный пароль, то выводиться соответствующее сообщение, затем читается (осуществляется с помощью функции 34h int 21h) и сохраняется адрес флажка indos + errormod в резидентных данных. И устанавливается системный обработчик 1ch (осуществляется с помощью функции 25 int 21h) в памяти резидентно. Если нажата клавиша CapsLock, то будет выполняться основная часть программы, то есть меняться цвет фона, это осуществляется с помощью прямого обращения к видеопамяти, и подаваться звуковой сигнал, это осуществляется с помощью обращения к таймеру. В любом состояние клавиши Caps Lock, будет возможна выгрузка программы из памяти с помощью комбинации клавиши Ctrl+F10. Если же пользователь все-таки ввел не правильный пароль, то восстанавливается адрес системного обработчика 1ch, и осуществляется не резидентный выход.
Что бы следить о том правильно ли выполняется программа можно в командной строке прописать следующее – mem /d/p.