Инструкция AAM


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее...

Инструкция AAM в Ассемблере исправляет BCD-значение после умножения. Синтаксис:

AAM

Команда AAM не имеет операндов.

Флаги ZF, SF, PF могут быть изменены в зависимости от итога выполнения команды. Остальные флаги имеют неопределённое состояние.

Инструкция AAM обычно используется после команды MUL и выполняет следующие действия:

  1. AH = AL / 10 (в регистр АН записывается итог деления значения в AL на число 10).
  2. AL = остаток от деления.

Машинный код команды AAM - D4h 0Ah. Где 0Ah - это основание системы счисления, по отношению к которой выполняется коррекция. Этот байт можно заменить на любое другое число (кроме нуля, как это сделать - можно посмотреть здесь). По умолчанию в этом байте значение 10, но в случае замены на другое число инструкция AAM преобразует значение АХ в две неупакованные цифры любой системы счисления.

Это работает на всех процессорах Интел (начиная с 8086), но появляется в документации только с процессора Пентиум.

По сути действие, которое выполняет команда ААМ - это целочисленное деление значения AL на число, которое находится во втором байте команды (по умолчанию это число равно 0Ah). После деления частное (итог деления) помещается в AH, а остаток - в AL. Поэтому команду ААМ часто используют для быстрого деления в алгоритмах с высокой степенью оптимизации.

Пример программы, где используется инструкция AAM, приведён ниже:

  .model  tiny
  .code
  ORG     100h
	
start:	

  MOV AL, 05h   ;Число 1    
  MOV BL, 07h   ;Число 2
  MUL BL        ;AX = AL * BL = 35 = 0023h
  
  AAM           ;Теперь AX = 0305h
  
  RET

  END	start

Напоследок, как всегда, о происхождении аббревиатуры AAM.

AAM - это ASCII Adjust After Multiplication - ASCII-коррекция после умножения.

ПРИМЕЧАНИЕ
Умножать числа в формате ASCII нельзя. Поэтому, если требуется умножить числе в ASCII-формате (или BCD), то сначала их надо преобразовать в обычные числа, выполнить умножение, а затем (если необходимо), перевести обратно в формат BCD с помощью команды AAM.


Первые шаги в программирование Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su