Системное программное обеспечение. Рощин А.В. - 22 стр.

UptoLike

Составители: 

22
IMUL (операнд-источник)
Команда IMUL (целочисленное умножение) выполняет знаковое
умножение операнда-источника и содержимого аккумулятора. Если
операнд-источник однобайтовый, осуществляется умножение на
содержимое регистра AL, а двухбайтовый результат возвращается в
регистрах AH и AL. Если операнд-источник двухбайтовый,
осуществляется умножение на содержимое регистра AX, а
четырехбайтовый результат возвращается в паре регистров DX и AX.
Операнды рассматриваются как беззнаковые
двоичные числа. Если
старшая половина результата (регистр AH при однобайтовом умножении и
DX при двухбайтовом умножении) взводятся флаги CF и OF, в противном
случае эти флаги сбрасываются. Если после выполнения умножения
взведены флаги CF и OF, это говорит о наличии значащих цифр результата
в регистре AH или DX. Содержимое флагов AF, PF, SF и ZF после
выполнения команды целочисленного умножения неопределено.
ААМ
Команда ААМ (коррекция умножения неупакованных десятичных
чисел) приводит результат предшествующего умножения к двум
правильным неупакованным десятичным цифрам. Для получения
правильного результата после выполнения коррекции старшие полубайты
умножаемых операндов должны быть нулевыми, а младшие должны быть
правильными двоично-десятичными цифрами.
Команда ААМ воздействует на флаги PF, SF и ZF. Содержимое
флагов AF, CF и OF после выполнения
команды ААМ неопределено.
Деление
DIV (операнд-источник)
Команда DIV (деление) выполняет беззнаковое деление содержимого
аккумулятора (и его расширения) на операнд-источник. Если операнд-
источник однобайтовый, осуществляется деление двухбайтового делимого,
расположенного в регистрах AH и AL. Однобайтовое частное получается в
регистре AL, а однобайтовый остатокв регистре AH. Если операнд-
источник двухбайтовый, осуществляется деление четырехбайтового
делимого
, расположенного в регистрах DX и AX. Двухбайтовое частное
при этом получается в регистре AX, а двухбайтовый остатокв регистре
DX. Если значение частного превышает разрядность аккумулятора (0FFh
для однобайтового деления и 0FFFFh – для двухбайтового) или
выполняется попытка деления на нуль, генерируется прерывание типа 0, а
частное и остаток остаются неопределенными. Содержимое флагов AF, CF,
OF, PF, SF и ZF после выполнения команды DIV
неопределено.
                                  22



     IMUL (операнд-источник)
      Команда IMUL (целочисленное умножение) выполняет знаковое
умножение операнда-источника и содержимого аккумулятора. Если
операнд-источник однобайтовый, осуществляется умножение на
содержимое регистра AL, а двухбайтовый результат возвращается в
регистрах AH и AL. Если операнд-источник двухбайтовый,
осуществляется умножение на содержимое регистра AX, а
четырехбайтовый результат возвращается в паре регистров DX и AX.
Операнды рассматриваются как беззнаковые двоичные числа. Если
старшая половина результата (регистр AH при однобайтовом умножении и
DX при двухбайтовом умножении) взводятся флаги CF и OF, в противном
случае эти флаги сбрасываются. Если после выполнения умножения
взведены флаги CF и OF, это говорит о наличии значащих цифр результата
в регистре AH или DX. Содержимое флагов AF, PF, SF и ZF после
выполнения команды целочисленного умножения неопределено.
     ААМ
     Команда ААМ (коррекция умножения неупакованных десятичных
чисел) приводит результат предшествующего умножения к двум
правильным неупакованным десятичным цифрам. Для получения
правильного результата после выполнения коррекции старшие полубайты
умножаемых операндов должны быть нулевыми, а младшие должны быть
правильными двоично-десятичными цифрами.
     Команда ААМ воздействует на флаги PF, SF и ZF. Содержимое
флагов AF, CF и OF после выполнения команды ААМ неопределено.

     Деление

     DIV (операнд-источник)
     Команда DIV (деление) выполняет беззнаковое деление содержимого
аккумулятора (и его расширения) на операнд-источник. Если операнд-
источник однобайтовый, осуществляется деление двухбайтового делимого,
расположенного в регистрах AH и AL. Однобайтовое частное получается в
регистре AL, а однобайтовый остаток – в регистре AH. Если операнд-
источник двухбайтовый, осуществляется деление четырехбайтового
делимого, расположенного в регистрах DX и AX. Двухбайтовое частное
при этом получается в регистре AX, а двухбайтовый остаток – в регистре
DX. Если значение частного превышает разрядность аккумулятора (0FFh
для однобайтового деления и 0FFFFh – для двухбайтового) или
выполняется попытка деления на нуль, генерируется прерывание типа 0, а
частное и остаток остаются неопределенными. Содержимое флагов AF, CF,
OF, PF, SF и ZF после выполнения команды DIV неопределено.