Assembler - язык неограниченных возможностей


Двоичная арифметика - часть 2


/p>

Эта команда во всем аналогична SUB, кроме того, что она вычитает из приемника значение источника и дополнительно вычитает значение флага CF. Так, можно использовать эту команду для вычитания 64-битных чисел в EDX:EAX и ЕВХ:ЕСХ аналогично ADD/ADC:

sub eax,ecx sbb edx,ebx

Если при вычитании младших двойных слов произошел заем, то он будет учтен при вычитании старших.

  • Команда:
  • IMUL источник
    IMUL приемник, источник
    IMUL приемник, источник1, источник2
  • Назначение:
  • Умножение чисел со знаком
  • Процессор:
  • 8086
    80386
    80186

    Эта команда имеет три формы, различающиеся числом операндов:

    1. IMUL источник: источник (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда), и результат располагается в АХ, DX:AX или EDX:EAX соответственно.
    2. IMUL приемник,источник: источник (число, регистр или переменная) умножается на приемник (регистр), и результат заносится в приемник.
    3. IMUL приемник,источник1,источник2: источник 1 (регистр или переменная) умножается на источник 2 (число), и результат заносится в приемник (регистр).

    Во всех трех вариантах считается, что результат может занимать в два раза больше места, чем размер источника. В первом случае приемник автоматически оказывается достаточно большим, но во втором и третьем случаях могут произойти переполнение и потеря старших бит результата. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в приемник (во втором и третьем случаях) или в младшую половину приемника (в первом случае).

    Значения флагов SF, ZF, AF и PF после команды IMUL не определены.

  • Команда:
  • MUL источник
  • Назначение:
  • Умножение чисел без знака
  • Процессор:
  • 8086

    Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Если старшая половина результата (АН, DX, EDX) содержит только нули (результат целиком поместился в младшую половину), флаги CF и OF устанавливаются в 0, иначе — в 1. Значение остальных флагов (SF, ZF, AF и PF) не определено.

  • Команда:
  • IDIV источник
  • Назначение:
  • Целочисленное деление со знаком
  • Процессор:
  • 8086
    <


    Начало  Назад  Вперед