Assembler для начинающих


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



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


    Команды символьной коррекции очень похожи на команды десятичной
    коррекции.    Они следуют за сложением или вычитанием распакованных
    десятичных чисел.  В тех же случаях, в которых программа использует
    команды десятичной коррекции DAA и DAS для упакованных десятичных
    чисел, она использует символьную коррекцию для распакованных
    десятичных чисел.  В распакованных десятичных числах цифры от 0 до
    9 представляются одним байтом.  Такая конструкция числа называется
    символьной десятичной из=за того, что такие числа просто
    преобразовывать в символьный вид и наоборот (прибавлять и вычитать
    30H, соответственно).
 
      После сложения двух распакованных десятичных чисел программа
    обычно выполняет команду символьной коррекции при сложении AAA,


    которая преобразует результат в правильное распакованное
    представление десятичного числа. Правила сложения идентичны
    правилам для упакованных десятичних чисел. Поскольку сложение двух
    распакованных десятичных чисел может дать в результате число,
    большее 9, командам AAA и AAS требуется для работы не только
    регистр AL. В случае команды AAA младшая цифра скорректированного
    результата остается в регистре AL. Если десятичное сложение привело
    к переносу из младшей цифры, команда AAA устанавливает равными 1
    флаги переноса и дополнительного переноса. В других случаях она
    сбрасывает их в 0. Содержимое других флагов не определено после
    команды коррекции. Команды символьной коррекции отличаются от
    десятичных команд тем, что они влияют на содержимое регистра AH, а
    также устанавливают флаг переноса, если есть перенос из младшей
    значащей цифры.
 
      Символьная коррекция вычитания AAS используется в программе
    после вычитания одного распакованного десятичного числа из другого,
    и результат этой байтовой операции должен быть помещен в регистр
    AL. Результат команды символьной коррекции остается в регистре AL,
    и если вычитание привело к появлению заема, команда AAS уменьшает
    регистр AH, а также устанавливает флаги переноса и дополнительного
    переноса. В противном случае флаги сбрасываются. Другие флаги после
    команды не определены.




Содержание раздела