Те же самые команды, что и для чисел в двоичном дополнительном
коде, используются в программе для работы с числами в
двоично=десятичном коде BCD. Однако результат арифметических
операций может оказаться неправильным для двоично=десятичного
представления. Команды десятичной коррекции корректируют
результат, полученный после действий двоичной арифметики.
Десятичная коррекция для сложения DAA и десятичная коррекция
для вычитания DAS используются для работы только с упакованными
десятичными числами. В упакованном десятичном числе каждый байт
содержит две десятичные цифры. Команды DAA и DAS работают только с
байтом данных, содержащимся в регистре AL. В связи с этими
присущими командам ограничени- ями, ни у DAA, ни у DAS операндов
нет.
На Фиг. 4.12 показаны два примера. В первом примере
складываются два упакованных десятичных числа. Оба числа состоят из
двух десятичных цифр, поэтому они представлены единственными
байтами. В примере складываются эти числа, оставляя результат в
регистре AL. Непосредственно за этим следует команда DAA, которая
корректирует результат сложения, преобразуя его в упакованную
десятичную форму. После команды DAA в регистре AL остается
правильное упакованное десятичное число в диапазоне 0 - 99. Если
результат меньше 100, регистр содержит ответ, а флаг переноса
содержит 0. Если результат находится в диапазоне 100 - 198, то в
регистре AL остаются две младшие десятичные цифры, а флаг переноса
установлен равным 1, показывая, что был перенос.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:01:04
Фиг. 4.12 Пример двоично-десятичной арифметики Page 1-1
PAGE ,132
TITLE Фиг. 4.12 Пример двоично-десятичной арифметики
0000 CODE SEGMENT
ASSUME CS:CODE,DS:CODE