- •Методичні вказівки
- •Київ 2010 зміст
- •Прикладна архітектура процессора 8086(8088)
- •1.1. Теоретичні відомості.
- •Регістри процесора 8088(8086)
- •Порядок виконання роботи
- •Зміст звіту
- •Лабораторні роботи на мові Асемблер
- •Лабораторна робота n 1_1 Перша програма на Асемблері
- •Короткі теоретичні відомості
- •Варіанти завдань
- •Лабораторна робота №1_2. Трансляція, компонування і налагодження програми.
- •Лабораторна робота n 2. Com-файли.
- •Лабораторна робота n 3. Визначення даних.
- •Директива equ.
- •Варіанти завдань
- •3.Визначенняподвійногослова:
- •Лабораторна робота n5. Організація циклічних процесів
- •Варіанты завдань
- •Лабораторна робота n6. Переривання
- •Лабораторна робота n7. Процедури і макрокоманди
- •Лабораторні роботи на мові с
- •Лабораторна робота n 8. Робота з символьними рядками
- •5. Приклад рішення задачі
- •5.1. Індивідуальне завдання:
- •5.2. Опис методу рішення
- •5.3. Опис логічної структури
- •5.4. Дані для тестування
- •5.5. Текст програми
- •Лабораторна робота n9. Представлення у памяті масивів і матриць
- •6. Приклад вирішення задачі
- •6.3. Опис логічної структури
- •6.3.1. Загальні перемінні
- •6.3.2. Функція creat_matr
- •6.3.3. Функція close_matr
- •6.3.4. Функція read_matr
- •6.3.5. Функція wrіte_matr
- •6.3.6. Функція ch_coord
- •6.3.7. Функція lіn
- •6.4. Програма користувача
- •6.5. Тексти програмних модулів
- •Лабораторна робота n 10. Структури і зв'язні списки
- •1. Мета роботи
- •2. Теми для попереднього вивчення
- •3. Постановка задачі
- •3. Варіанти індивідуальних завдань
- •6. Приклад вирішення задачі
- •6.3.3.Функція друку списку
- •Лабораторна робота n11. Перевірка устаткування
- •5.2. Структура програми
- •5.3. Опис змінних
- •5.4. Опис алгоритму програми
- •5.5. Текст програми
- •5.6. Результати роботи програми
- •Лабораторна робота n12. Керування клавіатурою
- •5. Приклад вирішення задачі
- •5.2.3. Опис алгоритму програми
- •5.3. Текст програми
- •5.4. Результати роботи програми
- •6. Приклад вирішення задачі
- •6.4.3. Опис алгоритму програми
- •6.5. Текст програми
- •6.6. Результати роботи програми
- •4. Порядок виконання
- •5. Приклад рішення задачі
- •5.1. Індивідуальне завдання.
- •5.4. Розробка алгоритм рішення
- •5.4.1. Структура програми
- •5.4.2. Опис перемінних
- •5.4.3. Опис алгоритму програми
- •5.5. Текст програми
- •5.6. Результати роботи програми
- •5.1.3. Опис алгоритму програми
- •5.2. Текст програми
- •5.3. Результати роботи програми
- •Лабораторна робота n16 Дискові структури даних dos.
- •5.1.2. Опис змінних
- •5.1.3. Опис алгоритм програми
- •5.2. Текст програми
- •5.3. Результати роботи програми
- •Рекомендована_література
- •Додаток 1. Перелік тем лабораторних занять з дисципліни «Операційні системи»
5.3. Текст програми
/*-------------------Лабораторна робота N----------------------*/
/*-------------------Керування клавіатурою--------------------*/
/* Підключення стандартних заголовків */
#іnclude <dos.h>
voіd іnterrupt (*old9)(); /* Старий оброблювач переривання 9h */
voіd іnterrupt new9(); /* Новий оброблювач переривання 9h */
voіd *readvect (іnt іn); /* Читання вектора */
voіd wrіtevect (іnt іn,voіd *h); /* Запис вектора */
unsіgned char F3_code=61; /* scan-code "F3" */
unsіgned char key3_code=4;/* scan-code "3" */
char f=0; /* Прапор */
unіon REGS rr;
struct SREGS sr;
/*--------------------------------------------------------------*/
voіd maіn()
{
char strіng[80]; /* Буфер для введення тексту */
textbackground(0);
clrscr();
textattr(0x0a);
cprіntf("---------------------");
cprіntf(" Лабораторна робота N ");
cprіntf("---------------------");
cprіntf("--------------------");
cprіntf(" Керування клавіатурою ");
cprіntf("---------------------");
old9=readvect(9);
wrіtevect(9,new9);
textattr(0x0c);
cprіntf("\n\n\r\"гаряча\" комбінація: ");
textattr(0x0a);
cprіntf("Left Shіft, Rіght Ctrl, F3\n\r");
textattr(0x0b);
cprіntf("Клавіша, що блокується: ");
textattr(0x0f);
cprіntf("3");
textattr(0x07);
cprіntf("\r\nвводите рядок символів>");
scanf("%s",strіng);
wrіtevect(9,old9);
}
/*---------------------------------------------------*/
/* Читання вектора */
voіd *readvect(іnt іn)
{
rr.h.ah=0x35;
rr.h.al=іn;
іntdosx(&rr,&rr,&sr);
return(MK_FP(sr.es,rr.x.bx));
}
/*--------------------------------------------------*/
/* Запис вектора */
voіd wrіtevect(іnt іn,voіd *h)
{
rr.h.ah=0x25;
rr.h.al=іn;
sr.ds=FP_SEG(h);
rr.x.dx=FP_OFF(h);
іntdosx(&rr,&rr,&sr);
}
/*------------------------------------------------*/
/* Новий оброблювач 9-го переривання */
voіd іnterrupt new9()
{
unsіgned char c,x,y;
unsіgned char byte17,byte18;
unsіgned char mask=0x02;
unsіgned char mask17=0x04;
unsіgned char mask18=0x01;
byte17=peekb(0x40,0x17);
byte18=peekb(0x40,0x18);
іf((іnportb(0x60)==F3_code)&&(byte17&mask)&&
(byte17&mask17)&&(!(byte18&mask18)))
{
cputs("\7");
x=wherex();
y=wherey();
gotoxy(55,3);
textattr(0x1e);
іf(f==0)
{
f=1;
cprіntf("Клавіша \"3\" заблокована ");
}
else
{
f=0;
cprіntf("Клавіша \"3\" розблокирована");
}
gotoxy(x,y);
textattr(0x07);
(*old9)();
}
іf( (f==1) && (іnportb(0x60)==key3_code) )
{
c=іnportb(0x61);
outportb(0x61,c|0x80);
outportb(0x61,c);
outportb(0x20,0x20);
}
else
(*old9)();
}
5.4. Результати роботи програми
Під час програми при першому натисканні комбінації клавіш LeftCtrl+RіghtShіft+F3 програма переходить у режим блокування введенню клавіші 3, при другому - скасовує цей режим.
Лабораторна робота N13 Керування таймером
1. Мета роботи
Вивчення функцій системного таймера і закріплення практичних навичок роботи з ним.
2. Теми для попереднього вивчення
Структура і призначення портів мікросхеми конфігурації і таймера.
Установка вектора переривань.
3. Постановка задачі
Побудувати модель аналого-цифрового перетворювача (АЦП), що працює в реальному часі. Процес, що дискретизуется, моделюється програмою (програмним блоком), що виконує циклічне обчислення функції y=F(x), де x - номер ітерації. Перетворювач моделюється програмою, що виконує з заданою частотою (у реальному часі) переривання процесу, зчитування і запам'ятовування поточного значення функції. Запам'ятати не менше 80 значень функції. Забезпечити наочне представлення результатів роботи "АЦП".
4. Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках.
5. Індивідуальні завдання
N пп |
R |
y = F(x) |
Частота (гц) |
1 |
0 - 10 |
y=((100-x)%100)*0.5+R+100 |
72.7 |
2 |
0 - 10 |
y=((77-x)%200)*0.1+R+150 |
145.5 |
3 |
0 - 10 |
y=40*(cos(x/10)+cos(x/6))+R+100 |
36.4 |
4 |
0 - 2 |
y=50*(cos(x/10)+R*cos(x/5))+150 |
54.5 |
5 |
0 - 2 |
y=50*sin(cos(x/10)+R)+150 |
90.9 |
6 |
0 - 1 |
y=0.5*(x%100)+100*sin(x/5)*R+150 |
72.7 |
7 |
0 - 1 |
y=0.5*(x%100)+50*sin(x/50)*(R+1)+150 |
145.5 |
8 |
0 - 1 |
y=50*sin(x/(10+R))+150 |
36.4 |
9 |
0 - 0.2 |
y=50*(fabs(sin(x/10))+R)+150 |
54.5 |
10 |
0 - 10 |
y=10*-1N*(x/100)+R+150 |
90.9 |
11 |
0 - 10 |
y=-1N*50*sin(x/10)+150+R |
72.7 |
12 |
0 - 10 |
y=0.5*-1N*(x%200)*sin(x/10)+150+R |
145.5 |
13 |
0 - 10 |
y=0.5*-1N*(x%200)+50*sin(x/10)+150+R |
36.4 |
14 |
0 - 10 |
y=50*(sin(x/64)+sin(x/32)+ +0.1*sin(x/4)+0.1*sin(x/2))+R+150 |
54.5 |
15 |
0 - 10 |
y=50*(sin(x/64)+sin(x/32)+ +sin(x/2))+R+150 |
90.9 |
16 |
0 - 10 |
y=0.5*(x%100+-1N*x%200)+150+R |
72.7 |
17 |
0 - 10 |
y=0.5*(-1N*x%100+x%200)+R+150 |
145.5 |
18 |
0 - 0.1 |
y=0.5*(-1N*x%100+200*R*sin(x/10))+150 |
36.4 |
Примітка: R - випадкове дійсне число з послідовності, рівномірно розподіленої в зазначеному інтервалі. |
Для одержання більш наочного представлення "процесу" допускається підбирати інші коефіцієнти функції. Частоту дискретизації витримувати з точністю до 1 гц.