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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

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

Рік:
2006
Тип роботи:
Інші
Предмет:
Інформаційна безпека
Група:
ПІ

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет "Львівська політехніка" ПІДПРОГРАМА І СТЕК РОЗРОБЛЕННЯ ПРОСТИХ ПРОГРАМ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 3 З КУРСУ "МІКРОПРОЦЕСОРНІ ПРИСТРОЇ" для студентів базового напряму 6.160100 “Інформаційна безпека” Затверджено на засіданні кафедри "Автоматика та телемеханіка" Протокол №6 від 30.11.1999р. ЛЬВІВ 2006 Підпрограма і стек. Розроблення простих програм. Інструкція до лабораторної роботи № 3 з курсу "Мікропроцесорні пристрої" для студентів базового напряму 6.160100 “Інформаційна безпека”. /Укл. І. М. Бучма, А. Й. Наконечний.- Львів: НУЛП, 2006.- 11 с. Укладачі: І. М. Бучма, канд. техн. наук, доц., А. Й. Наконечний, канд. техн. наук, доц. Відповідальний за випуск І. М. Ковела, канд. техн. наук, доц. Рецензенти: З. Р. Мичуда, канд. техн. наук, доц. М. В. Наконечний, канд. техн. наук, доц. Мета роботи – дослідження особливостей складання підпрограм та звертання до них; вивчення методів розроблення програм та використання стеку при створенні програм. І. ТЕОРЕТИЧНІ ПОЛОЖЕННЯ Для зменшення затрат часу на складання програм, а також для зменшення об’єму необхідної для зберігання цих програм пам’яті, намагаються зробити програми коротшими. Тому ту частину програми, що багатократно повторюється, або програму, що часто використовується, виконують у вигляді підпрограми - послідовності команд, виконання яких може бути викликане з будь-якого місця програми будь-яку кількість разів. Процес передачі управління підпрограмі називається її викликом. Дані та адреси, що необхідні для роботи підпрограми, називаються вхідними параметрами. Результати роботи підпрограми, що по її закінченні мають бути передані в основну програму, називаються вихідними параметрами. Для виклику підпрограм та повернення з них використовують команди CALL ADDR та RET. Команда CALL ADDR завантажує в програмний лічильник PC мікропроцесора вміст байтів ADDR (початкова адреса підпрограми), що записані в наступних двох комірках пам’яті після коду команди CALL(CD). Після коду CD зразу записується молодший байт адреси, а наступним слідує старший байт адреси. При цьому мікропроцесор автоматично зберігає в стеку адресу команди основної програми, до якої він повернеться після виконання підпрограми. Стек - це частина (область) оперативного запам’ятовуючого пристрою (ОЗП), що використовується мікропроцесором для тимчасового зберігання даних та адрес. Дані, що записані в стек останніми, виймаються з нього першими. Команда RET завантажує із стека в програмний лічильник останнє записане на даний момент число. Це число є адресою команди основної програми, з якої почнеться її виконання. Тому будь-яка підпрограма повинна закінчуватися командою RET. Автоматичне збереження і відновлення адреси основної програми при виконанні підпрограм дозволяє вкладати підпрограми одну в іншу, тобто здійснювати виклик однієї підпрограми з іншої. При цьому рівень вкладання визначається лише розміром стеку. Є також команди умовного виклику підпрограми та умовного повернення з них. Вони дозволяють викликати підпрограму і повернутися з неї при умові певного стану прапорців регістру F (аналогічно тому як це є в командах умовних переходів). Всі команди умовного виклику підпрограми - трьохбайтні. В другому і третьому байтах команди міститься початкова адреса підпрограми. Всі команди виклику підпрограм та повернення з них використовують стек. При цьому для адресації до стеку використовується вказівник стеку SP (STACK POINTER). Крім команд виклику підпрограм та повернення з них із стеком можуть обмінюватися інформацією регістрові пари мікропроцесора PSW, BC, DE,HL з допомогою команд PUSH RP (записати в стек вміст вказаної в команді регістрової пари) та POP RP (завантажити дані зі стеку у вказану в команді регістрову пару). Команди PUSH RP та POP RP є однобайтними. При роботі зі стеком треба мати на увазі, що вказівник стеку SP завжди вказує на останню заповнену комірку стеку. Тому при записуванні в стек вмісту регістрової пари або програмного лічильника PC вміст старшого регістру вказаної пари заноситься в комірку стекової пам’яті за адресою SP-1, а за адресою SP-2 в стек записується вміст молодшого регістру вказаної пари. При завантаженні зі стеку даних в регістрову пару в молодший регістр пари записується число з адреси, що вказується вказівником стеку SP, а в старший регістр пари - число, записане за адресою SP+1. Тобто при цьому вміст вказівника стеку SP збільшується на 2. При цьому дані в комірках стеку не змінюються, а лише відбувається їх читання та збільшення вмісту SP. Таким чином, при записуванні даних в стек адреси у вказівнику стеку SP змінюються від більших значень до менших, а при читанні даних із стеку адреси у вказівнику стеку SP змінюються від менших значень до більших. При розробці програм необхідне початкове задання області стеку шляхом завантаження у вказівник стеку SP адреси з допомогою команди LXI SP, D16 або команди PCHL завантаження вказівника стеку SP вмістом регістрової пари HL. Всі операції зі стеком повинні бути збалансованими, тобто кожна підпрограма повинна містити рівну кількість команд PUSH RP і POP RP та закінчуватися командою RET. В іншому разі виконання команди RET в кінці підпрограми приведе до запису в лічильник команд SP із стеку випадкового числа. Адреса повернення в основну програму буде втрачена, а це приведе до порушення послідовності її виконання. Як правило, на початку кожної підпрограми зберігають в стеку вміст всіх задіяних при її виконанні регістрових пар за допомогою команд PUSH RP. В кінці підпрограми відновлення вмісту регістрових пар здійснюється командами POP RP. Відновлення вмісту регістрових пар необхідно проводити в зворотній послідовності. Звичайно у вигляді підпрограм оформляються фрагменти програм, що багатократно повторюються, напр., підпрограми обслуговування клавіатури та дисплея, підпрограма подачі звукового сигналу, часової затримки і т.д. Алгоритм роботи простої підпрограми часової затримки подано на рис. 1 Загальний час затримки можна підрахувати за формулою  де t0 – час виклику підпрограми; t1 – час переписування числа N з регістру С в регістр В; t2 – час виконання холостої команди NOP; t3 – час зменшення вмісту регістру B на одиницю; t4 – час порівняння вмісту регістру B; t5 – час повернення з підпрограми.  Команда NOP використовується для збільшення часу виконання циклу, а значить, і загальної затримки. Замість команди NOP може бути використана будь-яка послідовність команд, виконання яких не змінює вмісту регістрів мікропроцесора. Час виклику підпрограми, запису N в регістр B та час повернення з підпрограми фіксовані і в цикл не входять. Приведена нижче підпрограма 1 (Delay) є підпрограмою часової затримки, алгоритм якої подано на рис. 1. Підпрограма 1 Адреса Машинний код Мітка Мнемокод Коментар  * *  *   * CD5082  CALL Delay Виклик п/п часової затримки Delay.  * *  *   8250 41 Delay MOV B,C Записати число з регістру C в регістр B.  8251 00 Label_1 NOP Нема операції.  8252 05  DCR B Зменшити число в регістрі B на 1.  8253 C25182  JNZ Label_1 Якщо число в регістрі B(0, то іти на Label_1.  8256 C9  RET Повернення в основну програму.  Сучасна методика програмування полягає в тому, що програму намагаються представити з деякого числа стандартних структур. Їх називають програмними модулями або блоками. Складні блоки програми ділять на менші субблоки до такого рівня, щоб програмування кожного з них стало очевидним в командах мікропроцесора. Будь-яка програма може бути побудована комбінацією трьох груп базових програмних блоків: 1) функціональних (послідовних); 2) циклів (повторення); 3) розгалуження (альтернативного рішення). 1. Послідовна структура - найбільш поширена. Вона означає, що дві дії повинні бути виконані одна за другою. Для прикладу дивись рис. 2. 2. Цикли застосовують тоді, коли ряд команд необхідно повторювати кілька разів підряд, виконуючи між повтореннями лише незначні модифікації. В такому випадку можна скоротити об’єм програми, якщо багатократно використовувати одну і ту ж програму, а не записувати одні і ті ж команди кілька разів. Такий процес називається організацією циклу.  В циклі завжди присутні чотири блоки: 1) підготовки даних; 2) основних дій (тіло циклу); 3) підготовки до наступного циклу (модернізація); 4) перевірки умови. Всі ці блоки обов’язково присутні в кожному циклі, але порядок слідування їх може бути різним. При цьому цикли можуть бути двох типів: 1) з післяперевіркою (рис. 3); 2) з передперевіркою (рис. 4).   Основна різниця обох форм циклів у тому, що з післяперевіркою цикл виконується як мінімум один раз, а при передперевірці цикл може не виконуватися жодного разу. 3. Розгалуження програми забезпечує вибір між двома напрямками ходу програми (рис. 5).  Для цього робиться перевірка умови. Кожен з шляхів програми веде до точки злиття, так що програма буде виконуватися незалежно від того, який шлях вибрано. Розглянемо приклад використання підпрограми часової затримки при організації звукових сигналів в МП пристрої (підпрограма 2). В найпростішому випадку звукові сигнали можуть формуватися почерговим записом 0 та 1 на пристрій формування звукових сигналів із звуковою частотою. Будемо вважати, що пристрій формування звукових сигналів має адресу 80. Схема алгоритму роботи підпрограми генерування звукових коливань (підпрограма 2) подана на рис.6.  Підпрограма 2 Адреса Машинний код Мітка Мнемокод Коментар  8100 AF AUDIO XRA A очистити акумулятор  8101 D3 80  OUT 80 записати 00 у вихідний пристрій  8103 CD 5082  CALL INT викликати підпрограму затримки  8106 2F  CMA записати код FF в акумулятор  8107 D3 80  OUT 80 записати код у вихідний пристрій  8109 CD 5082  CALL INT викликати підпрограму затримки  810С С9  RET вийти з підпрограми  Підпрограму 2 використаємо в програмі MAIN, що є програмою генерації сигналів з частотою, що задається числом з вхідного порту, адреса якого 20. Програма MAIN Адреса Машинний код Мітка Мнемокод Коментар  8000 DB 20 MAIN IN 20 ввести число з вхідного порту  8002 4F  MOV C,A записати число в регістр С  8003 CD 0081  CALL AUDIO викликати підпрограму AUDIO  8006 C3 0080  JMP MAIN продовжувати  Завдання для домашньої підготовки: 1. Ознайомитися з командами безумовного виклику підпрограми мікропроцесора КР580ИК80А (CALL ADDR) і командою безумовного виходу з підпрограми (RET). 2. Ознайомитися з умовними командами виклику підпрограми та повернення з неї. 3. Визначити, при яких числах в регістрі B підпрограма 1 забезпечить максимальний і мінімальний час затримки. Визначити ці часи, якщо тривалість такту T=1мкс. 4. Розберіть програму KEY, що визначає, який з восьми перемикачів вхідного пристрою (адреса 20) встановлений в положення 0. Для цього: 1) складіть алгоритм роботи програми KEY; 2) запишіть підпрограму, що використовується в програмі KEY; 3) визначте в якому регістрі мікропроцесора знаходиться інформація про номер перемикача вхідного пристрою, що встановлений в 0-стан; 4) визначте, як буде працювати програма KEY, якщо на вхідному пристрої будуть встановлені в 0 не один, а кілька перемикачів. (Увага! В програмі KEY команда вводу даних з вхідного пристрою 20 (IN 20) імітується командою MVI A, DATA. Змінюючи DATA імітуємо зміну положення перемикача. Програма KEY Адреса Машинний код Мітка Мнемокод Коментар  8150 31 0083 KEY LXI SP,8300 записати в SP адресу 8300  8153 3E E7 WAIT MVI A,E7 (IN 20) ввести число з вхідн. пристрою  8155 FE FF  CPI FF чи є 0-ий розряд  8157 CA 5381  JZ WAIT якщо ні, то чекати  815A CD 6081  CALL IDSW якщо так, викликати п/п визначення 0-го розряду  815D 76  HLT закінчити роботу  8160 06 FF IDSW MVI B,FF записати в регістр В FF  8162 04 SRCH INR B збільшити вміст регістру В на 1  8163 1F  RAR зсунути число в акумуляторі вправо  8164 DA 6281  JC SRCH якщо прапорець С=1, то продовжити  8167 С9  RET повернення з підпрограми  Завдання на лабораторну роботу 1.Дослідити процес виконання команд виклику та повернення з підпрограми, а також команд роботи зі стеком. Для цього: 1)ввести в МП-пристрій нижчеприведену програму EKS; 2)виконати програму EKS в покомандному режимі, перевіряючи після виконання кожної команди вміст відповідних регістрів мікропроцесора; 3)замінити в програмі EKS команду РОР РSW командою NOP (код 00) і прослідкувати виконання програми. Пояснити зміни, що сталися. Програма EKS Адреса Машинний код Мітка Мнемокод Коментар  8200 31 0083 EKS LXI SP,8300 вказати початок стеку  8203 CD 0782  CALL STDY викликати підпрограму  8206 76  HLT припинити виконання програми  8207 F5 STDY PUSH PSW записати слово стану в стек  8208 C5  PUSH B записати вміст рег. пари в стек  8209 D5  PUSH D записати вміст рег. пари в стек  820A E5  PUSH H записати вміст рег. пари в стек  820B 3E 05  MVI A,05 записати в А число 05  820D 47  MOV B,A переписати число з рег. А в рег. В  820Е 87  ADD A подвоїти вміст А  820F 5F  MOV E,A переписати вміст рег. А в рег. Е  8210 67  MOV H,A переписати вміст рег. А в рег. H  8211 E1  POP H занести дані з рег. пари HL в стек  8112 D1  POP D занести дані з рег. пари DE в стек  8113 C1  POP B занести дані з рег. пари BC в стек  8114 F1  POP PSW занести слово стану в стек  8115 C9  RET повернення з підпрограми  2. Розробити підпрограму часової затримки на 5, 10, 15, 20с. Перевірити роботу програми на лабораторному макеті. Зміст звіту У звіті повинно бути: 1) скорочений виклад теоретичних положень; 2) повний перелік команд виклику та повернення з підпрограми для мікропроцесора КР580ИК80А; 3) програми та підпрограми, що приведені в інструкції; 4) розроблена в процесі домашньої підготовки одна з програм 5, 10, 15 та 20-секундної затримки; 5) перелік команд мікропроцесора КР580Ик80А, що виконують операції зі стеком; 6) відповіді на питання, що поставлені в п.4 завдання для домашньої підготовки. Контрольні запитання 1. Вкажіть за скільки машинних циклів виконується команда CALL ADDR. 2. З допомогою яких команд можна задати або перезадати область пам’яті, що відведена під стек? 3. Вкажіть які дії виконуються мікропроцесором по команді RET. 4. В якій послідовності заноситься в стек та виймається зі стеку вміст регістрових пар у підпрограмах? 5. Як буде виконана програма EKS, якщо замість команди POP B буде записана команда NOP? 6. Який мінімальний час затримки може забезпечити підпрограма 1, якщо тривалість такту T=1мкс? 7. Який максимальний час затримки може забезпечити підпрограма 1, якщо тривалість такту T=1мкс? 8. Що таке стек? Його призначення і правила використання. 9. Сформулюйте алгоритм виконання МП КР580ІК80А команд DAA, CALL ADDR і RET. Література 1. Горбунов В. Л., Панфилов Д. И. Микропроцессоры. Лабораторный практикум. - М.: Высшая школа. - 1984. - с.103. 2. Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. - М.: Энергоатомиздат. - 1983. - с.304. 3. Вершинин О. Е. Применение микропроцессоров для автоматизации технологических процессов. - Л.: Энергоатомиздат. - 1986. - с.208. Навчальне видання ПІДПРОГРАМА І СТЕК РОЗРОБЛЕННЯ ПРОСТИХ ПРОГРАМ Інструкція до лабораторної роботи № 3 з курсу "МІКРОПРОЦЕСОРНІ ПРИСТРОЇ" для студентів базового напряму 6.160100 “Інформаційна безпека”
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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