ЛАБОРАТОРНА РОБОТА № 7Тема: пам’ять учбової мікропроцесорної лабораторії, дослідження виконання програм в покроковому i автоматичному режимахМета: навчитися здійснювати введення програми і її виконання в автоматичному i покроковому режимах. КОРОТКА ІНФОРМАЦІЯВ мікропроцесорних ЕОМ використовуються нуль- i одноадреснi команди, в яких разом з кодом операції (КОП) передається або адреса операнда або операнд відсутній. В останньому випадку операнд вже є розміщений в одному з регістрів i його місцезнаходження закодоване в КОП. Крім адреси, разом з КОП може передаватись безпосередньо операнд (безпосереднє дане), необхідний для виконання цієї команди. Формати команд i КОП для різних мікропроцесорів різні. Розглянемо різновиди команд МП КР580ик80. Передачі КОП, адрес i безпосередніх даних з пам’яті здійснюється по 8-бітній шині. Адреса має 16 двійкових розрядів (бітів), тому передача адреси здійснюється двома однобайтними словами. Безпосереднє дане i КОП має по 8 біт i передається кожне одним словом (байтом). З урахуванням сказаного МП мікролабораторії оперує з командами трьох форматів (рис. 2.1).
Рис. 2.1. Формати команд МП КР580ВМ80А (КОП — код операції; Б1, Б2, Б3 — 1-ий, 2-ий та 3-ій байти команди відповідно; ПВВ — пристрій введення / виведення). Програма послідовно команда за командою розмащується у вічках пам’яті. У зв’язку з різними форматами команд вони можуть займати від одного до трьох сусідніх адрес. Мiкропрограмний пристрій керування МП за зчитаним КОП, визначає, скільки ще байтів необхідно для повного зчитування команди, i здійснює цю процедуру, автоматично збільшуючи адресу на шині на одиницю при кожному звертанню до ЗП. Після закінчення виконання поточної команди збільшується вміст програмного лічильника (РС) на одиницю, тобто вміст РС показує адресу КОП наступної команди. Команди безумовного переходу i переходу до підпрограм закінчуються занесенням в РС адреси переходу. При виконанні умовних переходів адреса переходу в РС завантажується при виконанні умови, що перевіряється. Якщо в трибайтній команді міститься адреса або двобайтне дане, наприклад 1284, то молодші дві цифри складають В2, а старші дві цифри – В3 коду команди. Про це необхідно пам’ятати при складанні програми в кодах i при аналізі виконання програми в покроковому режимі. Так як КОП, адреса i дані кодуються однаково, важливим елементом роботи мiкро-ЕОМ є пуск програми з правильної початкової адреси, яка повинна вказувати на байт В1 (КОП) першої команди програми, інакше зчитаний байт (це може бути один з байтів адреси або безпосередньо операнд) буде інтерпретований МП як код деякої команди i вона буде виконана. Ймовірність правильного виконання програми користувачем при цьому дорівнює нулю. Для розміщення програм в пам’яті необхідно знати фактичні області адрес, доступні для читання (ПЗП) i двонапрямленої передачі (ОЗП). Пам’ять мікролабораторії розміщена в областях адресного простору (рис. 2.2).
Рис. 2.2. Карта пам’яті мікро лабораторії Очевидно, що програма користувача, яка знаходиться на етапі вiдлагодження, може бути розміщена тільки в ОЗП в області адрес з 8000 до 83С6. Наступні 57 вічок ОЗП також програмно доступні, але вони використовуються монітором мікролабораторії для спеціальних цілей. Якщо не передбачується робота з монітором, то ці вічка можуть бути відведені під команди програми користувача. Підготовлена до виконання програма може бути перезаписана в ПЗП. При цьому необхідно пам’ятати, що перенос програми із однієї області пам’яті в іншу супроводжується зміною адрес команд переходів i iдентифiкаторiв, тому переміщення програми при ручному програмуванні пов’язане з можливістю виникнення непередбачених помилок. Запис в ПЗП (ППЗП в цьому випадку) може бути здійснений тільки на зовнішньому устаткуванні. Для правильного кодування i декодування команд необхідна таблиця кодів операції, за допомогою якої легко прослідкувати за виконанням програми. Завантаження програми здійснюється за вже знайомою послідовністю дій в ОЗП мікролабораторії (лаб. роб. № 1). Якщо програма буде виконуватись в автоматичному режимі, то перемикач «ШАГ–АВТ» треба встановити в положення «АВТ». Після занесення програми в пам’ять, необхідно на ІАР встановити пускову адресу. Для виконання програми треба натиснути кнопку «Пуск». Для ознайомлення з можливостями мікролабораторії доцільно скористатись демонстраційною програмою, що записана в ПЗП, починаючи з адреси 0300. В иконання програми в покроковому режимі здійснюється під керуванням монітору при встановленні перемикача «ШАГ–АВТ» в положення «ШАГ». Кожне натискання на кнопку «Пуск» буде спричиняти виконання чергової команди i зупинці. Цей режим є зручним при відлагоджуванні програм, керування периферійним устаткуванням, оскільки дозволяє проводити модифікацію i нове виконання програми, а також переглядати вміст регістрів МП. Програма, алгоритм якої показаний на рис. 2.3, містить дві команди: перша (NOP) — не вносить ніяких змін в стан МП i системи; друга (JMP <адреса>) — безумовний перехід на адресу першої команди. Команда NOP - однобайтна, її код — 16-кове число 00. Друга команда - трьохбайтна, її код - C3. Другий i третiй байт цiєї команди є адреса переходу. На символьній мові Асемблера програма має вигляд: BEG : NOPJMP BEG Мітка BEG є позначення на мові Асемблера адреси переходу, тобто адреса команди NOP. Пускову адресу програми встановимо 8000 (адреса першого вічка ОЗП користувача). Програма в кодах МП – на рис. 2.4.
Рис. 2.4. Розміщення учбової програми за рис. 2.3. в пам’яті МП. Послідовність чотирьохзначних адрес — це адреси вічок ОЗП, а вміст — складові кодів команд i адрес переходу, що записані за цими адресами. Розташування байтів даних для команд довжиною в 2 i 3 байта в такій формі утруднює читання великих програм, тому їх записують в іншій формі:
Якщо б у програмі була ще одна команда, то в стовпці адрес їй би відповідала адреса 8004. Виконання цієї програми в покроковому режимі при спостеріганні за ІАР та ІРД ілюструє механізм взаємодії МП, пам’яті i системи. ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ Включити живлення мікролабораторії. Натиснути кнопку «Сарос». Занести в ІАР початкову адресу демонстраційної програми 0300. Натиснути кнопку «Пуск». Для зупинки програми натиснути кнопку «Сарос». Занести в пам’ять, починаючи з адреси 8000 учбову програму, що розглянута в теоретичному роздiлi. Двічі виконати її цикли в покроковому режимі. Результати індикації занести в табл. 2.1. Таблиця 2.1. Результати індикації.
Пояснити вміст регістрів ІАР та ІРД. Занести в ІАР початкову адресу області ПЗП, відповідний вашому варіанту (табл. 2.2), виконати читання вічок пам’яті до вказаної кінцевої адреси. Результати занести в перші два стовпчика («Адреса ПЗП» і «Вміст») таблиці 3.1. Здійснити декодування прочитаних кодів i відновити текст програми, зчитаної із заданої області пам’яті. Записати текст програми, оформлений згідно з наведеними в теоретичному роздiлi правилам. Після декодування виконати отриману програму в покроковому режимі i прослідкувати за виконанням команд. Оскільки в числі команд, що виконуються є команди умовних i безумовних переходів, переходів до підпрограм i повернень з них за умовою, то у випадку неочікуваної зміни адреси необхідно повернутись до вихідної програми через введення адреси наступної за програмою команди. Зробити короткі висновки по роботі. Таблиця 2.2. Варіанти індивідуальних завдань
КОНТРОЛЬНІ ПИТАННЯ Яка інформація може міститись у другому i третьому байті команди? Порядок дій при пуску програми в автоматичному i покроковому режимах. Охарактеризувати послідовність дій стосовно виконання одно-, двох- i трьохбайтної команд. Що відбудеться, якщо пуск програми здійснити не з B1 першої команди, а, наприклад, з B2 або з B3? Якщо в покроковому режимі виконання програми відбувся перехід до підпрограми, то як, не виконуючи підпрограми, повернутись в точку повернення? Якщо виконати таке повернення, то чи вірний буде результат програми? Перша команда демонстраційної програми записана за адресою 0300. Однак, якщо програму запустити на виконання з адреси 0330, то ніяких змін в її роботі спостерігатись не буде. Яка команда є першою в цій програмі. |