Page 86 - 149
P. 86
Команда LEA забезпечує програмну доступність виконавчої адреси. Вона
дозволяє організувати доступ до елементів складних структур даних
(наприклад, багатомірних масивів). Команди LDS і LES забезпечують
завантаження покажчиків і особливо ефективні для підготовки обробки
рядкових даних. Адресація регістрів зовнішніх пристроїв у командах вводу-
виводу може бути пряма (у межах перших 256 регістрів) і опосередкована
через регістр DX. Тим самим, з одного боку, досягається сумісність із МП
КР580ИК80, а з іншого боку -завдяки непрямої адресації підвищується
гнучкість адресації зовнішніх пристроїв.
Команда перекодування XLAT дозволяє опрацьовувати таблиці розміром
256 байтів. Початок таблиці в сегменті даних вказується в регістрі ВХ.
Команда виконує пересилку в AL байта таблиці, що знаходиться за номером в
регістрі AL. При відповідній підготовці таблиці забезпечується перетворення
символьних рядків, наприклад із коду КОИ-7 у код ДКОИ і т.д.
Арифметичні команди (додавання, віднімання, додавання і віднімання
спрощеного формату, множення, ділення і перетворення форматів даних)
призначені для виконання основних арифметичних операцій над
порядковими, цілими і двійково-десятковими числами. Алгоритми команд
подані в табл.4.16. Команди віднімання і додавання (за винятком команд
корекції) встановлюють ознаки результату. Команди INC і DEC залишають
без зміни ознаку переносу. Команди ADC і SBB забезпечують виконання
додавання і віднімання багатобайтових чисел. Порядкові, цілі і двійково-
десяткові числа обробляються тими самими командами додавання і
віднімання.
Щоб одержати правильний результат для двійково-десяткових чисел,
необхідно зробити корекцію. З цією метою у випадку додавання для
розпакованих чисел служить команда ААА, для упакованих - команда DAA.
Корекція відбувається, якщо в результаті двійкового додавання в тетраді
утворилося число більше 9 або виникло перенесення в наступну тетраду,
тобто результат додавання двох десяткових цифр більше 16. У першому
випадку необхідно відняти з тетради 10, у другому - додати в тетраду 6.
Оскільки віднімання з тетради рівносильне додаванню б, то в обох випадках
для корекції результату додають 6. При корекції розпакованих чисел
опрацьовується тільки молодша тетрада, а старша обнулюється. Байт, що
коректується, розташовується в регістрі AL. Якщо була необхідність
додавання 6, то це свідчить про перенос у старший десятковий розряд, тому
ознака CF встановлюється в 1. Крім того, до регістра АН добавляється 1.
Тим самим підвищуються зручності опрацювання багаторозрядних
двійково-десяткових чисел.
У випадку упакованих двійково-десяткових чисел спочатку відповідно до
розглянутого способу опрацьовується молодша тетрада. Якщо після
додавання числа 6 виникає перенос, то він складається зі старшою тетрадою,
що потім опрацьовується.
87