МК
.pdfТаблиця 26
Програма 19
Адрес |
Машинний |
Мітка |
Мнемокод |
|
Коментар |
|
||
а |
код |
|
|
|||||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||
|
|
|
|
завантажити |
лічильник |
бітів |
||
0900 |
21 0800 |
DIVB |
LXI H 0008 |
(регістр L ) і очистити регістр |
||||
|
|
|
частки Н |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0903 |
ОЕ 00 |
|
MVI С 00 |
очистити |
регістр |
проміжного |
||
|
діленого |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
0905 |
7В |
|
MOV А Е |
завантажити |
|
ділене |
в |
|
МХТ B |
акумулятор |
|
|
|
||||
|
|
|
|
|
|
|||
0906 |
17 |
|
R A L |
зсунути старший біт |
|
|||
|
у розряд С |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
0907 |
5F |
|
MOV E А |
повернути ділене в регістр Е |
||||
|
|
|
|
|
|
|
||
0908 |
79 |
|
MOV А С |
завантажити |
в |
акумулятор |
||
|
проміжне ділене з регістра С |
|||||||
|
|
|
|
|||||
0909 |
17 |
|
R A L |
зсунути розряд С в молодший |
||||
|
біт |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
090А |
92 |
|
SUB D |
відняти з |
вмісту |
акумулятора |
||
|
дільник |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
090В |
D2 OF 09 |
|
JNC N ОА |
якщо С = 1, відновити |
вміст |
|||
|
NOAD |
акумулятора |
|
|
|
|||
|
|
|
|
|
|
|||
090Е |
В2 |
|
ADD D |
|
|
|
|
|
|
|
|
|
|
|
|||
090F |
4F |
|
MOV C A |
повернути |
проміжні дані в |
|||
NOAD |
регістр С |
|
|
|
|
|||
|
|
|
|
|
|
|
||
0910 |
3F |
|
CMC |
інвертувати розряд С |
|
|||
|
|
|
|
|
||||
0911 |
7С |
|
MOV A H |
зсунути розряд С в молодший |
||||
|
біт регістра частки Н |
|
||||||
|
|
|
|
|
||||
0912 |
17 |
|
RAL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0913 |
67 |
|
MOV Н А |
|
|
|
|
|
|
|
|
|
|
|
|
||
0914 |
2D |
|
DCRL |
чи перевірені |
всі |
вісім |
||
|
розрядів ? |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
0915 |
С2 0509 |
|
JNZ МХТВ |
якщо ні, продовжувати |
|
|||
|
|
|
|
|
|
|
||
0918 |
CF |
|
RST I |
якщо |
так, |
перервати |
||
|
виконання програми |
|
||||||
|
|
|
|
|
Для обчислення спеціальних функцій (sin x, cos x, tg x, ln x, x)
застосовуються спеціальні алгоритми. Функції sin x, cos x, ln x можна
101
обчислити, скориставшись їхнім розкладанням у ряд:
sin x X |
x3 |
|
|
|
|
x |
|
x |
|
... |
для будь-якого х (рад); |
||||||||||
|
|
|
|
|
|
||||||||||||||||
|
|
|
3! |
|
|
|
|
5! |
|
7! |
|
|
|
|
|||||||
cos x 1 |
x2 |
|
x |
|
|
x |
... |
|
для будь-якого х (рад); |
||||||||||||
|
|
|
|
|
|||||||||||||||||
2! |
|
4! |
6! |
|
|
|
|
|
|
|
|||||||||||
ln(1 x) X |
x2 |
|
|
|
x3 |
|
x |
... |
для 0 x 1 |
||||||||||||
|
|
|
|
|
|||||||||||||||||
|
|
|
|
2 |
|
|
|
|
|
|
3 |
|
|
4 |
|
|
Кількість членів ряду визначається з умови одержання необхідної точності.
Для обчислення функції x з точністю до цілих чисел можна застосувати алгоритм, заснований на тому, що квадрат числа можна визначити додаванням
послідовності непарних чисел:"I |
|
|
|
Число |
Сума непарних чисел |
|
Результат |
1 |
1 |
|
1 |
2 |
1+3 |
|
22 |
3 |
1+3 + 5 |
= |
З2 |
4 |
1+3 + 5 + 7 |
= |
42 |
5 |
1+3 + 5 + 7+9 |
= |
52 |
Виходячи з наведеного прикладу видно: яке число необхідно звести в квадрат, таку саму кількість послідовних непарних чисел, починаючи з 1,
необхідно скласти.
Обчислення спеціальних функцій за наведеними виразами займає час і забезпечує низьку точність. Це зумовлюється порівняно невеликою довжиною машинного слова й обмеженою швидкодією МП. Тому, коли ставляться тверді вимоги до швидкодії і точності, застосовується обчислення функцій за допомогою таблиць. Проілюструємо цей метод на прикладі програми обчислення квадрата числа х (програма 20, табл. 27).
Програма SQ визначає квадрат чисел від 0 до 10 включно. Вхідний параметр програми – число х. Воно записується в регістр L. Вихідний параметр
– значення х2 у регістрі Н.
102
Робота на навчальній мікро-ЕОМ
У навчальній мікро-ЕОМ підпрограма записана в ПЗП за тими самими адресами, що наведені в описі підпрограми 18. До неї можна звертатися за допомогою команди CALL < А2 > < А1 >. У мікро-ЕОМ є схема звукової сигналізації, описана в лабораторній роботі 4. Початок підпрограми звукової сигналізації – адреса 0012. Це дозволяє досліджувати програму 17 без будь-
яких її змін. Усі наведені в лабораторній роботі програми, а також порядок їх виконання можуть бути досліджені на навчальній мікро-ЕОМ.
Таблиця 27
Програма 20
Адреса |
Машинний |
Мітка |
Мнемокод |
Коментар |
|
код |
|||||
|
|
|
|
||
|
|
|
|
|
|
0900 |
2600 |
SQ |
MVI Н00 |
очистити регістр Н |
|
0902 |
ІІОООА |
|
LXI D SQ |
завантажити початкову |
|
|
адресу таблиці |
||||
|
|
|
|
||
0905 |
19 |
|
DAD D |
одержати адресу |
|
|
елемента |
||||
|
|
|
|
||
0906 |
66 |
|
MOV Н М |
завантажити його в |
|
|
регістр Н |
||||
|
|
|
|
||
0907 |
CF |
|
RST І |
перервати виконання |
|
|
програми |
||||
|
|
|
|
||
0А00 |
00 |
|
SQ |
|
|
|
|
|
|
|
|
0А01 |
01 |
|
01 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А02 |
04 |
|
04 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А03 |
09 |
|
09 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А04 |
10 |
|
10 |
|
|
|
|
|
|||
|
|
|
|
таблиця квадратів |
|
0А05 |
19 |
|
19 |
||
|
чисел |
||||
|
|
||||
|
|
|
|
||
0А06 |
24 |
|
24 |
||
|
|
||||
|
|
|
|||
|
|
|
|
|
|
0А07 |
31 |
|
31 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А08 |
40 |
|
40 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А09 |
81 |
|
81 |
|
|
|
|
|
|||
|
|
|
|
|
|
0А0А |
64 |
|
64 |
|
|
|
|
|
|||
|
|
|
|
|
103
Завдання для самостійної роботи
1.Вивчити групу арифметичних команд МП КР580ИК80.
2.Ознайомитись із правилами виконання команди DА А – десяткової корекції акумулятора.
3.Вивчити програми 16-20. Розглянути результат виконання кожної програми на конкретних числових прикладах.
4.Провести оцінку часу виконання підпрограм множення і програми ділення 8-розрядних чисел.
5.Скласти програму для дослідження результату перемножування двох чисел на основі підпрограми 18.
6.Розробити програму додавання двох 8-розрядних чисел з одержанням результату в двійково-десятковому коді (результат слід записати у вихідний пристрій).
7.Оцінити час виконання підпрограми 20.
Завдання до лабораторної роботи Завдання 1. Досліджувати програму додавання однобайтних чисел з
одержанням двобайтного результату.
Порядок виконання завдання
1.Ввести в мікро-ЕОМ програму 16.
2.Записати в мікро-ЕОМ послідовність з п'яти чисел, починаючи з адреси
ОВОО.
3.Здійснити пуск програми і перевірити її виконання за даними,
записаними у регістрі С та акумуляторі МП.
4.Змінити програму 16 так, щоб результат виконання записувався за адресами 0В06 і 0В07. Перевірити результат її виконання.
5.Змінити в програмі покажчик кількості доданків у сумі і виконати програму заново.
104
Завдання 2. Досліджувати програму віднімання двох чисел, що мають
однакову довжину.
Порядок виконання завдання
1.Ввести програму 17 у мікро-ЕОМ.
2.Записати в регістри D, Е і Н, L відповідно початкові адреси молодших байтів зменшуваного і від'ємника. Від'ємник слід записати в області ОЗП, де немає захисту від випадкового запису під час виконання програм (у навчальній мікро-ЕОМ ця область займає адреси 0В00 - 0ВВ0). Записати в регістр С довжину числа в байтах. Для першого випадку записати в регістр С число 01 (розглядається віднімання двох 8-розрядних чисел).
3.Записати за адресами, зазначеними у регістрах Н, L і D , Е, зменшуване
івід'ємник. Вибрати при цьому зменшуване більшим від'ємника.
4.Здійснити пуск програми 17 і досліджувати результат її виконання за числом, записаним за адресою, де вказано від'ємник.
5.Видозмінити програму 18 так, щоб результат обчислення різниці двох
8-розрядних чисел записувався у вихідний пристрій з адресою 30.
6. Змінити числа, записані за адресами, зазначеними у регістрах Н, L і D,
Е, так, щоб зменшуване було менше від'ємника.
7.Здійснити пуск програми і простежити, що при цьому відбувається.
8.Дослідити в аналогічній послідовності результат вирахування двобайтних чисел.
Примітка. Програма 17 побудована так, що коли зменшуване менше від'ємника, мікро-ЕОМ буде подавати звуковий сигнал. Якщо у використовуваної мікро-ЕОМ блоку звукової сигналізації немає, то команда
CALL BEEP в програмі 17 може бути просто вилучена.
Завдання 3. Досліджувати програму множення двох 8-розрядних чисел з одержанням 16-розрядного результату.
Порядок виконання завдання:
105
1.Ввести в мікро-ЕОМ програму для дослідження результату перемножування двох чисел, розроблену в п.5 завдання для домашньої підготовки.
2.Здійснити пуск програми і перевірити результат перемножування двох чисел за числом, записаним у регістрах В, С.
Завдання 4. Досліджувати програми розподілу двох 8-розрядних чисел.
Порядок виконання завдання
1.Ввести в мікро-ЕОМ програму 19.
2.Записати в регістри Е, D відповідно ділене і дільник.
3.Здійснити пуск програми і перевірити результат розподілу двох чисел за вмістом регістрів Н, С.
Завдання 5. Досліджувати програму обчислення квадрата числа за
допомогою таблиці.
Порядок виконання завдання:
1.Ввести в мікро-ЕОМ програму 20.
2.Записати в регістр L число, квадрат якого необхідно обчислити.
3.Здійснити пуск програми і перевірити результат обчислення квадрата числа по вмісту регістра Н.
4.Видозмінити програму так, щоб результат обчислення квадрата числа записувався у вихідний пристрій.
5.Ввести в програму 20 перевірку на значення числа, квадрат якого визначається в результаті виконання програми. Якщо число, що задається,
більше 10, то мікро-ЕОМ повинна вказувати на це, наприклад, звуковим сигналом, увімкненням світлодіодів вихідного пристрою та ін.
Завдання 6. Досліджувати програму додавання двох 8-розрядних чисел з одержанням результату в двійково-десятковому коді.
Порядок виконання завдання
106
1. Ввести в мікро-ЕОМ програму, розроблену під час виконання п.6
завдання для домашньої підготовки.
2.Здійснити пуск програми і перевірити результат додавання наступних чисел: 33 + 25; 38+25; 98+25.
3.Замінити в розробленій програмі операцію додавання на операцію віднімання двох чисел. Перевірити, чи можна здійснювати десяткову корекцію числа акумулятора після команди вирахування.
Зміст звіту
1.Повний перелік арифметичних команд МП КР580ИК80.
2.Програма додавання двох 8-розрядних чисел з одержанням результату
вдвійково-десятковому коді, розробленому в п.6 завдання для домашньої підготовки.
3.Програма для дослідження результату перемножування двох 8-
розрядних чисел, розроблена в п.5 завдання для домашньої підготовки.
4.Видозмінена програма 18, досліджена в завданні 2.
5.Видозмінена програма 20, досліджена в завданні 5.
6.Результати виконання арифметичних операцій за всіма завданнями.
Завдання для самоконтролю
1.Які команди арифметичних операцій може виконувати МП КР580ИК80 ?
2.Сформулюйте правило виконання МП команди DA A.
3.Після яких команд можна здійснювати десяткову корекцію числа акумулятора (виконувати команду DА А) ?
4.Як оцінити максимальний час виконання підпрограми множення двох чисел (програма 18)?
5.Чи можна безпосередньо досліджувати перемножування двох чисел за підпрограмою 18?
107
6.На чому засновані алгоритми роботи підпрограм множення і ділення
чисел ?
7.У чому перевага обчислення функцій, заданих у виді таблиць ?
8.Подати числа від 0 до 20 у двійково-десятковому коді.
9.Вкажіть можливі способи подання чисел для МП КР580ИК80.
10.Оцініть максимальний час виконання програми розподілу двох чисел,
якщо час машинного такту для МП Т = 1 мк.
Бібліографічний список
1.Прангішвілі И.В. Мікропроцесори і мікро-ЕОМ: М.: Енергія, 1979.
2.Соучек Б. Микропроцессоры и микро-ЭОМ: Пер. с англ.– М.:
Советское радио, 1979.
108
ЛАБОРАТОРНА РОБОТА №9
ПІД’ЄДНАННЯ ДИСПЛЕЯ І КЛАВІАТУРИ ДО МІКРО-ЕОМ
Мета роботи: вивчення програмно-апаратурних методів під’єднання
дисплея і клавіатури до мікро-ЕОМ.
Обладнання, прилади та інструменти: мікро-ЕОМ, клавіатура,
дисплей.
Загальні відомості
Як пристрій висновку інформації, зручний для сприйняття, часто використовується дисплей. Розглянемо метод під’єднання дисплея, що складається із шести осередків (семисегментних індикаторів), тобто восьми світлодіодів із загальним анодом в одному корпусі. Кожен індикатор (рис. 17, а)
має сім світлодіодів для відображення сегментів цифр, а восьмий світлодіод відображає десяткову крапку (рис. 17, б). Індикатор може відображати цифри від 0 до 9, а також деякі букви.
Пронумеруємо комірки дисплея так, як показано на рис. 18.
Для зменшення схемотехнічного забезпечення, необхідного для під’єднання дисплея до мікро-ЕОМ, часто застосовують мультиплексний режим роботи індикаторів. При цьому для виведення інформації на дисплей використовують два вихідні регістри: РгСг (адреса 3816) для запису семисегментного коду і РгСк (адреса 2816) для запису номера індикатора (рис.
19).
Однакові сегменти кожного вічка індикатора пов'язані загальною шиною,
що з'єднана з одним із транзисторних ключів V T1-VT8 на виході регістра РгСг.
Загальні аноди індикатора під’єднані до одного з транзисторних ключів VO9 –
VT14 на виході регістра сканування РгСк. Залучення індикатора і його сегментів під час запису одиниці у відповідні розряди виглядає так:
для регістра РгСг
109
номер розряду регістра сегментів дисплея |
.........0 1 2 3 4 5 6 7 |
увімкнений сегмент................................................ |
a b c d e f g h |
для регістра РгСк |
|
номер розряду регістра цифр дисплея................. |
0 1 2 3 4 5 6 7 |
цифра дисплея, що вмикається .......................... |
0 1 2 3 4 5 - - |
Сигнали заведені на регістри РгСг і РгСк (К589ІР12) так, що після надходження на вхід ВКІ сигналу вибірки від дешифратора адреси дані з МД,
під’єднаної на входах Д0 - Д7, записуються в регістр і з'являються на його входах Q0 - Q7. Таким чином, наприклад, під час запису в регістр сегментів числа 0000 0110 відмикаються транзисторні ключі VT2 і VT3, а під час запису в регістр сканування РгСк числа 0010 0000 вимикається транзисторний ключ VT14 і струм проходить по ланцюгу +5 В –VT14 - HGI — b і с - VT2 і VT3 - земля, при цьому на лівому індикаторі висвітиться 1. Якщо тепер за допомогою програми висвітлювати по черзі всі вічка, записуючи їхній код у регістр V2 і
включаючи необхідну цифру за допомогою регістра РгСк, то за досить високої частоти перемикань можна одержувати стійке зображення інформації на дисплеї.
Наведемо просту програму увімкнення сегментів п'ятого комірки дисплея за допомогою коду, що задається з вхідного пристрою мікро-ЕОМ (програма
21, табл. 28).
Таблиця 28
Програма 21
Адреса |
Машинний код |
Мітка |
Мнемокод |
Коментар |
|
||
0800 |
ЗЕ 20 |
|
MVI А 20 |
завантажити в акумулятор |
|||
|
число 00100000 |
|
|||||
|
|
|
|
|
|||
0802 |
D3 28 |
|
OUT SCAN |
увімкнути цифру 5 |
|||
0804 |
DB 20 |
CNT |
IN 20 |
зчитати |
дані |
з |
вхідного |
пристрою |
|
|
|||||
|
|
|
|
|
|
||
0806 |
D3 38 |
|
OUT DSP |
записати |
їх |
у |
регістр |
|
сегментів дисплея |
|
|||||
|
|
|
|
|
|||
0808 |
СЗ 0408 |
|
JMP CNT |
продовжити |
|
|
110