4.2.2. Віднімання упакованих bcd-чисел
Аналогічно
додаванню, мікропроцесор розглядає
упаковані BCD-числа
як двійкові і, відповідно, виконує
віднімання BCD-чисел
як двійкових.
Виконаємо
віднімання 67-75. Оскільки мікропроцесор
виконує віднімання способом додавання,
то і ми зробимо так само (
Приклад
14. Віднімання
упакованих BCD-чисел
67
= 0110 0111
– 75
= 1011 0101
-8
= 0001 1100 = 28 ???
див. прикл. 14). Як
бачимо, результат дорівнює 28 в десятковій
системі числення, що є абсурдом.
У двійково-десятковому
коді результат має
бути рівним
0000 1000 (або 8 в десятковій системі числення).
При
програмуванні віднімання упакованих
BCD-чисел програміст, як і при відніманні
неупакованих BCD-чисел, повинен сам
здійснювати контроль за знаком. Це
робиться за допомогою прапора cf, який
фіксує позику зі
старших розрядів.
Само віднімання BCD-чисел
здійснюється простою командою віднімання
sub
або sbb.
Корекція
результату здійснюється командою das:
das
(Decimal
Adjust
for
Substraction)
- Корекція результату віднімання для
представлення в десятковому вигляді.
Команда
das
перетворить вміст регістра al в дві
упаковані десяткові цифри за алгоритмом,
наведеним в описі команди das.
8