-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||F6 /7 IDIV r/m8 19/20 Деление со знаком AX на байт r/m || (AL=частное, AH=остаток) ||F7 /7 IDIV AX,r/m16 27/28 Деление со знаком DX:AX на слово || EA (AX=частное, DX = остаток) ||F7 /7 DIV EAX,r/m32 43/44 Деление со знаком EDX:EAX на || двойное слово r/m || (EAX=частное,EDX = остаток) |----------------------------------------------------------------- Работа команды врем <- делимое / делитель;IF врем не помещается в частномTHEN Прерывание 0;ELSE частное <- врем; остаток <- делимое MOD (r/m);FI; Замечание: деление со знаком. Делитель задается в операнде r/m. Делимое,частное и остаток используют неявно задаваемые регистры. См. таблицу впараграфе "Описание". ОписаниеКоманда DIV выполняет деление со знаком. Делимое, частное и остаток неявнораспределены фиксированным регистрам. Только делитель задается как явныйоперанд r/m (регистр/память). Тип делителя определяет используемыерегистры следующим образом: ----------------------------------------------------------------- Размер Делитель Частное Остаток Делимое----------------------------------------------------------------- байт r/m8 AL AH AX слово r/m16 AX DX DX:AX двойное слово r/m32 EAX EDX EDX:EAX----------------------------------------------------------------- Если полученное частное слишком велико и не может поместиться в операнденазначения, либо при делении на 0, генерируется прерывание 0. Нецелыечастные усекаются до 0. Остаток имеет тот же знак, что и делимое, а егоабсолютное значение всегда меньше абсолютного значения делителя. Изменяемые флагиФлаги OF, SF, ZF, AF, PF, CF не определены. Исключения защищенного режимаПрерывание 0, если частное слишком велико для назначенного для негорегистра (AL или AX), или если делитель равен 0; #GP(0) в случаенедопустимого исполнительного адреса операнда памяти в сегментах CS, DS,ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(кодсбоя) в случае страничного сбоя; # AC для невыравненной ссылки к памятипри текущем уровне привилегированности, равном 3. Исключения режима реальных адресовПрерывание 0, если частное слишком велико для назначенного для негорегистра (AL или AX), или если делитель равен 0; Прерывание 13, есликакая-либо часть операнда лежит вне пространства исполнительных адресов от0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.