Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Електроніка
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Мікропроцесори

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Прикарпатський національний університет імені Василя Стефаника Кафедра радіофізики і електроніки Лабораторна робота №5 Команди умовних та безумовних переходів восьмирозрядного мікропроцесора КР580ВМ80 (Intel 8080). Івано-Франківськ – 2011 1. Мета роботи Вивчити основні типи команд умовних та безумовних переходів, основні способи їх застосування, навчитися створювати програми з їх використанням. 2. Обладнання Програма - емулятор мікропроцесорної системи на базі одно-кристального КР580ВМ80. 3. Короткі відомості з теорії Широкі можливості мікропроцесора в значній мірі визначаються його здатністю приймати рішення в ході виконання програми у відповідності з отриманим результатом. Для забезпечення таких можливостей використовуються команди умовних та безумовних переходів, які дають змогу міняти послідовність виконання програм. З їх допомогою в програмах влаштовують цикли та розгалуження, тому вони інколи ще називаються командами розгалуження. В попередніх лабораторних роботах деякі з цих команд вже використовувались. 3.1. Загальні властивості команд переходів Як витікає з їх назви, всі розглядувані команди поділяються на дві групи: безумовних та умовних переходів. Якщо на виконання команд першої групи не впливають результати попередніх обчислень, то виконання команд другої групи здійснюється якраз саме у відповідності з цими результатами. За винятком команди PCHL, яка є однобайтовою, всі інші є трибайтовими. Це означає, що другий та третій байт команди містять повну 16-розрядну адресу деякої комірки пам'яті. В цій комірці пам'яті записана команда програми, яку необхідно виконати наступною в випадку, якщо задовільняється умова переходу. Перехід здійснюється шляхом запису адреси цієї комірки в лічильник команд PC та передачі керування команді, яка в ній записана. Якщо ж умова не задовільняється, то ніякого переходу не відбувається, а мікропроцесор виконує команду, наступну після команди переходу, тобто лічильник команд збільшує своє значення на 3. Оскільки адреса комірки, де міститься код команди, безпосередньо завантажується в PC, то вважається, що використовується безпосередня адресація. Єдина команда переходу, що використовує регістрову адресацію є однобайтова команда PCHL. Необхідно звернути увагу на те, що в другому байті команди міститься молодший байт адреси, а в третьому - старший. Тому, наприклад, команда JMP A7, 00 означає перехід за адресою 00А7h. Слід пам'ятати, що після виконання команди переходу не залишається жодних даних про те, з якої точки програми було здійснено цей перехід, тому всі умовні та безумовні переходи необхідно застосовувати якомога рідше, оскільки наявність великої кількості галужень програми сильно ускладнює її написання та відлаштування. 3.2. Команди безумовного переходу Під час виконання цих команд ніякі перевірки не здійснюються. В лічильник команд мікропроцесора автоматично завантажується значення другого та третього байту команди, і починається виконання команди за цією адресою. Команди безумовного переходу відрізняються від усіх команд переходів тим, що їх можна розглядати також як команди завантаження 16-розрядного регістра РС. Команди безумовного переходу використовують в тому випадку, якщо необхідно здійснити перехід на чітко визначену команду програми, а також для зв'язування різних частин програми. Інколи їх використовують під час написання та відлаштування програми для переходів з так званих "заготовок" та "заглушок". За допомогою команд безумовного переходу реалізують оператори типу GOTO мов високого рівня. Оскільки велика кількість безумовних переходів негативно відображається на надійності та "читабельності" програм, слід обмежувати використання команд такого виду. В мікропроцесорі КР580ВМ80 передбачено 2 команди безумовного переходу: 1 Безумовний перехід  2 безпосередня  3 JMP B2, B3  4 B3 B2 → PC  5 C3h 303q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2).  8 Виконання команди не впливає на регістр стану.   1 Завантаження лічильника команд PC (непрямий перехід)  2 регістрова / регістрова  3 PCHL  4 HL → PC  5 E9h 351q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 5 тактів.  7 Під час виконання команди дані, які містяться в регістрі L пересилаються в молодший байт лічильника команд РС, а дані, які містяться в регістрі H - в старший байт. Керування передається команді, яка буде занесена в PC (за адресою B3 B2).  8 Виконання команди не впливає на регістр стану.   3.3. Команди умовних переходів На виконання всіх команд умовних переходів впливає значення окремих прапорців регістру стану, однак використовуються не всі прапорці. Наприклад, прапорець додаткового перенесення не впливає на жодну із команд переходу. Кожен прапорець може бути встановлений в одне із двох значень, тому всього команд умовного переходу є 8. Всі команди умовного переходу мають такий формат: якщо умова виконується, то перейти на вказану адресу, якщо ні - виконувати наступну команду програми. Команди ПЕРЕХІД, ЯКЩО НУЛЬ та ПЕРЕХІД, ЯКЩО НЕ НУЛЬ перевіряють значення прапорця нуля. Якщо його значення рівне 1, то це свідчить, що в результаті попередньої дії було набуто нульовий результат. Тому в результаті виконання команди ПЕРЕХІД, ЯКЩО НУЛЬ буде здійснено перехід за адресою, яка міститься в другому та третьому байтах програми, а в випадку нульового значення прапорця такий перехід здійснено не буде. Якщо прапорець встановлено в 0, то навпаки, команда ПЕРЕХІД, ЯКЩО НЕ НУЛЬ буде виконуватись з переходом, а команда ПЕРЕХІД, ЯКЩО НУЛЬ - без. Команду ПЕРЕХІД, ЯКЩО НУЛЬ часом називають командою ПЕРЕХІД, ЯКЩО РІВНЕ. Таку назву команда отримала тому, що її часто застосовують одразу ж після команди ПОРІВНЯННЯ. Якщо два числа, що порівнюються, рівні між собою, то прапорець нуля встановлюється в 1 (див. виконання команд СМР або СРІ, лабораторна робота №4). В такому випадку в програмі буде здійснено перехід. Аналогічно, команду ПЕРЕХІД, ЯКЩО НЕ НУЛЬ можна вважати командою ПЕРЕХІД, ЯКЩО НЕ РІВНЕ. 1 Перехід, якщо результат нуль  2 безпосередня  3 JZ B2, B3  4 B3 B2 → PC  5 CAh 312q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець нуля встановлено в 1, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець нуля встановлено в 0, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   1 Перехід, якщо результат не нуль  2 безпосередня  3 JNZ B2, B3  4 B3 B2 → PC  5 C2h 302q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець нуля встановлено в 0, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець нуля встановлено в 1, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   Команди ПЕРЕХІД, ЯКЩО ПЕРЕНЕСЕННЯ та ПЕРЕХІД, ЯКЩО НЕМА ПЕРЕНЕСЕННЯ перевіряють значення прапорця перенесення. Якщо його значення рівне 1, то це свідчить, що в результаті попередньої дії появився біт перенесення із старшого 7-го розряду в наступний розряд (або біт запозичення в 7-й розряд). Тому в результаті виконання команди ПЕРЕХІД, ЯКЩО ПЕРЕНЕСЕННЯ буде здійснено перехід за адресою, яка міститься в другому та третьому байтах програми, а в випадку нульового значення прапорця такий перехід здійснено не буде. Якщо прапорець встановлено в 0, то навпаки, команда ПЕРЕХІД, ЯКЩО НЕМА ПЕРЕНЕСЕННЯ буде виконуватись з переходом, а команда ПЕРЕХІД, ЯКЩО ПЕРЕНЕСЕННЯ - без. Команди ПЕРЕХІД, ЯКЩО ПЕРЕНЕСЕННЯ та ПЕРЕХІД, ЯКЩО НЕМА ПЕРЕНЕСЕННЯ використовують, наприклад, для порівняння двох чисел А та В. Якщо А < В, то в результаті віднімання А - В появиться біт запозичення в старший розряд, і прапорець перенесення буде встановлено в 1. Якщо прапорець перенесення встановиться в 0, то це означає, що А ≥ В. Якщо ж одночасно прапорець нуля рівний 0 (ненульовий результат віднімання) тоді А > В. Таке віднімання можна здійснити за допомогою команди ПОРІВНЯННЯ. (див. виконання команд СМР або СРІ, лабораторна робота №4). 1 Перехід, якщо є перенесення  2 безпосередня  3 JС B2, B3  4 B3 B2 → PC  5 DAh 332q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець перенесення встановлено в 1, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець перенесення встановлено в 0, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   1 Перехід, якщо нема перенесення  2 безпосередня  3 JNС B2, B3  4 B3 B2 → PC  5 D2h 322q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець перенесення встановлено в 0, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець перенесення встановлено в 1, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   Команди ПЕРЕХІД, ЯКЩО МІНУС та ПЕРЕХІД, ЯКЩО ПЛЮС перевіряють значення прапорця знаку. Якщо його значення рівне 1, то це свідчить, що в результаті попередньої дії старший 7-й розряд результату встановлено в 1. В загальному випадку це не означає, що результат - дійсно від'ємне число. Наприклад, результат додавання додатних чисел 01110000b (70h) та 00010000b (10h) є "від'ємне" число 10000000b (80h). Однак, якщо програма оперує з числами, записаними в оберненому та доповненому кодах, 7-й розряд байта результату вказує на знак числа і може бути використаний програмістом. Тому, якщо прапорець знаку встановлено в 1, в результаті виконання команди ПЕРЕХІД, ЯКЩО МІНУС буде здійснено перехід за адресою, яка міститься в другому та третьому байтах програми, а в випадку нульового значення прапорця такий перехід здійснено не буде. Якщо прапорець встановлено в 0, то навпаки, команда ПЕРЕХІД, ЯКЩО ПЛЮС буде виконуватись з переходом, а команда ПЕРЕХІД, ЯКЩО МІНУС - без. Команди ПЕРЕХІД, ЯКЩО МІНУС та ПЕРЕХІД, ЯКЩО ПЛЮС можна використовувати для порівняння двох чисел А та В тільки в тому випадку, якщо ці числа записані в прямому або оберненому кодах, оскільки в цьому випадку в старшому 7-му розряді додатне число повинно містити 0, а від'ємне - 1. 1 Перехід, якщо результат від'ємний  2 безпосередня  3 JМ B2, B3  4 B3 B2 → PC  5 F2h 372q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець знаку встановлено в 1, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець знаку встановлено в 0, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   1 Перехід, якщо результат додатній  2 безпосередня  3 JР B2, B3  4 B3 B2 → PC  5 FAh 362q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець знаку встановлено в 0, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець знаку встановлено в 1, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   Команди ПЕРЕХІД, ЯКЩО ПАРНІСТЬ та ПЕРЕХІД, ЯКЩО НЕ ПАРНІСТЬ перевіряють значення прапорця парності. Якщо його значення рівне 1, то це свідчить, що в результат попередньої дії має парну кількість розрядів, встановлених в 1. Тому в результаті виконання команди ПЕРЕХІД, ЯКЩО ПАРНІСТЬ буде здійснено перехід за адресою, яка міститься в другому та третьому байтах програми, а в випадку нульового значення прапорця такий перехід здійснено не буде. Якщо прапорець встановлено в 0, то навпаки, команда ПЕРЕХІД, ЯКЩО НЕ ПАРНІСТЬ буде виконуватись з переходом, а команда ПЕРЕХІД, ЯКЩО ПАРНІСТЬ - без. Перевірка на парність використовується для виявлення помилок під час передавання чи приймання даних через зовнішній порт. В такому випадку, після передавання даних обов'язково передається так звана контрольна сума, а в спрощеному варіанті - біт парності. Цей біт встановлюється таким чином, щоб загальна сума одиниць в усіх байтах повідомлення, включаючи біт парності була парна. Якщо пристрій - приймач виявить непарну кількість бітів, то це свідчить про помилку передавання. Таким чином перевірку на парність можна використовувати, здійснюючи введення даних з накопичувачів чи мережі. 1 Перехід, якщо результат парний  2 безпосередня  3 JРЕ B2, B3  4 B3 B2 → PC  5 ЕAh 352q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець парності встановлено в 1, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець парності встановлено в 0, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   1 Перехід, якщо результат не парний  2 безпосередня  3 JРО B2, B3  4 B3 B2 → PC  5 Е2h 342q  6 Команда займає 3 байти пам'яті, виконується за 3 цикли, 10 тактів.  7 Якщо прапорець парності встановлено в 0, то під час виконання команди в молодший байт лічильника команд РС записується другий байт команди B2, а в старший байт РС - третій байт команди B3. Керування передається команді, яка буде занесена в PC (за адресою B3 B2). Якщо прапорець парності встановлено в 1, то керування передається наступній команді.  8 Виконання команди не впливає на регістр стану.   Команди умовних переходів використовуються для реалізації операторів типу: 1. for i=n to m do тіло циклу, 2. if умова then дія1 else дія2, 3. case операнд of значення 1: дія1; значення 2: дія 2; .............................. значення n: дія n; 4. repeat тіло циклу until умова, 5. while умова do тіло циклу, та інших, які використовуються в мовах програмування високого рівня. 4. Порядок виконання експериментів. Запустіть емулятор. Виконайте наведені нижче приклади програм в потактовому режимі. Зафіксуйте, скільки циклів та тактів займає виконання кожної із програм. Зафіксуйте значення прапорців після виконання кожної із команд. Експеримент 1. Вивчення команд безумовного переходу. 1. Вивчення команди безумовного переходу JMP adr. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 01 LXI B, d16 дані 01h → регістр А  0002 3C INR A A + 1 → регістр A  0003 C3 JMP adr перехід на адресу 000Аh  0004 0A LDAX B молодший байт адреси  0005 00 NOP старший байт адреси  0006 3D DCR A A - 1 → регістр A  0007 47 MOV B, A A → регістр В  0008 80 ADD B A + В → регістр A  0009 A0 ANA B A & В → регістр A  000A C3 JMP adr перехід на адресу 0002h  000B 02 STAX B молодший байт адреси  000C 00 NOP старший байт адреси  000D 76 HLT зупинка програми  - - - -  Складіть блок-схему алгоритму програми. Покажіть, які із команд програми будуть виконуватися, а які - ні. За яких умов програма закінчить своє виконання, і який результат буде отримано? 2. Вивчення команди безумовного переходу PCHL. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 01 LXI B, d16 дані 01h → регістр А  0002 26 MVI H, d8 дані наступної комірки ОЗП → регістр H  0003 00 NOP старший байт адреси  0004 2E MVI L, d8 дані наступної комірки ОЗП → регістр L  0005 0A LDAX B молодший байт адреси  0006 3C INR A A + 1 → регістр A  0007 E9 PCHL HL → регістр PC  0008 24 INR H H + 1 → регістр H  0009 2C INR L L + 1 → регістр L  000A 3D DCR A A - 1 → регістр A  000B 87 ADD A A + A → регістр A  000C C3 JMP adr перехід на адресу 0002h  000D 02 STAX B молодший байт адреси  000E 00 NOP старший байт адреси  000F 76 HLT зупинка програми  - - - -   Які з команд програми ніколи не будуть виконані? Чим відрізняється командами PCHL від команди JMP adr? Зробіть висновки. Експеримент 2 Вивчення команд умовного переходу. 1. Вивчення команд умовного переходу JZ adr та JNC adr. Постановка задачі: В регістрах В та С записані числа, які необхідно порівняти. Після виконання програми в регістрі В повинно бути записане більше число. Якщо числа одинакові, то регістри В та С треба обнулити. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 78 MOV А, B B → регістр A  0001 91 SUB C A - C → регістр A  0002 CA JZ adr ПЕРЕХІД, ЯКЩО НУЛЬ на адресу 000Еh  0003 0E MVI C, d8 молодший байт адреси  0004 00 NOP старший байт адреси  0005 D2 JNC adr ПЕРЕХІД, ЯКЩО НЕМА ПЕРЕНЕСЕННЯ на адресу 0011h  0006 11 LXI D, d16 молодший байт адреси  0007 00 NOP старший байт адреси  0008 78 MOV А, B B → регістр A  0009 41 MOV B, C C → регістр B  000A 4F MOV C, А A → регістр C  000B C3 JMP adr ПЕРЕХІД на адресу 0011h  000C 11 LXI D, d16 молодший байт адреси  000D 00 NOP старший байт адреси  000E AF XRA A обнулення А  000F 47 MOV B, А A → регістр В  0010 4F MOV C, А A → регістр C  0011 76 HLT зупинка програми  - - - -   Задайте початкові значення В=50h, С=20h. Запустіть програму на виконання в покроковому режимі. Запишіть значення прапорців стану після виконання команди SUB C. Запишіть всі команди, які будуть виконані наступними. Задайте інші значення регістрів: спочатку В=35h, С=67h, а потім В=33h, С=33h. Запустіть програму для кожного із наборів. Прослідкуйте за значеннями прапорців стану, та послідовністю виконання команд. Складіть блок-схему алгоритму програми. Зробіть висновки. 2. Вивчення команд JPE adr та JPO adr. Постановка задачі. 5. Контрольні запитання. 1. Яке основне призначення команд безумовних та умовних переходів? 2. Яким чином здійснюються безумовні та умовні переходи на вказану адресу? 3. На які прапорці регістра стану впливає результат виконання команд переходів? 4. Яким чином вказується адреса на яку необхідно перейти? 5. Назвіть основні недоліки команд безумовних та умовних переходів? 6. Вкажіть відмінності між командами PCHL та JMP adr. В яких випадках застосовуються дані команди? 7. Чим відрізняються команди безумовних та умовних переходів між собою? 8. З якою метою використовують команди безумовних переходів? 9. Які прапорці регістру стану використовуються командами умовних переходів? 10. Перерахуйте всі команди умовних переходів? Чому таких команд є вісім? Чи існує команда переходу, яка враховує прапорець додаткового перенесення? 11. З якою метою використовують команди переходу, які залежать від значення прапорця парності? 12. Яким чином здійснюється порівняння чисел в мікропроцесорі КР580ВМ80? Які прапорці стану використовуються при цьому? 13. В яких випадках використовують команди ПЕРЕХІД, ЯКЩО МІНУС та ПЕРЕХІД, ЯКЩО ПЛЮС? 14. Яка команда в експерименті 2.1 є лишньою? 15. Яким чином за допомогою команд умовних переходів можна реалізувати оператор if умова then дія1 else дія2? 16. Яким чином за допомогою команд умовних переходів можна реалізувати оператор repeat тіло циклу until умова?
Антиботан аватар за замовчуванням

03.03.2013 11:03-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!