Разделы:


Best links:

Арифметические команды

Аналогичным образом, но с вычитанием констант 6 и 60Н осуществляется коррекция результата вычисления в AL по команде DAS.

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

Для коррекции результатов арифметических действий над числами в коде ASCIIиспользуются четыре команды: AAA (коррекция сложения), AAS (коррекция вычитания), ААМ (коррекция умножения) и AAD (коррекция деления).

К группе арифметических операций относятся также две команды, которые осуществляют расширение со знаком 8- и 16-разрядных операндов. Эти команды играют вспомогательную роль при подготовке операнда, используемого в качестве делимого. Поскольку делимое при делении 8-разрядных операндов размещается в 16-разрядном аккумуляторе АХ (а при делении 16-разрядных операндов в 32-разрядном составном регистре DX, АХ), необходимо при подготовке делимого заполнить АН (или DX). Для чисел без знака указанные регистры заполняются нулями. При делении чисел со знаком перед заполнением указанных регистров требуется анализировать знак делимого и заполнить регистр либо нулями, если делимое является положительным, либо единицами, если делимое отрицательное. Для этих целей используются команды CBW (расширение со знаком байта до слова) и CWD(расширение со знаком слова до двойного слова). По команде CBW (CWD) знак AL (или АХ), т. е. самый старший разряд регистра, записывается во все разряды регистра АН (или DX).

предыдущаяследующая