Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МК

.pdf
Скачиваний:
31
Добавлен:
16.02.2016
Размер:
3.47 Mб
Скачать

Таблиця 26

Програма 19

Адрес

Машинний

Мітка

Мнемокод

 

Коментар

 

а

код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

завантажити

лічильник

бітів

0900

21 0800

DIVB

LXI H 0008

(регістр L ) і очистити регістр

 

 

 

частки Н

 

 

 

 

 

 

 

 

 

 

 

 

0903

ОЕ 00

 

MVI С 00

очистити

регістр

проміжного

 

діленого

 

 

 

 

 

 

 

 

 

 

 

 

0905

 

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

 

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