Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи № 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с
Висновок: В даній лабораторній роботі я навчився складати складні програми з використанням підпрограм, а також дослідів використання стеку при створенні програм.