⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loop.htm

📁 Programmer s Reference Manual is an improtant book on Intel processor architecture and programming.
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><HEAD><TITLE>80386 Programmer's Reference Manual -- Opcode LOOP</TITLE></HEAD><BODY><B>up:</B> <A HREF="c17.htm">Chapter 17 -- 80386 Instruction Set</A><BR><B>prev:</B><A HREF="LODS.htm"> LODS/LODSB/LODSW/LODSD Load String Operand</A><BR><B>next:</B><A HREF="LSL.htm"> LSL Load Segment Limit</A><P><HR><P><H1>LOOP/LOOPcond -- Loop Control with CX Counter</H1><PRE>Opcode   Instruction  Clocks  DescriptionE2  cb   LOOP rel8    11+m    DEC count; jump short if count <> 0E1  cb   LOOPE rel8   11+m    DEC count; jump short if count <> 0 and ZF=1E1  cb   LOOPZ rel8   11+m    DEC count; jump short if count <> 0 and ZF=1E0  cb   LOOPNE rel8  11+m    DEC count; jump short if count <> 0 and ZF=0E0  cb   LOOPNZ rel8  11+m    DEC count; jump short if count <> 0 and ZF=0</PRE><H2>Operation</H2><PRE>IF AddressSize = 16 THEN CountReg is CX ELSE CountReg is ECX; FI;CountReg := CountReg - 1;IF instruction <> LOOPTHEN   IF (instruction = LOOPE) OR (instruction = LOOPZ)   THEN BranchCond := (ZF = 1) AND (CountReg <> 0);   FI;   IF (instruction = LOOPNE) OR (instruction = LOOPNZ)   THEN BranchCond := (ZF = 0) AND (CountReg <> 0);   FI;FI;IF BranchCondTHEN   IF OperandSize = 16   THEN      IP := IP + SignExtend(rel8);   ELSE (* OperandSize = 32 *)      EIP := EIP + SignExtend(rel8);   FI;FI;</PRE><H2>Description</H2>LOOP decrements the count register without changing any of the flags.Conditions are then checked for the form of LOOP being used. If theconditions are met, a short jump is made to the label given by the operandto LOOP. If the address-size attribute is 16 bits, the CX register is usedas the count register; otherwise the ECX register is used. The operandof LOOP must be in the range from 128 (decimal) bytes before theinstruction to 127 bytes ahead of the instruction.<P>The LOOP instructions provide iteration control and combine loop indexmanagement with conditional branching. Use the LOOP instruction byloading an unsigned iteration count into the count register, then code theLOOP at the end of a series of instructions to be iterated. Thedestination of LOOP is a label that points to the beginning of theiteration.<H2>Flags Affected</H2>None<H2>Protected Mode Exceptions</H2>#GP(0) if the offset jumped to is beyond the limits of the current codesegment<H2>Real Address Mode Exceptions</H2>None<H2>Virtual 8086 Mode Exceptions</H2>None<P><HR><P><B>up:</B> <A HREF="c17.htm">Chapter 17 -- 80386 Instruction Set</A><BR><B>prev:</B><A HREF="LODS.htm"> LODS/LODSB/LODSW/LODSD Load String Operand</A><BR><B>next:</B><A HREF="LSL.htm"> LSL Load Segment Limit</A></BODY>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -