Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи № 2
з курсу
Мікропроцесорні пристрої
Мета: Дослідження особливостей складання підпрограм та звертання до них; вивчення методів розроблення програм та розроблення стеку при створенні програм.
Теоретичні відомості.
Для зменшення затрат часу на складання програм, а також для зменшення об”єму необхідної для зберігання цих програм пам”яті, намагаються зробити програми коротшими. Тому ту частину програми, що багатократно повторюється або програму, що часто використовується виконують у вигляді підпрограми – послідовності команд, виконання яких може бути викликане з будь-якого місця програми будь-яку кількість разів.
Для виклику підпрограм та повернення з них використовують команди CALL ADDR та RET.
Команда CALL ADDR завантажує в програмний лічильник РС мікропроцесора вміст байтів ADDR (початкова адреса підпрограми), що записані в наступних двох комірках пам”яті після коду команди CALL (CD). Після коду CD разу записується молодший байт адреси, а наступним слідує старший байт адреси. При цьому мікропроцесор автоматично зберігає в стеку адресу команди основної програми, до якої він повертається після виконання підпрограми. Стек – це частина (область) оперативного запам”ятовуючого пристрою, що використовується мікропроцесором для тимчасового зберігання даних та адрес. Команда RET завантажує із стеку в програмний лічильник останнє записане на даний момент число. Це число є адресою команди основної програми, з якої почнеться її виконання.
Завдання.
Скласти програму для реалізації часової затримки tз = 20с.
Блок-схема.
Головна програма (Main):
Підпрограма 1 (РР1):
Підпрограма 2 (РР2):
Програма.
Адреса
Код
Мітка
Мнемокод
Коментар
Час затримки (мкс)
Кількість тактів
-
-
Головна
програма
-
-
-
8100, 8101
06 40
Main
Mvi B, 20
(B)←20
1,7
7
8102-8104
CD 00 82
CALL 8200
(PC)←{8200}
1,17
17
8105
05
DCR B
(B)←(B)-1
1,5
5
8106-8108
C2 02 81
JNZ 8102
(PC)←{8102}, якщо z=1
1,10
10
8109-810B
CD 00 03
CALL 0300
(PC)←{0300}
17
17
810C
76
HLT
Вихід
7
7
Підпрограма 1
8200, 8201
0E 10
РР1
Mvi C, 10
(C)←10
7
7
8202-8204
0D 00 83
CALL 8300
(PC)←{8300}
17
17
8205
0D
DCR C
(C)←(C)-1
5
5
8206-8208
C2 02 82
JNZ 8202
(PC)←{8202}, якщо z=1
10
10
8209
C9
RET
Вихід з РР1
10
10
Підпрограма 1
8300, 8301
16 FF
PP2
Mvi D, FF
(D)←FF
7
7
8302
15
DCR D
(D)←(D)-1
5
5
8303-8305
C2 02 83
JNZ 8302
(PC)←{8302}, якщо z=1
10
10
8306
C9
RET
Вихід з РР2
10
10
Затримка програми.
1. Затримка Підпрограми 2.
tз1 = (7+10+15*(FF)10)мкс = (17+15*255)*10-6 = 65042(мкс) ≈ 0,065 с
2. Затримка Підпрограми 2.
tз1 = (7+10+(32+65042)*(10)10)мкс = (7+10+65074*16)мкс = (17+1041184)*10-6=1,041201с
3. Затримка Головної програми.
tз = (7+7+17+(17+5+10+1041201))*10-6 ≈ 20с
Висновок: В даній лабораторній роботі я навчився складати складні програми з використанням підпрограм, а також дослідів використання стеку при створенні програм.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!