/* n - номер повiдомлення */
static char *msg[] = {
"невiрний iдентифiкатор диска",
"логiчний диск вiдсутнiй",
"помилка читання",
"не вистачає пам`ятi",
"пiдкаталог не знайдено",
"файл не знайдено",
"непредбачений кiнець файла",
"" };
/* звiльнення пам`ятi */
if (fatalloc) free(fat);
/* видача повiдомлення */
textattr(12+128);
cprintf(" %s\n",msg[n]);
gotoxy(28,wherey());
cprintf(" Натиснiть будь-яку клавiшу...\n");
textattr(7);
getch();
/* завершення програми */
exit(0);
}
Результати роботи програми: в процесi роботи програми на екран виводиться iнформацiя на зразок такого:
Лабораторная робота N10
Дисковi структури даних DOS.Файл
A:\TEMP.RAR у FAT зймає такi кластери :
Натискуйте будь-яку клавiшу доки не з`явиться <КIНЕЦЬ ФАЙЛА>.
╒<ПОЧАТОК ФАЙЛА>
└─> 2───> 3───> 4───> 5───> 6───> 7───>0x0fff
Висновок: Ознаймилися з дисковими структурами даних.
Лабораторна робота №9
«Резидентні програми»
Мета роботи: Закрiплення практичних навикiв написання резидентних програм.
Індівідуальне завдання: розробити резидентну програму, що повинна :
· розпiзнавати натиск комбiнацiї клавiш LShift+RShift+F1 i реагувати на нього звуковим сигналом;
· при першому натиску " гарячої " комбiнацiї переходити в режим блокування клавiши 1, при другому - скасовувати цей режим;
· при натисненнi клавiш " Ctrl + F11 " вигрузити резидентну програму ;
· системна обробка всiх iнших клавiш при цьому порушуватися не повинна.
Структура програми:
Програма складається з головної функцiї main ( ) i дев'яти допомiжних функцiй
void my_context (void) - функцiя запису контексту Tsr.
void far *readvect (int in) - функцiя читання вектору.
void writevect(int in,void far *vect )- функцiя запису вектору.
void text_print(void) - функцiя повiдомлення про початок роботи.
void restore_vectors(void)-функцiя востановлення векторiв переривання;
void tsr_kill(void) - функцiя видалення tsr програми;
byte check_tsr (void) - функцiя перевiрки наявностi Tsr програми в пам'ятi. (Обробники 9-го перериванiя)
void interrupt (*old9)() - функцiя старого обробника 9-го переривання.
void interrupt new9()- функцiя нового обробника 9-го преривання.
void interrupt (*old2f)() - функцiя старого обробника переривання 2f.
void interrupt new2f () - функцiя нового обробника переривання 2f.
Опис змінних:
Змiннi глобальнi для всiєї програми :
F3_code - скан-код клавiшi " F1 ";
F11_code - скан-код клавiшi " F11 ";
key3_code - скан-код клавiшi " 1 ";
f=0 - Ознака натиснутої комбiнацiї;
tsr_pid - Pid Tsr програми;
Tsr_size=10000/16- Розмiр ( програми в параграфах );
a_2f - адреса старого обробника Int 2f;
jmp_segm - сегм. адреса блоку команд переходу;
com_func - номер комунiкацiйної функцiї переривання 2f;
*ast - адреса в стеці.
Опис алгоритму програми:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.