реси РПД
MOV A, R7; завантаження операнда в акумулятор
ADD A, @ R0; додавання
Підсумовування десяткових чисел . Спосіб підсумовування десяткових чисел залежить від того, який двійковий код обраний для представлення десяткових цифр. Нижче розглядається операція підсумовування при використанні коду 8421.
Двійкові представлення десяткових цифр підсумовуються за звичайними правилами додавання двійкових чисел. Якщо отримана сума містить десять або більше одиниць, то формується одиниця переносу, передана в наступний десятковий розряд, а з суми віднімаються десять одиниць. Отриманий результат є цифра відповідного розряду суми. Наявність в отриманій сумі десяти або більше одиниць виявляється по такими ознаками: поява перенесення з розряду 8, що виникає при підсумовуванні цифр; наявність одиниць одночасно в розрядах 8 і 4 або 8 і 2 в отриманої суми. При цьому потрібна корекція суми додаванням до неї шести одиниць (числа 0110 2 ).
Покажемо ці дії на прикладах.
- Скласти десяткові цифри 6 і 2 і перенесення 1, надходить з попереднього десяткового розряду.
Десяткова система Код 8421
Перенесення 1 січня 1 січня
Перша цифра 6 0 1 1 0
Друга цифра 2 0 0 1 0
Сума 1 вересня 0 0 1
Корекція -
Результат 1 0 0 1
У цьому випадку отримане в результаті підсумовування число 1001 2 менше десяти і корекція суми не потрібно.
- Скласти десяткові цифри 8 і 9.
Десяткова система Код 8421
Перенесення 1 0 1 0
Перша цифра 1 серпня 0 0 0
Друга цифра 9 1 0 0 1
Сума 7 0 0 0 1
Корекція 0 1 1 0
Результат 0 1 1 січня
- Скласти десяткові цифри 6 і 7.
Десяткова система Код 8421
Перенесення 1 0 1 1 1 0
Перша цифра 6 0 1 1 0
Друга цифра 7 0 1 1 січня
Сума 1 Березня 1 0 1
Корекція 0 1 1 0
Результат 0 0 1 1
Приклад 1.5 . Скласти десяткові двійковій-кодовані числа (BCD-числа), розташовані в A і R7:
ADD A, R7; двійкове додавання
DA A; корекція результату
Алгебраїчне додавання з використанням додаткового коду . Для додавання чисел зі знаком необхідно негативне число перевести в додатковий код. У двійковій системі числення додатковий код негативного числа формується за наступним правилом: інвертуються (шляхом заміни 0 на 1 і 1 на 0) цифри усіх розрядів, крім знакового, і в молодший розряд додається одиниця. Наприклад, якщо = 1 10110 2 , то = 1 01010 2 (Знакові розряди виділені жирним шрифтом). Зворотне перетворення з додаткового коду в прямий код проводиться за тим же правилом.
Розглянемо приклади виконання операції додавання.
Нехай = 0 10110, = 1 01101.
Перенесення 1 1 1 січня
Перше доданок 0 1 0 1 1 0
Друге доданок 1 1 0 0 1 1
Сума 0 0 1 0 0 1
Як вказувалося вище, перенесення, що виникає з знакового розряду, відкидається.
Змінимо на зворотний знаки доданків (по відношенню до попереднього прикладу): = 1 10110, = 0 01101. Очевидно, очікуваний відповідь = 1 01001. p> Перенесення 1
Перше доданок 1 0 1 0 1 0
Друге доданок 0 0 1 1 0 1
Сума 1 1 0 1 1 січня
Сума 1 0 1 0 0 1
Таким чином, якщо результат додавання є негативне число, то воно виявляється представленим в додатковому коді.
Для вирахування 8-розрядних чисел без знака може бути використано вираз, де - поразрядное інверсія. Інший спосіб віднімання може бути заснований на наступному вираженні:.
Приклад 1.6 . Віднімання байтів. Операція віднімання може бути виконана двома способами: переказом від'ємника як негативного числа в додатковий код з подальшим складанням; перекладом зменшуваного в зворотний код з наступною інверсією суми.
Нехай потрібно відняти з A вміст регістра R6. Віднімання виконати в відповідності з виразом. Установка прапора C після виконання додавання буде свідчити про негативному переповненні.
CPL A; інверсія акумулятора
ADD A, R6; додавання
CPL A; інверсія суми (отримання різниці)
Приклад 1.7 . Отримати різниця 2-байтних чисел без знаку. Операнди розташовуються в РПД. Адреса зменшуваного зберігається в R1, а від'ємника - в R0. Результат помістити на місце зменшуваного:
; обчислення Z = X-Y
; X, Y - РПД
; R0 - адреса Y
; R1 - адреса X
; результат на місце X
SUBSTR: MOV A, @ R0; завантаження молодшого байта Y
CPL A; отримання додаткового коду Y
INC A;
ADD A, @ R1; віднімання молодших байт
MOV @ R0, A; запам&...