- •Тема 2. Архітектура процесора і мова асемблера: Основи програмування на мові асемблера
- •4.1. Арифметичні дії над неупакованими bcd-числами
- •4.1.1. Додавання неупакованих bcd-чисел
- •4.1.2. Віднімання неупакованих bcd-чисел
- •4.1.3. Множення неупакованих bcd-чисел
- •4.1.4. Ділення неупакованих bcd-чисел
- •4.2. Арифметичні дії над упакованими bcd-числами
- •4.2.1. Додавання упакованих bcd-чисел
- •4.2.2. Віднімання упакованих bcd-чисел
4.2.2. Віднімання упакованих bcd-чисел
Аналогічно додаванню, мікропроцесор розглядає упаковані BCD-числа як двійкові і, відповідно, виконує віднімання BCD-чисел як двійкових.
Виконаємо
віднімання 67-75. Оскільки мікропроцесор
виконує віднімання способом додавання,
то і ми зробимо так само (
Приклад
14. Віднімання
упакованих BCD-чисел
67
= 0110 0111
– 75
= 1011 0101 -8
= 0001 1100 = 28 ???
При програмуванні віднімання упакованих BCD-чисел програміст, як і при відніманні неупакованих BCD-чисел, повинен сам здійснювати контроль за знаком. Це робиться за допомогою прапора cf, який фіксує позику зі старших розрядів. Само віднімання BCD-чисел здійснюється простою командою віднімання sub або sbb.
Корекція результату здійснюється командою das:
das (Decimal Adjust for Substraction) - Корекція результату віднімання для представлення в десятковому вигляді. Команда das перетворить вміст регістра al в дві упаковані десяткові цифри за алгоритмом, наведеним в описі команди das.