Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для лаб Арх_комп(Схемтех).doc
Скачиваний:
6
Добавлен:
08.05.2019
Размер:
1.76 Mб
Скачать

Індивідуальне завдання на лабораторну роботу

  1.  Скласти програму на основі логічних і раніше вивчених команд. Програма повинна використовувати всі типи логічних команд.

  2.  Закодувати програму. Занести її в таблицю, аналогічну наведеним в попередніх роботах.

Порядок виконання лабораторної роботи

  1.  Завантажити в пам’ять мікро лабораторії програми, які розглянуті в теоретичному розділі, і перевірити правильність їх роботи.

  2.  Завантажити індивідуальну програму і виконати її в покроковому режимі. Заповнити таблицю, вказуючи стан кожного з використаних регістрів на кожному кроці програми.

  3.  Проконтролювати і занести в таблицю вміст вічок пам’яті, використаних в програмі.

  4.  Модифікувати програму, замінивши 2-3 логічні команди на протилежні, і повторити пп. 2, 3.

  5.  Зробити висновки з роботи.

Контрольні питання

  1. Якими командами можна здійснити очищення акумулятора і тригера переносу?

  2. Чому заміна команди RLC на RRC не змінює результат виконання програми, показаній на рис. 6.5 ?

  3. Скласти програму виділення знакового розряду для наступного його аналізу.

  4. Які функції тригера переносу при виконанні команд зсуву ?

Лабораторна робота № 7 Тема: вивчення команд переходів

Мета: вивчити групу команд переходів. Набути навичок складання програм з їх використовуванням, вивчити послідовність дій при переході до виконання підпрограми.

Коротка інформація

Реалізація розгалужених і програм, що циклічно виконуються, неможлива без вживання команд з групи переходів. Мікропроцесор КР580ИК80 надає користувачу потужний засіб керування ходом обчислювального процесу. Структура розгалуження процесу, перехід до підпрограм і повернення з них не відрізняються від структур в мовах високого рівня, однак тут принципово неможлива перевірка умов у вигляді складних арифметичних або логічних виразів, як це робиться, наприклад, на мові Бейсик. Керування переходами здійснюється на основі аналізу тригерів прапорців, які можуть бути зведені або скинуті попередніми арифметичними або логічними командами. Перелік команд і їх коди наведені на рис. 7.1. Виконання команд не впливає на стан прапорців.

1. Переходи

2. Звертання

3. Повернення

Мнемоніка

Код

Мнемоніка

Код

Мнемоніка

Код

JMP **

С3

CALL **

CD

RET

C9

JNZ **

С2

CNZ **

С4

RNZ

C0

JZ **

СА

CZ **

СС

RZ

C8

JNC **

D2

CNC **

D4

RNC

D0

JC **

DA

СС **

DC

RC

D8

JPO **

Е2

СРО **

Е4

RPO

E0

JPE **

ЕА

СРЕ **

EC

RPE

E8

JP **

F2

СР **

F4

RP

F0

JM **

FA

CM **

FC

RM

F8

PCHL

Е9

Рис. 7.1. Команди переходів.

Розрізнюють два типи команд переходів – безумовні і умовні. Безумовні команди здійснюють передачу керування, змінюючи значення програмного лічильника PC, а умовні перевіряють стан одного з чотирьох прапорців (С – переносу, Z – нуля, S – знаку, Р – парності), для визначення, чи виконується вказана в команді умова. Аналогічно здійснюється звертання до підпрограми. Треба пам’ятати, що при їх виконанні перед завантаженням PC новою адресою старші 8 біт адреси наступної за переходом команди (тобто адреса повернення) пересилаються у вічко, адреса якого на одиницю менша вмісту вказівника стеку SP. Молодші 8 біт адреси пересилаються у вічко пам’яті, адреса якого на два менша величини SP. Вміст SP зменшується на два. Виконання команд повернення здійснюється в зворотній послідовності. Із сказаного випливає, що переходу до підпрограми повинне передувати завантаження вмісту вказівника стеку SP, наприклад, командою LXI SP, ##. Завантаження повинно бути виконане при ініціалізації мікропроцесорної системи.

Умови переходу для полегшення процедури опису команд: NZ – не нуль (Z=0); Z – нуль (Z=l); NC – нема переносу (С=0); С – є перенос (С=1): Р0 – непарний результат (Р=0); РЕ – парний результат (Р=1); Р – плюс; М – мінус.

Команда безумовного переходу JMP ** передає керування команді, адреса якої вказана в другому і третьому байті. Другий байт в усіх командах переходів вказує молодший байт адреси, третій – старший. Для виконання команди виконуються три цикли читання, всього витрачається 10 тактів.

