Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА общее.doc
Скачиваний:
34
Добавлен:
18.03.2015
Размер:
5.16 Mб
Скачать

Організація програм

У різних випадках застосування перед МП ставляться різні завдання. Наприклад, вольтметр із убудованим МП повинен виміряти вхідну напругу й послати дані на дисплей. Процесор повинен перевести дані у вольти й автоматично підтримувати нуль шкали. Вимірник може мати клавіатуру /для уведення користувачем спеціальних запитів/. Для автоматичної установки діапазону процесор може бути пов'язаний з аттенюатором. Кожна із завдань, що коштують перед МП, є в основному незалежній і може бути представлена відносно простою програмою. Потім одна загальна /основна/ програма може об'єднати всі спеціалізовані програми, не вдаючись у подробиці кожного завдання.

Проведемо аналогію зі структурою великого підприємства. Директор не може виконати всю роботу, але він може приймати всі головні рішення-. Йому не треба турбуватися про те, якою мітлою підмітати двірникові, тому що це .можуть вирішити інші люди. Існує ряд заступників, які відповідають за певні напрямки роботи. У них у підпорядкуванні перебувають начальники рангом нижче, які.у свою чергу, управляють іншими службовцями. На підприємстві кожний має завдання для рішення, і чим нижче ви на службових сходах, тим більше ви вникаєте в деталі. Директор має час приймати важливі рішення, тому що він може змусити інших людей виконувати менш важливі. Вони, у свою чергу, змушують інших, які залучають ще людей, якщо це потрібно, потім кожний людина доповідає своєму начальникові, і нарешті, директор одержує відповідь.

Це дуже схоже на роботу процесорної системи. Тому що завдання можуть бути дуже різн і складними, то існує багато програм. Одна програма /часто називана виконавчої/ діє як директор. Програма-Виконавець має інші програми, що працюють на неї, і які у свою чергу, мають інші програми, що працюють на них.

Програми, що працюють на інші програми, називаються підпрограмами. Підпрограми можуть мати інші підпрограми, що працюють на них і т.д.

Приклад. На мал.3, наведена проста програма, що забезпечує запис у комірку пам'яті 8020 те нулів, то одиниць. У цій програмі використовуються підпрограми. Одна підпрограма використовується для запису в комірку пам'яті одиниць, інша - для запису нулів.

Основна програма містить тільки три команди: одну - для виклику підпрограми "нулі", іншу -для виклику підпрограми "одиниці" і третю т для переходу до початку.

Основна програма визначає всі функції програми, але їй не потрібно знати адреса комірки пам'яті. Потреби визначаються підпрограмами.

- Команда САLL змушує МП перейти на підпрограму. Мітки "0" і "1" визначають підпрограми й містяться по реальній адресі, коли мова Асемблер переводиться в машинний код. Перші дві команди кожної з підпрограм уже

Рис.3. Приклад використання підпрограми

розглянуто раніше. Остання команда RЕТ /повернення/ визначає кінець підпрограми й повертає МП до виконання основної програми. У табл. 3 показана повна програма з машинними кодами. САLL складається з коду операції З9, за яким треба адреса підпрограми. Адреса підпрограми зберігається в такий же спосіб, як і адреса переходу. Команда RЕТ складається тільки з коду З9. Ніякої адреси команда не містить. Однак же МП "знає", куди вертатися, коли він зустрічає команду повернення наприкінці підпрограми. Коли виконується команда САLL, адреса повернення, тобто адреса команди, що випливає після виклику підпрограми, зберігається в спеціальному місці пам'яті, що називається СТЕК.

Таблиця 3 Лістинг програми запису в комірку пам'яті нулів і одиниць

Основна програма

Адреса

Уміст

Мітки

Команди

Коментарі

8000

СD

Н

САLL 0

Підпрограма запису нулів

8001

09

8002

80

8003

СD

САLL 1

Підпрограма запису одиниць

8004

ОF

8005

80

8006

СЗ

JМР Н

Повтор

8007

00

8008

80

Підпрограма запису нулів у комірку пам'яті 8020

8009

ЗЕ

0:

MVI А, 00

Записати в А нулі

800А

00

800B

32

STA 8020

Записати вміст А в комірку

800С

20

800D

80

800Е

З9

RET

Повернення в основну програму

Підпрограма запису одиниць у комірку пам'яті 8020

800F

3E

1:

МVI А, FF

Записати в А одиниці

8010

FF

8011

32

SТА 8020

Записати вміст А в осередок

8012

20

8013

80

8014

З9

RЕТ

Повернення в основну програму

Коли наприкінці підпрограми зустрічається команда RЕТ, МП одержує зі СТЕКА адреса повернення, програма вертається до основної програми. Робота СТЕКА здійснюється майже повністю автоматично. Більш докладно СТІК буде описаний у наступних розділах.

Проведемо експеримент по використанню програми, наведеної в табл.3.

1. Уведіть дану програму на згадку "Мікролаб". .

2. Поставте тумблер режиму в положення КРОК.

3. Установите початкову адресу програми /8000/ і натисніть кнопку ПУСК. Виконується перша команда програми /САLL ПРО/, і відбувається перехід до підпрограми /адреса 8009/.

4. Натисніть кнопку ПУСК. Виконується наступна команда, що є першою в підпрограмі. В акумулятор заносяться нулі.

5. Натисніть кнопку ПУСК. Уміст акумулятора заноситься в комірку пам'яті з адресою 8020. Перевірте вміст цього осередку. Там записані нулі.

6. Натисніть кнопку ВОЗВР. Виконається команда RЕТ, і ви повернетеся в основну програму /адреса 8003/.

7. Натисніть кнопку ПУСК. Відбудеться перехід у другу підпрограму /адреса 800F/.

8. Натисніть два рази кнопку ПУСК. В акумулятор запишуться одиниці /FF/, і вміст акумулятора перепишеться в комірку пам'яті з адресою 8020.

9. Перевірте, чи є в осередку 8020 ГГ.

10. Натисніть кнопку ВОЗВР. Виконається команда повернення /RЕТ/, і відбудеться перехід до основної програми /адреса 8006/. По цій адресі будуть записані команди безумовного переходу до адреси 8000.

Після цього програма почне виконуватися знову.

11. Натисніть кілька разів кнопку ПУСК, переглянете програму ще раз.