Дон ГТУ
Лабораторна робота № 3
АКГ-05
АУТПТЕК
Програмування арифметичних завдань на Асемблері для мікропроцесора К580
Мета лабораторної роботи - розглянути особливості виконання найпростіших арифметичних операцій над цілими числами без знаку на мікропроцесорних установках МІКРОЛАБ КР580ИК80 і ЕЛЕКТРОНІКА-580, познайомитися з програмуванням в машинних кодах і мнемокода, навчитися користуватися засобами управління і клавіатурою пристроїв.
1 ТЕОРЕТИЧНА ЧАСТИНА
1.1 Представлення чисел
При програмуванні мікро ЕОМ на МП БІС КР580ИК80 необхідно користуватися способом представлення чисел з фіксованою десятковою крапкою. При цьому знак числа і кількість розрядів, зайнятих дробовою частиною числа, можуть бути враховані при підготовці даних або програмним шляхом.
Слід пам'ятати, що коди команд, адреси та дані вводяться в мікро ЕОМ числами в шістнадцятковій системі числення. Деякою особливістю в лабораторних установках МІКРОЛАБ і ЕЛЕКТРОНІКА-580 є відображення чисел на дисплеї (табл. I).
Для МП БІС КР580ИК80 можна представляти дані у вигляді двійково-десяткового числа, при цьому кожен байт розглядається як дві тетради (два полубайта), а кожна тетрада кодує одну десяткову цифру.
Таке подання дозволяє закодувати в одному байті десяткові числа від 0 до 99. Зверніть увагу на те, що, використовуючи для представлення шістнадцяткову систему числення, в одному байті можна закодувати число від 0 до FF, що відповідає числах десяткової системи від 0 до 255.
Ці приклади показують, що таке подання чисел більш раціонально: використовується менший обсяг пам'яті, скорочується програма.
Таблиця 1 - Представлення чисел в різних системах числення і відображення їх на дисплеї
Десяткова система числення | Вісімкова система числення | Двійкова сис-тема счісле-ня (за зошити) | Шістнадцяти-ричная система числення | Символи на дисплеї |
0 | 0 | 0000 | 0 | 0 |
1 | 1 | 0001 | 1 | 1 |
2 | 2 | 0010 | 2 | 2 |
3 | 3 | 0011 | 3 | 3 |
4 | 4 | 0100 | 4 | 4 |
5 | 5 | 0101 | 5 | 5 |
6 | 6 | 0110 | 6 | 6 |
7 | 7 | 0111 | 7 | 7 |
8 | 10 | 1000 | 8 | 8 |
9 | 11 | 1001 | 9 | 9 |
10 | 12 | 1010 | А | А |
11 | 13 | 1011 | У | B |
12 | 14 | 1100 | З | З |
13 | 15 | 1101 | D | D |
14 | 16 | 1110 | Е | E |
15 | 17 | 1111 | F | F |
1.2 Арифметичні команди
Основний арифметичної функцією є складання двох чисел. Команда, що має мнемокод ADD R д, складає дані регістра R д і акумулятора (регістру А) і результат складання запам'ятовує в акумуляторі.
- CARRY - регістра ознак. Розряд (прапор) переносу грає велику роль при виконанні мікропроцесором арифметичних операцій і працює дев'ятий розрядом акумулятора. По прапору командами IC і INC можна здійснити перехід. Застосовується він так само при додаванні чисел довше восьми розрядів, виконуючи функції зв'язку між двома байтами запису числа.
Про стан прапора перенесення, як і інших прапорів регістра ознак у МІКРОЛАБе може повідомити комірка пам'яті з адресою 83ЕА, де прапори записуються в послідовності, наведеній на малюнку 1.1.
У «ЕЛЕКТР0НІКЕ-580» розряд З висвічується на панелі установки.
Малюнок 1.1 - Прапори № ШС КР580ІКБ0
Віднімання вмісту регістра R д з вмісту акумулятора виробляє команда SUB R д. Наприклад, команда SUB B віднімає з акумулятора дані регістра В.
Команда вирахування використовує прапор переносу як розряд позички. Якщо прапор переносу встановлюється після команди SUB R д, значить, число в регістрі R д більше, ніж в акумуляторі.
Після виконання команди SUB R д результат залишається в акумуляторі, виклик вмісту якого на індикатор регістра даних здійснюється адресою 83ЕВ в "МІКРОЛАБе" і клавішами REC, А в "ЗЛЕКТРОНІКЕ-580".
1.3 Програма складання двох однобайтовим чисел X і У
Завдання полягає в тому, щоб, виконавши занесення однобайтовим чисел в регістри А і R д, скласти їх і помістити результат складання в акумулятор.
Задайтеся числовими значеннями Х = 38, Y = А3 і початковим адресою програми, прийнявши його рівним 8200.
Зверніть увагу на те, що всі наведені числа записані в шістнадцятковій системі числення.
Увімкніть лабораторну установку і, користуючись лістингом програми, наведеним у табл. 2, запишіть у пам'ять ЕОМ за вказаними адресами коди команд.
Таблиця 1.2 - Програма PRG 1 складання двох однобайтовим чисел
Адреса | Код команди | Мітка | Мнемокод | Коментар |
8200 | AF | PRG 1: | Х R А А | Очистити акумулятор |
8201 | ЗЕ | MVI A, 3 8 | Записати в акумулятор | |
8202 | 38 | число X | ||
8203 | 06 | MVI B, A3 | Записати в регістр В | |
8204 | A3 | число У | ||
8205 | 80 | ADD 8 | Скласти X і Y | |
8206 | E7 | RST 7 | Перервати виконання програми |
Виконавши запис програми, встановіть початкова адреса і запустіть програму. Після її виконання на дисплеї встановиться запис: 8207 DB _ _, що показує результат обчислення DB за адресою 8207.
Для отримання різниці двох чисел X та Y можна використовувати програму PRG 1, замінивши в ній за адресою 8205 код команди 80 (ADD B) кодом 90 (SUB В) команди віднімання вмісту регістра В з вмісту акумулятора, розмістивши попередньо в регістрах В і А відповідно від'ємник і зменшуване. Різниця буде записана в акумуляторі.
1.4 Складання масиву однобайтовим чисел
Масив однобайтовим шістнадцяткових чисел, наприклад, 31, АВ, 86, розмістіть в послідовних адресах пам'яті, наприклад, 8250, 8251, 8252, 8253.
В якості вхідних параметрів для виконання програми необхідно мати адресу першого доданка, наприклад, 8250, записаний в регістрах H, L, і число доданків - в регістрі С. Вихідним параметром буде сума, старший байт якій записаний в регістрі В, а молодший байт - в акумуляторі.
Таблиця 1.3 - Програма PRG 2 складання масиву однобайтовим чисел
Адреса | Код команди | Мітка | Мнемоніка | Коментар |
8200 8201 8202 | 21 50 82 | PRG 2: | LXI H, 8250 | Завантажити в регістри HL, адресу першого доданка |
8203 8204 | 0E 04 | MVI C, 04 | Завантажити в регістр З кількість доданків | |
8205 | AF | XRA A | Очистити акумулятор | |
8206 | 47 | MOV B, A | Очистити регістр У | |
8207 | 86 | M1: | ADD M | Додати до вмісту акумулятора число з масиву доданків |
8208 8209 820А | D2 0D 82 | INC M2 | Якщо переносу немає, то йти на М2 | |
820В 820С | 04 B7 | INR B ORA A | Збільшити вміст регістра В на I |
Очистити прапор переносу