-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||E2 cb LOOP rel8 2,6 DEC счетчика, короткий переход|| если счетчик <> 0 ||E1 cb LOOPE rel8 9,6 DEC счетчика, короткий переход|| если счетчик <> 0 и ZF = 1 ||E1 cb LOOPZ rel8 9,6 DEC счетчика, короткий переход|| если счетчик <> 0 и ZF = 1 ||E0 cb LOOPNE rel8 9,6 DEC счетчика, короткий переход|| если счетчик <> 0 и ZF = 0 ||E0 cb LOOPNZ rel8 9,6 DEC счетчика, короткий переход|| если счетчик <> 0 и ZF = 0 |----------------------------------------------------------------- Работа команды IF AddrSize = 16 THEN CountReg это CX ELSE CountReg это ECX; FI;CountReg <- CountReg - 1; IF команда <> LOOPTHEN IF (команда = LOOPE) OR (команда = LOOPZ) THEN BranchCond <- (ZF = 1) AND (CountReg <> 0); FI; IF (команда = LOOPNE) OR (команда = LOOPNZ) THEN BranchCond <- (ZF = 0) AND (CountReg <> 0); FI;FI; IF BranchCond (* Условие перехода *)THEN IF OperandSize = 16 THEN IP <- IP + SignExtend(rel8); ELSE (* OperandSize = 32 *) EIP <- EIP + SignExtend(rel8); FI;FI; ОписаниеКоманда LOOP декрементирует счетный регистр без изменения любого изфлагов. Затем для используемой формы команды LOOP проверяются условия.Если условия удовлетворяются, то выполняется короткий переход к метке,заданной как операнд команды LOOP. Если атрибут размера адреса равен 16битам, то в качестве регистра-счетчика используется регистр CX; впротивном случае используется регистр ECX. Операнд команды LOOP долженнаходиться в диапазоне от 128 (десятичное) байтов до начала команды до 127байтов после начала команды.Команды LOOP обеспечивают управление итерациями и объединяют организациюиндексирования цикла с условным переходом. Используйте команду LOOP,загружая число итераций без знака в счетный регистр и затем помещаякоманду LOOP в конце последовательности команд, подлежащих итерации.Назначение команды LOOP это метка, указывающая на начало итерации. Изменяемые флагиОтсутствуют Исключения защищенного режима#GP(0), если смещение перехода находится ведет за границы текущегокодового сегмента. Исключения режима реальных адресовОтсутствуют Исключения виртуального режима 8086Отсутствуют ПримечаниеБезусловная команда LOOP выполняется дольше, чем последовательность издвух команд, одна из которых выполняет декремент счетного регистра, авторая - переход, если счетчик не равен нулю.Все команды ветвления преобразуются для выборки в 16-разрядные коды,независимо от адреса перехода или возможности кеширования.