4. КОНТРОЛЬНІ ЗАПИТАННЯ
4.1. Як виконуються багаторозрядні операції додавання і віднімання в МП КР580МВ80А ?
4.2. Як виконуються багаторозрядні операції ділення і множення в МП КР580МВ80А ?
4.3. Яка особливість формату представлення дійсних чисел?
4.4. Який алгоритм операції множення чисел в форматі з плаваючою комою?
4.5. У чому полягає відмінність представлення знакових чисел в форматах з фіксованою та плаваючою комою?
4. ЛАБОРАТОРНЕ ЗАВДАННЯ
4.1. Набрати, скомпілювати та запустити програму задану викладачем .
4.2. Пояснити дії, які виконує програма.
4.3. Перевірити достовірність одержаного результату.
5. ЗМІСТ ЗВІТУ
5.1. Титульний лист.
5.2. Мета роботи, теоретичні відомості.
5.3. Лабораторне завдання.
5.4. Програма у мнемокоді Асемблера і об'єктному коді.
5.5. Висновок та аналіз помилок допущених при роботі.
6. ЛІТЕРАТУРА
6.1. Микропроцессоры и микропроцессорные системы:Учебн. пособие для вузов/Под ред. В.Б. Смолова.-М.: Радио и связь,1981.
6.2. Калабеков Б.А., Микропроцессоры и их применение в системах передачи и обработки сигналов: Учебн. пособ. для вузов.-М.: Радио и связь,1988.
6.3. Лихтницендер Б.Я., Кузнецов В.Н., Микропроцессоры и вычислительные устройства в радиотехнике: Учебн. пособие.-К.: Вища школа,1988.
6.4 Зубков С.В., Assembler для DOS, Windows и UNIX.- М.: ДМК Пресс,2000.
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
Національній університет "Львівська політехніка"
АЛГОРИТМИ ВИКОНАННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ
НАД БАГАТОРОЗРЯДНИМИ ЧИСЛАМИ
В ОДНОКРИСТАЛЬНОМУ МП 8080 (КР580ВМ80А)
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи №7
з курсу "Комп'ютери та мікропроцесорні системи"
для студентів базового напряму 6.08.04 "Комп'ютерні науки"
ЗАТВЕРДЖЕНО
на засіданні кафедри САП
Протокол № від 2003р..
ЛЬВІВ 2003
АЛГОРИТМИ ВИКОНАННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ НАД БАГАТОРОЗРЯДНИМИ ЧИСЛАМИ В ОДНОКРИСТАЛЬНОМУ МП 8080 (КР580ВМ80А). Методичні вказівки до лабораторної роботи №7 з курсу "Комп'ютери та мікропроцесорні системи" для студентів базового напряму 6.08.04 "Комп'ютерні науки" /Укл. Панчак Р.Т., Процько І.О., Теслюк В.М. - Львів: НУ"ЛП", 2003р.-6с.
Укладачі: Панчак Роман Теодорович, ст. викл.,
Процько Ігор Омелянович, к.т.н., ст. викл.,
Теслюк Василь Миколайович, к.т.н., доц.,
Відповідальний за випуск: Ткаченко С.П., к.т.н., доц.
Рецензенти: Каркульовський В. І., к.т.н., доц.,
Стех Ю.В., к.т.н., доц.
1. МЕТА РОБОТИ
Вивчити алгоритми виконання арифметичних операцій над багаторозрядними числами в однокристальному мікропроцесорі Intel 8080 (КР580ВМ80А). Набути практичних навиків складання та налагоджування програм виконання операцій додавання/віднімання та множення/ділення багаторозрядних чисел з використанням цих алгоритмів.
2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Однокристальний мікропроцесор Intel 8080 (КР580ВМ80А) - 8 розрядний, тобто виконує арифметико-логічні операції над байтами даних. Однак в багатьох застосуваннях МПС 8-біт недостатньо для одержання заданої точності. В МП КР580ВМ80А можна визначити тип даних любого формату (ефективно кратний 8-бітам: 24біти, 32біти,...,1024біти). На основі виконання заданого набору команд, виконання операцій з такими форматами можна здійснювати побайтно у 8-розрядному АЛУ. Тому над числами, що представляються двома і більше байтами, основні арифметичні операції реалізуються програмним шляхом.
2.1 Додавання та віднімання багаторозрядних чисел цілого типу
При складанні програм додавання і віднімання багаторозрядних чисел важливу особливість становить організація циклічної частини арифметичної операції. Дані операції спочатку починають виконувати над молодшими байтами (при початковому CY=0), а пізніше над всіма решта (з молодшого до найстаршого) з врахуванням переносів. Основними командами, що забезпечує додавання текучих байтів з врахуванням прапорця переносу CY є команди:
ADC r (A)(A)+(r)+(CY);
ADC M (A)(A)+((H)(L))+(CY);
ACI байт (A)(A)+(байт)+(CY);
віднімання: SBB r (A)(A)-(r)-(CY);
SBB M (A)(A)-((H)(L))-(CY);
SBI байт (A)(A)-(байт)-(CY);
Наведені команди дадавання/віднімання використовують значення переносу CY, сформованого на попередньому повторенні циклу. Тобто, організований цикл багаторозрядної арифметичної операції не повинен містити команд, що можуть змінити значення CY. Якщо внесення в цикл багаторозрядної операції команд, що впливають на прапорець переносу, необхідне, то попередньо запам'ятовується CY, а перед багаторозрядною операцією - відновлюється.
2.1 Множення та ділення багаторозрядних чисел цілого типу
В однокристальному мікропроцесорі Intel 8080 (КР580ВМ80А) у 8 розрядному АЛУ ефективно виконувати операцію множення (4)х(4)=(8) розрядними числами. Відомі способи і алгоритми множення/ділення (алгоритм Бута, ділення з відновленням залишку) виконуються в МПС через команди додавання/віднімання та зсуву багаторозрядних даних.
Для богаторозрядних цілих чисел в однокристальному мікропроцесорі КР580ВМ80А можна створити підпрограму множення різноманітних двійкових форматів (8)х(4)=(12), (8)х(8)=(16), (16)х(8)=(24), (16)х(16)=(32) та ін. Множення над двома n1 та n2-бітними співмножниками формує (n1+n2) -розрядний добуток. Підпрограма ділення багаторозрядних чисел більших ніж 8-розрядів може використовувати формати (16):(8), (24):(8), (24):(16), (32):(16) та ін. Ділення над двома n1, n2-бітними співмножниками формує (n1-n2) - розрядну частку.
Можна задати і виконувати операції множення/ділення й в інших форматах, наприклад 6:2, але при цьому виконання операцій над такими форматами може ускладнюватись.
Важливо відзначити, що у випадку множення/ділення на цілі числа рівні степені двійки (2,4,8,...,2n )можна використовувати команди зсуву n-раз вправо/вліво, попередньо встановивши біт прапорця переносу в нуль:
STC ; (CY) (1)
CMC ; (CY=0)
для множення на 2 RAL ; (CY)(A7), (A0) (CY=0), (An+1) (An);
для ділення на 2 RAR ; (CY=0)(A7), (A0) (CY), (An) (An+1).
Однак, перетворення в процесі виконання арифметичних операцій, у випадку великого об'єму вхідних багаторозрядних даних і вихідних результатів, веде до помітних витрат комп'ютерного часу. Тому сучасні скалярні мікропроцесори у вигляді надвеликих інтегральних схем (НВІС) використовують 64-розрядне АЛУ та пакетні форми представлення чисел.
3. АРИФМЕТИЧНІ ОПЕРАЦІЇ НАД ДІЙСНИМИ ЧИСЛАМИ
Існує широкий клас задач, в тому числі обчислення рівнянь цифрового фільтра (ЦФ), де необхідно проводити обчислення в МПС використовуючи дійсні числа. В цифрових пристроях використовуються дві форми представлення чисел: формат з фіксованою комою, формат з плаваючою комою.
3.1 Арифметичні операції над числами в форматі з фіксованою комою
В форматі з фіксованою комою відводяться ціла частина і дробова частина у вигляді цілих чисел. Один старший розряд використовається в якості знаку. Кома відділяє цілу частину числа від дробової та займає фіксоване положення. Враховуючи 8-розрядне АЛУ МП КР580ВМ80А, найбільш поширені формати чисел з фіксованою комою, де відведено на цілу і дробову частину по тетраді, байту, слову (4:4, 8:8, 16:16 і тд. ). Можна задати і виконувати операції й в інших форматах, наприклад 6:2, але деякі операції над такими форматами можуть ускладнюватись. Неправильний вибір розрядної сітки може в результаті виконання арифметичних операцій привести до переповнення, що в цьому випадку вимагає масштабування.
Додавання/віднімання двійкових чисел представлених в форматі з фіксованою комою, по суті не відрізняються від операцій додавання або віднімання цілих багаторозрядних чисел. Наприклад, результати двійкового додавання або віднімання дійсних чисел матимуть вигляд:
а) 010000, 1000 16,5
+ 010010, 1000 +18,5
100011, 0000 35,0
б) 0110,0100 6,25 в) 1000,1000 8,50
+1000,1000 +8,50 -0110,0100 - 6,25
1110,1100 14.75 , 0010,0100 2,25 .
При цьому, враховується розряд перенесення CY з дробової частини в цілу.
Арифметичні операції множення і ділення в форматі з фіксованою комою не відрізняються по суті з алгоритмами їх виконання над цілими числами. Характерним є те, що розрядність добутку виділяється для цілої та дробової частин. Наприклад,
а) 8.5 1000,1000
х 6,25 х 0110,0100 ;
53,125 00110101,00100000
б) 0,8125 0,1101
х 0,6875 х 0,1011 .
0,10001111
Для порівняння, добуток цілих чисел рівний 32 розряди, для множників 16х16 розрядів, а добуток з фіксованою комою рівний 16:16, для множників (8:8) х (8:8) розрядів (добуток з фіксованою комою рівний 32:32, для множників (16:16)х(16:16) розрядів).
Операція ділення для чисел представлених в форматі з фіксованою комою містить дії аналогічні виконанню операції ділення над багаторозрядними цілими числами, результатом операції є частка та залишок представлені у заданих форматах. Наприклад, якщо ділене і дільник представлені в форматі (4:4), то необхідно одержану частку перемножити на 2 в четвертій степені для одержання відповідного формату:
1010,0000 /0101.0000 = 0010 0010,0000 (після зсуву на 4-біти);
10,0 / 5,0 = 2 .
3.1 Арифметичні операції над числами в форматі з плаваючою комою
Формат представлення чисел з плаваючою комою передбачає представлення числа в показниковій формі: мантиса, основа, порядок. В МПС такі числа представлені у вигляді двох груп чисел: перша група називається мантисою і визначає саме число, друга група пназивається порядком. Якщо задається формат з умовою наявності старшого розряду мантиси не рівного нулю, то маєм нормальну форму представлення. В цій формі запису маєм значно більший діапазон представлення дійсних чисел в порівнянні з такою самою розрядністю чисел з фіксованою комою, але алгоритм виконання арифметичних операцій при цьому ускладнюється. Так, операція додавання або віднімання виконується такою послідовністю:
- вирівнюються порядки доданків, молодший порядок збільшується до більшого порядку одного з доданків;
- виконується перетворення мантис в доповнюючий код, при необхідноcті;
- відповідно, коректується мантиса числа, порядок якого вирівнюється;
- виконується додавання мантис аналогічно алгоритму додавання чисел з фіксованою комою;
- у випадку необхідності виконується нормалізація результату;
- до суми записуєм сформований порядок.
Операція множення в форматі з плаваючою крапкою виконується за такою послідовністю:
- визначається знак добутку;
- перемножуються мантиси співмножників аналогічно алгоритму множення чисел з фіксованою комою;
- визначається порядок добутку за допомогою арифметичної операції додавання цілих чисел зі знаком;
- у випадку необхідності виконується нормалізація результату;
- до суми записуєм сформований порядок.
Ділення в форматі з плаваючою крапкою виконується аналогічно так, як і множення. Мантиса діленого повинна бути менше мантиси дільника, що одержуєм через масштабування. Порядок частки визначається відніманням порядків діленого та дільника. У випадку необхідності виконується нормалізація результату;
Використання набору арифметико-логічних команд МП КР580ВМ80А
використовується для виконання арифметичних операцій над багаторозрядними числами, форма представлення і формати яких визначаються на етапі проектування.