AAM
(Ascii Adjust after Multiply)
ASCII-коррекция после умножения
Схема команды: | aam |
Назначение:
корректировка результата умножения двух неупакованных BCD-чисел;
преобразование двоичного числа меньшего 63h (9910) в его неупакованный BCD-эквивалент.
Алгоритм работы:
разделить значение регистра al на 10;
записать частное в регистр ah, остаток — в регистр al.
Состояние флагов после выполнения команды:
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
? | r | r | r | r | ? |
Применение:
Команду aam используют для коррекции результата умножения двух неупакованных BCD-чисел. Специальной команды умножения BCD-чисел нет. Поэтому BCD-числа умножаются поразрядно, как обычные двоичные числа, командой mul. Максимальное число, которое получается при таком умножении, — это 9*9=8110=5116. Отсюда понятно, что значения, для которых командой aam можно получить их двузначный BCD-эквивалент в регистре ax, находятся в дипазоне от 00h до 51h. Эту команду можно применять и для преобразования двоичного числа из регистра ax (в диапазоне от 0 до 63h) в его десятичный эквивалент(соответственно, из диапазона от 0 до 9910).
Пример 1. Умножить десятичное число 8 на 9. Подготовить результат к выводу на экран.
mov ah,08h ;ah=08h mov al,09h ;al= 09h mul ah ;al=48h — двоичный эквивалент 72 aam ;ah=07h,al=02h or ax,3030h ;ax=3732h — ASCII-представление числа 72 |
Пример 2. Преобразовать двоичное число 60h в эквивалентное десятичное число.
;поместим число 60h в регистр ax mov ax,60h ;ax=60h aаm ;ax=0906h — получили десятичный эквивалент числа 60h or ax,3030h ;символьный эквивалент, можно выводить на экран |
См. также: урок 8, приложение 7 и команды , , , ,