Вивчити алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580

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

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

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

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Архітектура комп'ютерів

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет Львівська політехніка Кафедра САПР  Звіт До лабораторної роботи №6 З курсу “Архітектура комп’ютерів” На тему: «Вивчити алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580». Мета: Вивчити алгоритми виконання операцій додавання та віднімання двійково/кодованих десяткових чисел для однокристального мікропроцесора (МП) КР580, набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів. Короткі теоретичні відомості Існують протиріччя між машинним представленням чисел (двійкова система числення ) і представленням чисел у повсякденному житті (десяткові числа). Перетворення між ними у випадку великого об'єму вхідних даних і вихідних результатів веде до помітних витрат процесорного часу. Тому, розроблені такі форми представлення чисел, в яких суміщаються двійкова і десяткова системи числення. Такі форми отримали загальну назву двійково-кодованого десяткового представлення (Binari-Coded Decimal) або BCD-кодування. У спакованому форматі, який часто називають BCD-представленням десяткових чисел, байт містить дві десяткові цифри. Молодша цифра займає праву тетраду (біти 3:0), старша - ліву тетраду (біти 7:4). Обидві цифри представляються своїми двійковими еквівалентами, які називаються також кодом 8/4/2/1 (за вагами двійкових розрядів). Розміщення десяткових цифр у байті показано на рисунку plpOpOplpOplplpOp Додавання BCD-чисел виконуються у два етапи : 1.Операнди додаються як двійкові числа; 2. Виконується корекція неправильного (загалом) проміжного результату. Корекцію виконує команда DAA - виконати десяткову корекцію акумулятора. За цією командою до акумулятора підєднується схема десяткової корекції, яка 8-розрядний код, що знаходиться в акумуляторі, інтерпретує як пару десяткових двійково-кодованих символів і виконує такі операції : - якщо молодша тетрада містить число, яке більше ніж 9, або якщо встановлений прапорець переносу АС=1, то вміст акумулятора збільшується на 6; - якщо після цього старша тетрада містить число, яке більше ніж 9, або якщо встановлено прапорець CY=1, то до старшої тетрадп додається 6. Наприклад, проміжний результат двійкового додавання BCD-чисел 79 і 39 має такий вигляд : 1О11 OO1O (CY=0, АС=1), а після виконання команди DAA отримаємо О111 О11О ( CY=l ), тобто правильний результат 118. Необхідно зауважити, що команда DAA не корегує результат двійкового віднімання. Тому, операцію віднімання BCD-чисел необхідно виконувати у два етапи: спершу утворюється доповнення від'ємника до 1О (тобто десятковий доповнюючий код), а потім отримане число додаться до зменшуваного. Після цього результат додавання можна корегувати командою DAA. Для отриманого десяткового доповнюючого коду може бути використана така послідовність команд : STC MVI A.99H АСІ 0 SUB М Перша команда встановлює прапорець CY=1. У результаті виконання третьої команди в акумуляторі буде число 9АН. Це еквівалент числа 100 в десятковій системі у коді BCD, тобто 99+1. У результаті виконання четвертої команди в акумуляторі буде сформовано доповнюючий до 100 код двозначного десяткового числа . Далі можна виконати додавання отриманого числа до зменшуваного і використовувати команду DAA. МП КР580 дозволяє виконувати арифметичні операції над двійковими і двійково-кодованими десятковими (BCD-формат) числами. Для ефективного використання множини арифметичних команд МП КР580 необхідні програмні засоби для переводу із формату BCD у двійковий формат і навпаки. Розглянемо алгоритм і програму перетворення 8-6ітного двійкового цілого беззнакового числа в упаковане десяткове число. В упакованому десяткованому числі кожен байт містить по дві цифри у форматі BCD. Припустимо, що в акумуляторі А знаходиться байт, який інтерпретується як двійкове ціле беззнакове число (діапазон від 0 до 255), і необхідно утворити в парі регістрів HL його представлення як упакованого десяткового числа. Простий спосіб перетворення полягає в тому, щоб спочатку визначити цифру сотень шляхом віднімання 100 від вихідного числа. Потім знаходиться цифра десятків послідовним відніманням 10. Після цього в акумуляторі залишається цифра одиниць. Віднімання обидва рази виконується до отримання від'ємної різниці з підрахунком числа віднімань, а потім до від'ємної різниці додається 100 (або 10) для відновлення останньої додатної різниці, яка менша ніж 100 (або 10). Програма перетворення 8-бітного цілого беззнакового числа в упаковане десяткове число виглядає так: BBCD: MVI Н,-1 L100: INR Н SUI 100 JNC L100 ADI 100 MVI L.-1 L10: INR L SUI 10 JNC L10 ADI 10 MOV С,А MOV A,L RRC RRC RRC RRC ORA C MOV L,A HLT Розглянемо алгоритм і програму перетворення упакованого десяткового цілого беззнакового числа у двійкове. Нехай в акумуляторі А знаходиться байт, який представляє собою упаковане десяткове ціле беззнакове число (діапазон від 0 до 99), і необхідно утворити в акумуляторі еквівалентне двійкове число. Перетворення полягає в тому, щоб старшу тетраду акумулятора (тобто цифру десятків) домножити на 10 і додати до отриманого добутку молодшу тетраду (цифру одиниць). Найпростіше множення на 10 (в двійковому коді 1010В) виконується шляхом множення цифри на 8 (зсунути на три біти вліво) і додавання цифри, домноженої на 2 (зсув на один біт вліво). Оскільки цифра десятків знаходиться у старшій тетраді, то замість зсуву її з молодшої тетрадп вліво, здійснюється зсув вправо. Завдання Виконати арифметичні операції над двійково-десятковими числами: знакові (-9)+5+(-3)+7. Дані вводяться через регістрову пару. Результат записати в регістр С в двійковій системі.
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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