Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Арифметичні операції над багатобайтними числамиСодержание книги Поиск на нашем сайте
Як видно, процесор КР580ик80 безпосередньо може виконувати обмежене коло арифметичних операцій над однобайтними операндами. Але це не означає, що ним не можна виконувати складнішу обробку багатобайтних даних. Така обробка реалізується не однією окремою командою, а невеликими програмами. Нижче наводяться приклади програм деяких операцій з багатобайтними числами. При цьому використовуються такі символічні імена і адреси:
Приклад 5.1. Додавання багатобайтних чисел (цілих без знаку)
Примітки: 1. Для реалізації підпрограми віднімання SUBN необхідно повторити підпрограму ADDN, але замінити в ній команду ADC на команду SBB. У випадку отримання від’ємної різниці ознака С буде дорівнювати 1. 2. Для реалізації підпрограми складання багатобайтних десяткових двійково-кодованих чисел (BCD-чисел) в підпрограмі ADDN після команди ADC слід ввести команду DAA. Десяткове переповнення фіксується в розряді С регістра ознак. Приклад 5.2. Віднімання багатобайтних десяткових двійково-кодованих чисел (BCD-чисел, цілих без знаку). Віднімання BCD-чисел виконується в МП К580 відносно складно, оскільки команда DAA не корегує результат двійкового віднімання BCD-чисел. Віднімання BCD-чисел виконується в дві фази: спочатку отримують доповнення від’ємника до 10 n+1, а потім складають отриманий код із зменшуваним. При цьому команда DAA корегує результат двійкового складання BCD-чисел.
Підпрограма DSUBN
Примітки: 1. Для представлення BCD-чисел із знаком вводиться тетрада для знаку (0000 – додатні числа, 1001 – від’ємні числа). 2. Використання в підпрограмі DSUBN команди взаємного, обміну XCHG дозволяє звертатися до пам’яті за однобайтними командами ADD М і MOV М, А, Команда XCHG дозволяє позбавитися від додаткових команд міжрегістрового обміну MOV г1, г2. 3. Отримання додаткового коду від’ємника і складання його із зменшуваним виконується в одному циклі. 4. Додатковий код від’ємника утворюється відніманням його, з коду «всі дев’ятки» і інкрементуванням результату. Саме для цього командою STC ознака переносу заздалегідь встановлюється в 1, а підсумовування виконується командою ACI яка враховує значення ознаки переносу. 5. Якщо після закінчення підпрограми ознака переносу дорівнює нулю, то це свідчить про отримання від’ємного результату. 6. Якщо двійкові числа представлені в двійковому додатковому коді, а BCD-числа представлені в десятковому до додатковому коді, то розглянуті підпрограми без змін можуть бути використані для операцій над числами із знаком. У випадку відсутності переповнення результат операції буде отриманий в додатковому коді. Оскільки АЛП в МП К580 не формує ознаку переповнення, доводиться доповнювати підпрограми процедурою перевірки переповнення розрядної сітки, яка реалізується серією команд маскування та порівняння і працює за правилом: переповнення має місце, якщо знак результату відрізняється від однакових знаків обох операндів при складанні, або не співпадає із знаком зменшуваного при віднімання у разі, коли операнди мають різні знаки. Програмна реалізація операції множення. Існує багато різних алгоритмів виконання операції множення. Розглянемо найбільш часто використовувані способи і оцінимо їх достоїнства і недоліки. Приклад 5.3. Множення байтів. Варіант 1. Множення молодшими розрядами вперед із зсувом часткової суми вправо. D – множене, Е – множник, ВС – двобайтний добуток, L – лічильник бітів.
Примітки: 1. Командою RAR аналізований біт множника поміщається в тригер переносу. Якщо він дорівнює 1, то вміст регістрів В і D сумують, а якщо С=0, то складання не виконується. Після цього (починаючи з мітки NOADD) проводиться зсув часткової суми управо. 2. Довжина підпрограми MULT1 складає 24 байт. Приклад 5.4. Множення байтів. Варіант 2. С – добуток, D – множник, ВС – добуток, L – лічильник бітів. Множник поміщається на місце молодших розрядів добутку в регістр С. Молодші біти добутку заміщають старші біти множника, що звільняються, і тому окремих зсувів молодшого байту часткової суми виконувати не потрібно. За рахунок цього підпрограма MULT2, що наводиться нижче, на 3 байта коротша за підпрограму MULT1.
Примітка. Перевірка закінчення множення проводиться до аналізу старшого біта множника, і тому в лічильник бітів L завантажується константа 9, а не 8.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-10; просмотров: 121; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.214.28 (0.006 с.) |