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