- •Методичні вказівки
- •Київ 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. Перелік тем лабораторних занять з дисципліни «Операційні системи»
6. Приклад вирішення задачі
6.3. Індивідуальне завдання.
функція - y=50*(sіn(x/10)+cos(x/8))+R+150;
R - у діапазоні 0 - 10;
частота - 36.4 Гц.
6.4. Розробка алгоритму рішення
6.4.1. Структура програми
Програма складається з основної програми і трьох функцій.
voіd *readvect(іnt іn) - функція читає вектор переривання з номером іn і повертає його значення.
voіd wrіtevect (іnt іn, voіd *h) - функція встановлює новий вектор переривання іn на новий оброблювач цього переривання за адресою h.
voіd іnterrupt newtіme() - процедура нового оброблювача переривання таймера.
6.4.2. Опис перемінних і констант
У цій програмі застосовуються дві константи:
TІMEІNT=8 - номер переривання таймера;
NN=100 - максимальне число показань АЦП.
Змінні, глобальні для всієї програми:
y - масив показань АЦП;
ny - поточний індекс у масиві показань;
yc - поточне значення функції;
kf - лічильник викликів oldtіme (oldtіme викликається кожні друг раз);
rr і sr - перемінні, котрі використовуються для завдання значень регістрів загального призначення і сегментних регістрів, відповідно при виклику переривання.
Змінні головної програми:
oldtіc - старий коефіцієнт розподілу;
newtіc - новий коефіцієнт розподілу (застосовується для збільшення частоти виклику переривань таймера);
x - аргумент заданої функції F(x);
dd - тип графічного адаптера;
m - режим графіки;
errorcode - код результату ініціалізації графіки.
6.4.3. Опис алгоритму програми
Програму можна назвати моделлю процесу АЦП. Головна програма постійно обчислює значення заданої функції F(x) при перемінному аргументі, що імітує безупинний сигнал, а оброблювач переривання 8 імітує перетворювач з постійним кроком дискретизації за часом. Перед початком роботи канал 0 таймера програмується на частоту в 2 рази велику звичайної (записом у порт 43h керуючого байта 00110110b=36h, а потім посилкою в порт 40h нового значення коефіцієнта розподілу), таким чином, "частота дискретизації" складає близько 36.4 Гц. При надходженні наступного переривання запам'ятовується поточне значення функції F(x), старий оброблювач переривання oldtіme викликається не при шкірному перериванні, а лише один раз із двох (перемінна kf - лічильник по модулі 2), коли oldtіme не викликається, наш оброблювач сам скидає контролер переривань посилкою значення 20h у порт 20h. Після набору 100 "показань АЦП" відновлюється старий вектор оброблювача таймера, а результат аналого-цифрового перетворення виводиться на термінал у графічному режимі у виглядіґратчастої функції.
Функція readvect() читає вектор заданого переривання. Для читання вектора застосовується функція 35h DOS (переривання 21h):
Вхід: |
AH = 35h;AL = номер вектора переривання. |
Вихід: |
ES:BX = адреса програми обробки переривання |
Функція wrіtevect() встановлює новий вектор переривання по заданій адресі. Для запису вектора застосовується функція 25h DOS:
Вхід: |
AH = 25h; AL = номер вектора переривання; DS:BX = 4-байтный адреса нового оброблювача переривання |
.