- •Харківський національний університет будівництва та архітектури
- •Методичні вказівки
- •Для практичних занять з дисципліни
- •«Мікропроцесорна техніка»
- •Практична робота №1. Тема «Представлення чисел в різних системах числення».
- •Практична робота №2. Тема “ Арифметичні дії над двійковими числами”
- •Контрольні питання.
- •Практична робота №3 Тема “Програмна модель мікропроцесора кр580м80а”
- •14. Як перейти від останова до запуску мікропроцесора? Практична робота №4 Тема: «Програмування мікропроцесора. Послідовні алгоритми»
- •Таблиця 2.
- •Практична робота №5. Тема: «Програмування мікропроцесора. Алгоритми з розгалуженнями»
- •Таблиця 5
- •Рекомендована література.
14. Як перейти від останова до запуску мікропроцесора? Практична робота №4 Тема: «Програмування мікропроцесора. Послідовні алгоритми»
Ціль роботи: опанувати програмування послідовних ділянок алгоритму.
Форма звіту: письмовий звіт з результатами виконання практичного завдання.
Завдання 1. Розглянути програмування ділянок алгоритму, що не містять розгалужень.
Методичні вказівки.
Приклад 1. Прийняти з ОЗП два числа, що зберігаються в сусідніх чарунках з адресами 0276 16 і 027716 і, обчисливши суму чисел, помістити її в ОЗП на місце другого з чисел.
На рис.1 наведена схема алгоритму рішення даної задачі мікропроцесором серії КР580. Розглянемо операції, що виконуються в кожному з блоків алгоритму.
Блок 1: в пару регістрів HL заноситься адреса першого числа.
Блок 2: в акумулятор приймається вміст чарунки ОЗП (перше число), адресою якої слугує вміст пари регістрів HL; ця операція виконується командою пересилки “регістр-регістр” (мнемонічне позначення команди MOV A,M).
Блок 3: в парі регістрів HL формується адреса другого числа, ця операція виконується командою приросту пари регістрів (мнемоніка команди INX H).
Блок 4: обчислюється сума вмісту акумулятора (А) і вмісту чарунки ОЗП (М), адресою якої служить вміст пари регістрів HL; операція виконується командою підсумовування ADD M.
Блок 5: одержана в акумуляторі сума пересилається в пам'ять; виконуюча цю операцію команда має мнемоніку MOV M,A.
TC
A7 A6 A5 A4 A3 A2 A1 A0
а.)
A7 A6 A5 A4 A3 A2 A1 A0
TC
б.)
TC
A7 A6 A5 A4 A3 A2 A1 A0
в.)
A7 A6 A5 A4 A3 A2 A1 A0
TC
г.)
Рис.1 Рис.2
У табл.1 наведена програма даної задачі з представленням команд в кодових комбінаціях.
Таблиця 1
Адреса команди в ОП (в 16-річній системі) |
Команда |
Пояснення | ||
Кодова комбінація |
Число байтів |
Число тактів | ||
0050 0051 0052 0053 0054 0055 0056 |
00101110 01110110 00000010 01111110 00100011 10000110 01111011
|
3
1 1 1 1 |
10
7 5 7 7
|
Блок1: HL027616
Блок2: А (М) Блок3:HL(HL)+1 Блок4:А(А)+(М) Блок5:М (А) |
Команди програми за відсутності умовних і безумовних переходів (так званої послідовної програми) розміщуються в елементах пам'яті з послідовно наростаючими адресами. При побудові даної програми розміщення команд проведено, починаючи з чарунки, що має адресу 005016.
Загальне число тактів, необхідних для виконання приведених п'яти команд, Nт = 10+7+5+7+7=36,и при тривалості T=0,5 мкс загальний час
t исп =Nт*T = 36*0,5=18 мкс.
Розглянемо приклад програмування з використанням вмісту трігера регістра ознак.
Приклад 2. Вимагається виконати операцію арифметичного зсуву управо вмісту регістра D.
У системі команд мікропроцесора передбачено чотири команди операцій зсуву вмісту акумулятора – по дві команди операцій зсуву вліво і управо. Кожна операція зсуву носить циклічний характер, тобто здійснюється в замкнутому кільці, в яке окрім акумулятора може входити трігер перенесення ТС регістра ознак (“зсув через ТС”, рис.2, в і г) або цей трігер може бути зовні кільця (“зсув без ТС”, рис.2, а і б ) .В обох випадках значення розряду числа ( залежно від напряму зсуву старшого або молодшого розряду), що висувається з акумулятора, поступає в трігер ТС.
У нашому прикладі особливість арифметичного зсуву управо полягає в тому, що при зсуві вміст старшого (знакового) розряду регістра зберігається незмінним (рис.3,а). Таким чином, при виконанні цієї операції необхідно заздалегідь запам'ятати вміст старшого розряду і потім, зсунувши управо вміст регістра, вписати в його старший розряд цифру, яку раніше запам'ятали.
Ці дії виконуються у фрагменті програми, схема алгоритму якої представлена на рис.3,б. Оскільки операції зсуву виконуються тільки над вмістом акумулятора, блок 1 пересилає в акумулятор вміст регістра D.
Операції, виконувані в подальших блоках, ілюструються табл. 2.В результаті виконання операції “зсув вліво без ТС” ( блок 2) знак числа (в табл.2 знак виділений напівжирним шрифтом) передається в молодший розряд акумулятора і в трігер перенесення ТС. Потім двічі виконується операція “зсув управо через ТС” (блоки 3 і 4). В результаті виконання першої операції зсуву в акумуляторі відновлюється початкове число, а в трігері ТС опиняється продубльованим знак числа. Після виконання другої операції зсуву управо в акумуляторі опиняється число, що є результатом виконання арифметичного зсуву управо.