Когда в программе перемножаются два неупакованных десятичных числа,
результат в регистре AL является двоичным числом. Поскольку
наибольшее неупакованное десятичное в двоичном представлении число
равно 9, то максимальный результат при BCD-умножении без упаковки
равен 81. Однако, этот результат не является значимым неупакованным
BCD-представлением этого числа. Команда символьной коррекции для
умножения (AAM - от ASCII Adjust for Multiply) переводит такой
двоичный результат в неупакованный десятичный. Командой AAM старшая
десятичная цифра результата помещается в регистр AH, а в AL
остается младшая десятичная цифра. Например, если программа
перемножает значения 6 и 7 и результат в AL равен 2AH, то команда
AAM преобразует результат, помещая в AH 04H, а в AL - 02H, что
соответсвует неупакованному десятичному числу 42 в регистрах AH:AL.
Команда AAM вычисляет распакованный десятичный результат с
помощью деления числа в регистре AL на 10. Она помещает частное в
регистр AH, оставляя остаток в регистре AL. Команда AAM
устанавливает флаги нуля и знака в соответствии с результатом в
регистре AL. Так как результат - распакованное десятичное число,
знак всегда положителен, а знак нуля устанавливается равным 1,
только если исходное число кратно 10 - т.е. если младшая значащая
десятичная цифра равна 0. Остальные флаги после команды AAM
остаются неопределенными. Флаг переноса теперь не имеет смысла,