Инструкция 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 нельзя. Поэтому, если требуется умножить числе в ASCCI-формате (или BCD), то сначала их надо преобразовать в обычные числа, выполнить умножение, а затем (если необходимо), перевести обратно в формат BCD с помощью команды AAM.


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

Яндекс.Метрика