Команди виду J(умовa) ** виконується за три цикли, або 10 тактів за таким алгоритмом: якщо вказана умова виконується, то керування передається команді, адреса якої вказана в другому і третьому байті, якщо вказана умова не виконується, то послідовність виконання команд не змінюється, тобто вміст PC зберігає своє значення. Отже, утворюється група з восьми команд переходів за вмістом прапорців.

Команда PCHL забезпечує заміну вмісту PC на вміст регістрів HL. Вміст регістру Н пересилається в старші 8 біт PC, а вміст регістру L – в його молодші 8 біт. Отже, ця команда схожа на JMP, але міститься в одному байті, і для її виконання треба один цикл з п’яти тактів. Ця команда не аналізує прапорці.

Звичайний безумовний перехід до підпрограми здійснює команда CALL **. На її виконання, як і на інші команди переходу до підпрограми за умовою, потрібно п’ять машинних циклів. Три цикли витрачається на читання команди і два – на запис в стек адреси повернення. Всі цикли однакові за структурою, всього потрібно 18 тактів. Опис команд умовних переходів до підпрограми відповідає раніше розглянутим переходам за умовою.

Команда безумовного повернення RET забезпечує відновлення вмісту PC за адресою вершини стеку, після чого вміст вказівника стеку SP збільшується на два. Отже, команда виконується за три цикли, які складаються з 10 тактів. Умовне повернення з підпрограми дозволяє програмісту організувати програмну одиницю з кількома точками виходу з неї. На аналіз відповідного прапорця витрачається два додаткових такти. Оскільки послідовність дій при виконанні групи команд виду Щумова) аналогічна безумовному поверненню, то більш докладний їх опис не потрібен.

Розглянемо практичні приклади програми з використанням команд переходів. Простий приклад можна скласти з двох безумовних переходів, що передають керування один одному (рис. 7.2).

8000 СЗ 50 80 JMP 8050

…………………………………

…………………………………

8050 С3 00 80 JMP8000

Рис. 7.2. Програма з використанням переходів.

Виконання програми в покроковому режимі демонструє можливість передачі керування як в сторону збільшення адреси, так і в сторону зменшення.

Розглянемо приклад використання звертання до підпрограм, вкладених одна в другу (рис. 7.3). При виконанні цієї програми необхідно спостерігати за вмістом вказівника стеку і лічильника команд.

Адреса

Код команди

Мнемоніка команди

SP

PC

8000

8003

8006

......

......

LXI SP, 8200

CALL 8050

NOP

...... ......

8200

81FE

8200

8003 8050 8007

8050

8053

CALL 8100

RET

81FC

8200

8100 8006

......

......

...... ......

8100

8103

CALL, 8150

RET

81FA 81FE

8150 8053

......

......

...... ......

8150

8151

NOP

RET

81FA

81FC

8151 8103

Рис. 7.3. Послідовність виконання вкладених підпрограм.

В покроковому режимі роботи цікаво спостерігати за послідовністю зміни вмісту PC (8000, 8050, 8100, 8150, 8151, 8103, 8053, 8006, 8007), при сумісному розгляді якої видна черговість виконання команд алгоритму.

Для ілюстрації виконання команд умовних звертань до підпрограм і повернення з них введемо в програму вивчені раніше команди, (рис. 7.4). Спостерігати за ходом зміни вмісту вказаних регістрів рекомендується самостійно.

Послідовність дій при виконанні програми:

1) аналізується вміст регістру акумулятора А на його рівність 0;

2) якщо ця умова задовольняється, то здійснюється перехід до підпрограми. В підпрограмі вміст акумулятора інкрементується і аналізується;

3) якщо задовольняється умова команди повернення, то вона виконується, інакше — виконується наступна команда підпрограми;

4) після повернення в точку звертання до підпрограми акумулятор двічі декрементується і знову виконується звертання до тієї ж підпрограми. її виконання і повернення в основну програму здійснюється так, як було описано раніше.

Адреса

Код команди

Мнемоніка команди

8000

31 00 82

LXI SP, 8200

8003

AF

XRA А

8004

СС 50 80

CZ 8050

8007

3D

DCR А

8008

3D

DCR А

8009

С4 50 80

CNZ 8050

8050

ЗС

INR А

8051

С8

RZ

8052

00

NOP

8053

C0

RNZ

Рис. 7.4. Програма з використанням умовних переходів до підпрограми і повернення.

Вивчення розглянутих прикладів дає елементарні навички в області програмування на низькому (з точки зору алгоритмічної мови) рівні.