Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoda.doc
Скачиваний:
1
Добавлен:
22.08.2019
Размер:
728.06 Кб
Скачать

Робота на навчальній еом

В навчальній мікро-ЕОМ підпрограма записана в ПЗП за тими ж адресами, що наведені при описуванні підпрограми 8.18. До неї можна звертатися за допомогою команди CALL<A2><A1>. В мікро-ЕОМ є схема звукової сигналізації, що описана в лабораторній роботі 4. Початок підпрограми звукової сигналізації – адреса 0012. Це дозволяє дослідити програму 8.17 без будь-яких її змін. Всі наведені в лабораторній роботі програми, а також порядок їх виконання можуть бути досліджені на навчальній микро-ЕОМ.

Зміст звіту

Звіт повинен містити: 1. Повний перелік арифметичних команд МП БІС КР580ИК80. 2. Програму додавання двох 8-розрядних чисел з отриманням результату в двійково-десятичному коді, розробленого в п. 3. завдання для домашньої підготовки. 3. Результати виконання арифметичних операцій за всіма завданнями.

Завдання для самоперевірки

1. Які команди арифметичних операцій може виконувати МП БІС КР580ИК80?.

2. Сформулюйте правило виконання МП БІС команди DАА.

3. Після яких команд можна здійснювати десятичну корекцію числа акумудятора (виконувати команду DАА)?

7. В чому перевага віднімання функцій, що задані у вигляді таблиць?

8. Подайте числа від 0 до 20 в двійково-десятичному коді.

9. Вкажіть можливі способи подання чисел для МП БІС КР580ИК80.

Література

1. Прангишвили И.В. Микропроцессоры и микро-ЭВМ. – М.: Энергия, 1979.

2. Соучек Б. Микропроцессоры и микро-ЭВМ: Пер. с англ. – М.: Советское радио, 1979.

Лабораторна робота 6

ВИКОНАННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ

(множення,ділення та обчислення спеціальних функцій )

Мета роботи:вивчення способів організації і дослідження програм виконання арифметичних операцій.

Короткі відомості з теорії

Множення чисел. Існує декілька алогритмів множення чисел. При першому алгоритмі множення можна замінити багатократним додаванням, наприкад . Існує один недолік цього способу – значна тривалість процеса обчислення. При другому алгоритмі множення здійснюється в стовпець. Цей алгоритм застосовується і для множення двійкових чисел, наприклад

0110 = 610

0011 = 310

–––––––––––

0110

0110

0000

0000

–––––––––––––––––

00010010 = 1810

При обчисленні результату за другим алгоритмом необхідно здійснити багатократне додавання зі зсувом наліво множуваного при одночасній перевірці вмісту розрядів множника починаючи зі сторони його розряду. При цьому якщо в черговому розряді множника записана 1, то множуване додається до суми і посувається наліво на один розряд, а якщо в розряді записаний 0, то відбудеться тільки зсув множуваного. Зсув множуваного наліво можна замінити зсувом суми направо. За цим алгоритмом (рис. 8.11, б) працює підпрограма множення двох однобайтових чисел з отриманням двохбайтного результату (підпрограма 8.18). Початкова адреса підпрограми – 04У1; вхідні параметри: регістр D – множуване, регістр У – множник. Результат перемноження записується в регістри В, С.

Програма 8.18

Адреса

Машинний код

Мітка

Мнемокод

Коментар

8000

01

MPL

LXI B, 0000

очистити вміст регістрів В, С

8001

00

8002

00

8003

3E

MVI A, 01

завантажити в акумулятор покажчик розряда

8004

01

8005

A7

ANA A

очистити флаг С

8006

F5

MPL 1

PUS H PCW

зберегти покажчик розряду в стеку

8007

A3

ANA E

перевірити вміст чергового розряду множника

8008

78

MOV A, B

завантажити в акумулятор старший байт суми

8009

CA

JZ MPL2

якщо в черговому розряді записаний 0, йти на MPL 2

8010

13

8011

80

8012

82

ADD D

додати множуване до суми

8013

1F

MPL 2

RAR

зсунути суму наліво (молодший біт  С)

8014

47

MOV В, А

зберегти вміст акумулятора в регістрі В

8015

79

MOV А, С

завантажити в акумулятор молодший байт суми

8016

1F

RAR

Зсунути число в акумуляторі направо (С  старший біт)

