яті, крім статичного визначення і механізму стеків, забезпечуваного локальними перемінних функцій. Для ефективної роботи компілятора досить усього 256 Kб оперативної пам'яті. Нарешті, сам по собі С не забезпечує ніяких можливостей уведення висновку: тут немає операторів уведення/висновку і ніяких убудованих методів доступу до файлів. Усі ці механізми високого рівня повинні забезпечуватися явно викликуваними функціями.
Аналогічно мова С пропонує тільки прості, послідовні конструкції потокові керування: перевірки, цикли, групування і підпрограми, але не мультипрограмування, рівнобіжні операції, чи синхронізацію спів програми.
Хоча відсутність деяких з цих засобів може виглядати як обтяжуюча неповноцінність, але утримання мови в скромних розмірах дає реальні переваги. Тому що С відносно малій, він не вимагає багато місця для свого опису і може бути швидко вивчений.
Спочатку, у тім виді, у якому його створив Деннис Ритчи, мова C містив усього 27 ключових слів. Коли з'явився стандарт ANSI C, було додано кілька нових зарезервованих слів. В Microsoft C набір ключових слів розширена і їхня кількість тепер перевищує 70.
Мова програмування С++ є мовою програмування загального призначення. Природна для нього область застосування - системне програмування, що розуміється в широкому змісті цього слова. Крім того, С++ успішно використовується в багатьох областях діяльності. Реалізація С++ тепер є на всіх машинах, починаючи із самих скромних мікрокомп'ютерів - до самих більших супер-эвм, і практично для всіх операційних систем.
Програми, написані мовою C, відрізняються високою ефективністю. Завдяки невеликому розміру модулів, що виконують, а також тому, що C являє собою мова досить низького рівня, швидкість виконання програм мовою C порівнянна зі швидкістю роботи їх асемблерних аналогів.
Мова C підтримує модульне програмування, суть якого складається в можливості роздільної компіляції й компонування різних частин програми. Наприклад, можна виконати компіляцію тільки тієї частини програми, що була змінена в ході останнього сеансу редагування. Це значно прискорює процес розробки великих і середніх проектів, особливо на машинах з обмеженими ресурсами.
Якби мова C не підтримувала модульне програмування, то після внесення невеликих змін у програмний код довелося б компілювати всю програму цілком, що може зайняти занадто багато часу.
.6 Опис алгоритму рішення задач
Програма забороняє видаляти файли в MS - DOS, вона програмується таким чином:
Для розширення набору стандартних функцій підключається наступні бібліотеки: dos. h - бібліотека для роботи з файловою системою MS - DOS, conio. h - бібліотека для створення графічного інтерфейсу
stdio. h - бібліотека для вводу-виводу даних, bios. h - бібліотека для роботи з функціями BIOS;
void interrupt (far *old21) (.); void interrupt (far *old28) (.) - Показник на стару функцію обробки переривань;
void interrupt far new21 (.); void interrupt far new28 (…) - Оголошення новій функції обробки переривань
Описуються змінні f1, f2, flag, qu типу int для запиту та натиснення клавіш F1 в структурі вхідних та вихідних даних;
unsigned size - Розраховується розмір резидентної частини TSR - програми;
size=_DS-_CS +_SP/16+1 - Обчислюємо розмір програми в параграфах;
old21=_dos_getvect (0x21) - Запам'ятовуємо старий вектор переривання 9;
_dos_setvect (0x21,new21) - Вбудовуємо свій обробник переривання 9;
old28=_dos_getvect (0x28) - Запам'ятовуємо старий вектор переривання 28;
_dos_setvect (0x28,new28) - Вбудовуємо свій обробник переривання 28;
clrscr (); textcolor (12); gotoxy (20,6) - Очищуємо екран, задаємо координати та створюємо титульну сторінку;
dos_keep (0,size) - Завершуємо програму і залишаємося в пам'яті;
void interrupt far new28 (…) - Новий обробник переривання 28;
asm cli - Заборона переривань;
_chain_intr (old28) - Передача керування на старий обробник переривання;
void interrupt far new28 (.) - Новий обрабник переривання;
asm cli - заборона переривань;
if (f1==1) - Якщо flag1 встановлений в 1, то виводиться допомога;
clrscr (); cputs ("DOPOMOGA KORISTUVATHU\n") - Очищуємо екран та виводимо допомогу користувачу;
f1=0 - сброс флага;
clrscr (); textcolor (12); gotoxy (20,16); - Очищуємо екран, задаємо координати та виводимо запит користувача;
flag=0 - Скидаємо флаг натиснення F1;
if (qu==2) clrscr () puts ("pitanie mozhno otkluchit") - Якщо встановлено флаг підтвердження запиту виводиться "pitanie mozhno otkluchit";
chain_intr (old28) - старий обробник переривання;
2.7 Виконання програми
Для запуску резидентної програми необхідно набрати її імя в командному рядку або вибрати її та запустити з будь - якого файлового менеджера. Наприклад: А: \VERTIK
Після запуску програми відбувається титульний аркуш на якому показано тему курсового проекту та його розробника.
При спробі видалення файлу програма повинна вивести попередження в якому повідомляється користувача про заборону видалення файлу.
3. Висновок
В процесі написання курсового проекту було створено резидентну програму яка забороняє видалення файлу в операційної системи MS - DOS.
В результаті розробки проекту мною самостійно була вивчена інформація про обробники переривань. Вивчив метод розміру та обчислювання програми в памяті компютера. Мною були вивчені засоби для графічного оформлення програми.
Також був вивчений теоретичний матеріал, що стосується операційної системи MS - DOS, її внутрішньої архітектури й організації.
В результаті цього було розроблено програму, що є досить зручною у користуванні і достатньо інформативною навіть для недосвідченого користувача. Програма досить схожа із стандартними MS - DOS, що полегшує сприйняття при роботі з нею.
Список використаних джерел
1.Александр Фролов, Григорий Фролов Аппаратное обеспечение IBM PC. Том 2. - М.: Диалог-МИФИ, 1992
2.Александр Фролов, Григорий Фролов MS-DOS для программиста. Том 2. - М.: Диалог-МИФИ, 1995
.Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т.1. Часть 1, 2,3. Операционная система MS-DOS. М: ДИАЛОГ-МИФИ, 1993
.Громов Ю.Ю., Татаренко С.И. Программирование на языке СИ: Учебное пособие. - Тамбов, 1995.
.Шаньгин В.Ф., Бєляєва А.Н. Програмування на мові С/С++. - М.: Высшая школа, 1992.
.Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т.2. Аппаратное обеспечение IBM PC. Часть 1,2. - М: ДИАЛОГ-МИФИ, 1992
Додатки
Додаток А
Схема алгоритму програми
Рисунок А.1 - Схема роботи програми
Додаток Б
Лістинг програми
#include<conio. h>
#include<stdio. h>
#include<dos. h>
#include<bios. h>interrupt (far*old21) (.);interrupt (far*old28) (.);interrupt far new21 (.);interrupt far new28 (.);keycode, flag,f;main () {size;=_DS-_CS+_SP/16+1;=_dos_getvect (0x21);
_dos_setvect (0x21, new21);=_dos_getvect (0x28);
_dos_setvect (0x28, new28);();(25,10); printf ("************************************\n");(25,11); printf ("* *\n");(25,12); printf ("* КУРСОВА РОБОТА *\n");(25,13); printf ("* з системного програмування *\n");(25,14); printf ("* тема РЕЗИДЕНТНА ПРОГРАМА ЗАБОРОНИ ВИДАЛЕННЯ ФАЙЛІВ *\n");(25,15); printf ("* СТУДЕНТА 481 ГРУПИ *\n");(25,16); printf ("* КРИЖАНОВСЬКОГО В.В. *\n");(25,17); printf ("* *\n");(25,18); printf ("*************************************\n");(25,29); printf (" ДЛЯ ПРОДОВЖЕННЯ РОБОТИ НАЖМІТЬ ENTER");();=0;
_dos_keep (0, size);
}interrupt far new21 (.)
{(_AH==0x41)
{=1; _AL=0xFF;
}_chain_intr (old21);
}interrupt far new28 (.)
{(flag==1)
{ clrscr ();("ВИДАЛЕННЯ ERROR) \n");=0; }
_chain_intr (old28);
}