Симовльная коррекция: сложение и вычитание

    Команды символьной коррекции очень похожи на команды десятичной

    коррекции.    Они следуют за сложением или вычитанием распакованных

    десятичных чисел.  В тех же случаях, в которых программа использует

    команды десятичной коррекции DAA и DAS для упакованных десятичных

    чисел, она использует символьную коррекцию для распакованных

    десятичных чисел.  В распакованных десятичных числах цифры от 0 до

    9 представляются одним байтом.  Такая конструкция числа называется

    символьной десятичной из=за того, что такие числа просто

    преобразовывать в символьный вид и наоборот (прибавлять и вычитать

    30H, соответственно).

 

      После сложения двух распакованных десятичных чисел программа

    обычно выполняет команду символьной коррекции при сложении AAA,

    которая преобразует результат в правильное распакованное

    представление десятичного числа. Правила сложения идентичны

    правилам для упакованных десятичних чисел. Поскольку сложение двух

    распакованных десятичных чисел может дать в результате число,

    большее 9, командам AAA и AAS требуется для работы не только

    регистр AL. В случае команды AAA младшая цифра скорректированного

    результата остается в регистре AL. Если десятичное сложение привело

    к переносу из младшей цифры, команда AAA устанавливает равными 1

    флаги переноса и дополнительного переноса. В других случаях она

    сбрасывает их в 0. Содержимое других флагов не определено после

    команды коррекции. Команды символьной коррекции отличаются от

    десятичных команд тем, что они влияют на содержимое регистра AH, а

    также устанавливают флаг переноса, если есть перенос из младшей

    значащей цифры.

 

      Символьная коррекция вычитания AAS используется в программе

    после вычитания одного распакованного десятичного числа из другого,

    и результат этой байтовой операции должен быть помещен в регистр

    AL. Результат команды символьной коррекции остается в регистре AL,

    и если вычитание привело к появлению заема, команда AAS уменьшает

    регистр AH, а также устанавливает флаги переноса и дополнительного

    переноса. В противном случае флаги сбрасываются. Другие флаги после

    команды не определены.