8016

47

MOV С, А

зберегти вміст акумулятора в регістрі С

8017

F1

POP PSW

отримати зі стека покажчик розряда

8018

17

RAL

покажчик на наступний розряд

8019

D2

JNC MPL 1

якщо розряд не останній, продовжити на MPL 1

8020

06

8021

80

8022

C9

RET

якщо розряд останній, повернення

Ділення чисел. Ділення двійкових чисел, як і чисел, що подані в будь-якій іншій системі обчислення, грунтується на послідовному відніманні дільника з діленого і залишків від ділення. Однак двійкове ділення реалізується простіше, так як використання тілько двох цифр (0 і 1) виключає в кожному циклі ділення необхідність визначення числа дільників, що містяться в поточному значенні діленого або решти (достатньо тільки порівняти їх).

Схема алгоритма ділення двійкових чисел наведена на рис. 8.12. Програма DIVB побудована за цим алгоритмом (програма 8.19). Вхідними параметрами цієї програми є ділене (в регістрі E) і дільник (в регістрі D); вихідними параметрами – частка (в регістрі H) і зупинка (в регістрі C).

Програма 8.19.

Адреса

Машинний код

Мітка

Мнемокод

Коментар

8000

21 0800

DIVB

LXIH, 0008

завантажити лічильник бітів (регістр L) і очистити регістр частки H

8003

0E 00

MVI C, 00

очистити регістр проміжного діленого

8005

7B

MXT B

MOV A, E

завантажити ділене в акумулятор

8006

17

RAL

зсунути старший байт в розряд C

8007

5F

MOV E, A

повернути ділене в регістр E

8008

79

MOV A, C

завантажити в акумулятор проміжне ділене з регістра C

8009

17

RAL

зсунути розряд C в молодший байт

800A

92

SUB D

відняти з вмісту акумулятора дільник

800B

D2 0F 09

JNC NOADD

якщо C = 1, відновити вміст акумулятора

800E

B2

ADD D

800F

4F

NOADD

MOV C, A

повернути проміжні дані в регістр C

8010

3F

CMC

інвертувати розряд C

8011

7C

MOV A, H

зсунути розряд C в молодший байт регістра частки H

8012

17

RAL

8013

67

MOV H, A

8014

2D

DCRL

чи перевірені всі вісім розрядів?

8015

C2 0509

JNZ MXTB

якщо ні, продовжити

8018

CF

RSTI

якщо да, перервати виконання програми

Обчислення спеціальних функцій. Для обчислення спеціальних функцій застосовуються спеціальні алгоритми. Функції можна обчислювати, скориставшись їх розташуванням в рядок:

для будь-якого х (рад);

для будь-якого х (рад);

для 0 < x  1.

Числа членів рядка визначаються з умови отримання потрібної точності.

Для обчислення функцій точністю до ціли чисел можна застосувати алгоритм, на основі якого квадрат числа можна визначити додаванням послідовності непарних чисел:

Виходячи з наведеного приклада видно, що яке число необхідно піднести до квадрату, таку ж кількість послідовних непарних чисел починаючи з 1 необхідно додати.

Обчислення спеціальних функцій за наведеними виразами займає тривалий час і забезпечує низьку точність. Це обумовлено порівняно невеликою довжиною машинного слова і обмеженою швидкодією МП БІС. Тому в тих випадках, коли ставляться жорсткі вимоги по швидкодії і точності, застосовується обчислення функцій за допомогою таблиць. Проілюструємо цей метод на прикладі програми обчислення квадрата чисел х (програма 8.20).

Програма 8.20

Адреса

Машинний код

Мітка

Мнемокод

Коментар

8000

2600

SQ

MVI H, 0

очистити регістр H

8002

11 000A

LXI D SQTB

завантажити початкову адресу таблиці

8005

19

DAD D

отримати адресу елемента

8006

66

MOV H, M

завантажити його в регістр H

8007

SF

RST 1

перервати виконання програми

0A00

00

0A01

01

0A02

04

0A03

09

0A04

10

0A05

19

таблиця квадратів чисел

0A06

24

0A07

31

0A08

40

0A09

81

0A0A

64

Програма SQ визначає квадрат чисел від 0 до 10 включно. Вхідний параметр програми - число x. Воно записується в регістр L. Вихідний параметр - значення в регістрі H.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]