АЛГОРИТМИ ВИКОНАННЯ ОПЕРАЦІЙ ДОДАВАННЯ ТА ВІДНІМАННЯ ДВІЙКОВО\КОДОВАНИХ ДЕСЯТКОВИХ ЧИСЕЛ ДЛЯ ОДНОКРИСТАЛЬНОГО МП 8080 (КР580ВМ80А).

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2003
Тип роботи:
Методичні вказівки
Предмет:
Архітектура комп'ютерів

Частина тексту файла (без зображень, графіків і формул):

3. КОНТРОЛЬНІ ЗАПИТАННЯ 3.1. Для чого і як працює команда десяткової корекції акумулятора ? 3.2. Як виконується додавання двійково-кодованих десяткових чисел в МП КР580МВ80А ? 3.3. Які основні правила виконання віднімання BCD чисел ? 3.4. Який алгоритм перетворення 8-бітного двікового цілого беззнакового числа в упаковане десяткове число ви знаєте ? 3.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 Ланцов А.Л., Зворыкин Л.Н., Осипов И.Ф. Цифровые устройства на ком- плементарных МДП интегральных микросхемах.-М.: Радио и связь,1983. МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ Національній університет "Львівська політехніка"  АЛГОРИТМИ ВИКОНАННЯ ОПЕРАЦІЙ ДОДАВАННЯ ТА ВІДНІМАННЯ ДВІЙКОВО\КОДОВАНИХ ДЕСЯТКОВИХ ЧИСЕЛ ДЛЯ ОДНОКРИСТАЛЬНОГО МП 8080 (КР580ВМ80А) МЕТОДИЧНІ ВКАЗІВКИ до лабораторної роботи №6 з курсу "Архітектура комп'ютерів" для студентів базового напряму 6.08.04 "Комп'ютерні науки" ЗАТВЕРДЖЕНО на засіданні кафедри САП Протокол № від 2003р.. ЛЬВІВ 2003 АЛГОРИТМИ ВИКОНАННЯ ОПЕРАЦІЙ ДОДАВАННЯ ТА ВІДНІМАННЯ ДВІЙКОВО\КОДОВАНИХ ДЕСЯТКОВИХ ЧИСЕЛ ДЛЯ ОДНОКРИСТАЛЬНОГО МП 8080 (КР580ВМ80А) . Методичні вказівки до лабораторної роботи №5 з курсу "Архітектура комп'ютерів" для студентів базового напряму 6.08.04 "Комп'ютерні науки" /Укл. Панчак Р.Т., Процько І.О., Теслюк В.М. - Львів: НУ"ЛП", 2003р.-6с. Укладачі: Панчак Роман Теодорович, ст. викл., Процько Ігор Омелянович, к.т.н.,доц., Теслюк Василь Миколайович, к.т.н., доц., Відповідальний за випуск: Ткаченко С.П., к.т.н., доц. Рецензенти: Каркульовський В. І., к.т.н., доц., Стех Ю.В., к.т.н., доц. 1. МЕТА РОБОТИ Вивчити алгоритми виконання операцій додавання та віднімання двійково\кодованих десяткоаих чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів. 2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ Існують протиріччя між машинним представленням чисел (двійкова система числення) і представлення чисел у повсякденному житті (десяткові числа). Перетворення між ними у випадку великого об'єму вхідних даних і вихідних результатів веде до помітних витрат комп'ютерного часу. Тому, розроблені форми представлення чисел, в яких суміщаються двійкова і десяткова системи числення. Такі форми отримали загальну назву двійково-кодованого десяткового представлення (Binari-Coded Decimal) або BCD-кодування. У спакованому форматі, який часто називають BCD-представленням десяткових чисел, байт містить дві десяткові цифри. Молодша цифра займає праву тетраду (біти 3:0), старша - ліву тетраду (біти 7:4). Обидві цифри представляються своїм двійковим еквівалентами, тобто за допомогою 0 і 1 відповідно з вагами двійкових розрядів 8 / 4 / 2 / 1. Наприклад, десятковому числу 72 , відповідає BCD код 0111 0010 (упакований байт BCD чисел). Набір команд арифметичних операцій чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А) містить спеціальну команду двійково-десяткової корекції акумулятора DAA (Decimal Adjust Accumulator). , Для реалізації прикладних задач в МПС виконуються арифметичні операції з застосованням команди DAA. Наприклад, при виведенні опрацьованої інформації з МПС через дешифратор (К564ИД5) BCD коду в семисегментний на рідкокристалічний індикатор. 2.1 Арифметична операція додавання чисел в BCD кодах Арифметична операцыя додавання чисел в BCD кодах виконується в два етапи: 1. Операнди додаються як двійкові числа; 2. Виконується корекція отриманого значення командою DAA. Десяткова корекція вмісту акумулятора командою DAA відбувається в схемі двійково-десяткової корекції мікропроцесора КР580ВМ80А. 8-розрядний код акумулятора в цій схемі коректується за таким правилом: - якщо молодша тетрада містить число, яке більше ніж 9, або встановлено прапорець переносу AC=1, то вміст акумулятора збільшується на 6; - якщо після цього старша тетрада містить число, яке більше ніж 9, або встановлено прапорець CY=1, то до старшої тетради додається 6. Суть корекції полягає додаванні при необхідності до двійково-десяткового коду тетради константи 6 (0110). Це пояснюється тим, що 4-розрядна двійкова тетрада має 16 можливих кодових комбінації (від 0000 до1111), що відповідають десятковим числам від 0 до 15, а при двійково-десятковому кодуванні чисел використовується всього 10 комбінацій (від 0000 до 1001) для представлення цифр від 0 до 9. тобто шість комбінацій, більших 1001 не використовуються. В результаті додавання одиниці до коду дев'ятки (1001) треба отримати код нуля (0000) в даній тетраді та одиницю переносу в наступну тетраду. Таким чином, якщо результат суми в тетраді буде більше 9, чому відповідає одиничне значення признаку переносу з даної тетради або код, більший 1001, то для одержання вірного двійково-десяткового коду до даної тетради додається коректуючий код шістки (0110). Наприклад, проміжний результат двійкового додавання BCD-чисел 79 і 39 має такий вигляд: 0111 1001 + 0011 1001 1011 0010 (CY=1, AC=1) Після виконання команди DAA : 0001 1000 (CY=1), отримали результат 118. 2.2 Арифметична операція віднімання чисел в BCD кодах Використання набору арифметико-логічних команд МП КР580ВМ80А використовується для виконання арифметичної операції віднімання двійково-кодованих десяткових чисел. Слід зауважити, для віднімання спеціальної команди корекції нема, тобто команда DAA не корегує результат двійкового віднімання. Тому операцію віднімання (X-Y) BCD-чисел необхідно виконувати в два етапи (операції виконуються в двійковому коді): -утворити доповнюючий BCD-код від'ємника Y за формулою : Yдоп = ((10k-1)-Y)+1), (1) k-порядок BCD-чисел; -додати отриманий двійково-десятковий код до зменшуваного : ( X+Yдоп ) ; -скоригувати проміжний результат командою DAA. Наприклад, для отримання доповнюючого десяткового коду дворозрядного BCD числа можна використати послідовність команд відповідно наведеної формули: STC ; встановлення прапорця CY=1 MVI A,99h ; запис в акумулятор числа 99h ACI 0 ; отримуєм еквівалент 100 в коді BCD SUB M ; отримуєм доповнюючий BCD-код. Так, для Y=63, в результаті виконання наведеної послідовності доповнюючий код буде Yдоп=(100-63)=37, а в BCD форматі 0011 0111. 2.3 Арифметична операція додавання/віднімання знакових чисел в BCD кодах В загальному випадку перед додаванням/відніманням необхідно проводити аналіз знаків операндів і формування при необхідності доповнюючих кодів операндів. Алгоритм додавання/віднімання BCD чисел зі знаком повинен обов'язково враховувати знаки операндів. Під знак в двійково-десятковому кодуванні відводиться старша тетрада: знаку "+" відповідає код 0000, знаку "-" код 1001. При перетворенні BCD-кодів з прямого в доповнюючий і навпаки змінюються лише цифрові розряди, знакові розряди зберігають своє значення. Однак, при безпосередньому виконанні арифметичних операцій над заковими розрядами поряд з цифровими виконуються операції додавання/віднімання і їх значення також підлягають десятковій корекції. Наприклад, a) виконання операції над BCD-кодами 428 -316 =112, доповнюючий BCD-код числа 316 після виконання (1) буде рівний 684: 0000 0100 0010 1000 ; +428 +1001 0110 1000 0100 ; Yдоп= -684 1001 1010 1010 1100 0110 0110 0110 ; DAA 1010 0001 0001 0010 0110 ; DAA 1 0000 0001 0001 0010 + 1 1 2 б) виконання операції над BCD-кодами - 428 -316 = - 744, доповнюючий BCD-код чисел 428 і 316 після виконання (1) буде віповідно рівний 572 і 684: 1001 0101 0111 0010 ; -572 +1001 0110 1000 0100 ; -316 10010 1011 1111 0110 0110 0110 0110 0000 ; DAA 11001 0010 0101 0110 - 2 5 6 , ; доповнюючий код. Прямий код результату - (1000-256) = -744 2.4 Перетворення чисел двійково-десяткового формату в двійковий формат і з двійкового формату в BCD-коди. Для ефективного використання множини арифметичних команд МП КР580 застосовуються алгоритми перетворення з формату BCD у двійковий формат і навпаки, так як мікропроцесор КР580ВМ80А може виконувати додавання і віднімання над двійковими і двійково-кодованими десятковими (BCD-формат) числами. Розглянемо алгоритм переведення 8-бітного двійкового цілого беззнакового числа в упаковане двійково-кодоване десяткове число. В упакованому BCD-числі кожен байт містить по дві двійково-десяткові цифри. Нехай в акумулятор записано байт, який інтерпретується як двійкове ціле беззнакове число (діапазон від 0 до 255), і необхідно утворити в парі регістрів HL його представлення як упакованого десяткового числа. Простий спосіб полягає в тому, щоб спочатку визначити цифру сотень шляхом віднімання 100 від даного двійкового числа. Далі послідовним відніманням 10 знаходиться цифра десятків. Після цього в акумуляторі залишається цифра одиниць. Віднімання сотень і десятків виконується до отримання від'ємної різниці з підрахунком числа віднімань, після цього відновлюється залишок додаванням до від'ємної різниці 100 (або 10). Приклад програми перетворення 8-бітного цілого беззнакового числа в упаковане двійково-десяткове число : BBCD: MVI H,-1 L100: INR H SUI 100 JNC L100 ADI 100 MVI L,-1 L10: INR L SUI 10 JNC L10 ADI 10 MOV C,A MOV A,L RRC RRC RRC RRC ORA C MOV L, A HLT Розглянем алгоритм перетворення упакованого десяткового цілого цілого беззнакового числа у двійкове. Нехай в акумуляторі знаходиться байт, який представляє упаковане двійково-десяткове число (діапазон від 0 до 99), і необхідно утворити в акумуляторі еквівалентне двійкове число. Алгоритм перетворення полягає в тому, щоб старшу тетраду акумулятора (цифру десятків) домножити на десять і додати до отриманого добутку молодшу тетраду (цифру одиниць). Найпростіше множення на 10 (в двійковому коді 1010 В) виконується шляхом множення цифри на 8 (зсув на три біти вліво) і додавання цифри, домноженої на 2 (зсув на 1 біт вліво). Програма перетворення упакованого десяткового цілого цілого беззнакового числа у двійкове: BCDB: MOV B,A ZNI F0h RRC MOV C,A RRC RRC ADD c MOV C,A MOV A,B ANI 0Fh ADD C HLT
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!