-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||F6 /4 MUL AL,r/m8 13/18,13/18 Умножение без знака || (AX <- AL * байт r/m) ||F7 /4 MUL AX,r/m16 13/26,13/26 Умножение без знака || (DX:AX <- AX * слово r/m) ||F7 /4 MUL EAX,r/m32 13/42,13/42 Умножение без знака || (EDX:EAX <- EAX * || двойное слово r/m) |----------------------------------------------------------------- Примечания: Процессор i486 использует алгоритм умножения типа "early-out".Фактическое число тактовых циклов зависит от позиции наиболее значащегобита в оптимизируемом множителе. Оптимизация выполняется как дляположительных, так и для отрицательных значений. Вследствие данногоалгоритма даются минимальные и максимальные количества тактовых циклов.Для вычисления фактического числа тактовых циклов используется следующаяформула: Фактическое число тактовых циклов = если m <> 0 то max(наименьшее целоечисло, большее (log |m|)) + 6 циклов. 2 Фактическое число тактовых циклов= если m = 0 то 9 циклов. (где m это множитель) Работа команды IF операция байтового размераTHEN AX <- AL * r/m8ELSE (* Операция размером в слово или двойное слово *) IF OperandSize = 16 THEN DX:AX <- AX * r/m16 ELSE (* OperandSize = 32 *) EDX:EAX <- EAX * r/m32 FI;FI; ОписаниеКоманда IMUL выполняет умножение без знака. Ее действие зависит от размераоперандов следующим образом: - Операнд размером в байт умножается на значение AL; результат помещаетсяв регистр AX. Если значение AH равно 0, то флаги CF и OF очищаются; впротивном случае они установлены.- Операнд размером в слово умножается на значение AX; результат помещаетсяв пару регистров DX:AX. Регистр DX содержит при этом старшие 16 битовпроизведения. Если значение DX равно 0, то флаги CF и OF очищаются; впротивном случае они установлены.- Операнд размером в двойное слово умножается на значение EAX; результатпомещается в пару регистров EDX:EAX. Регистр EDX содержит при этом старшие32 бита произведения. Если значение EDX равно 0, то флаги CF и OFочищаются; в противном случае они установлены. Изменяемые флагиЕсли старшая половина результата равна 0, то флаги OF и CF очищаются; впротивном случае они установлены; флаги SF, ZF, AF, PF и CF неопределены. Исключения защищенного режима#GP(0) в случае недопустимого исполнительного адреса операнда памяти всегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса всегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC дляневыравненной ссылки к памяти при текущем уровне привилегированности,равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.