何方妖孽 發表於 2021-11-10 16:28:58

汇编语言指令集学习条件转移指令详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>1.根据单个条件标志的设置情况转移</li><li>2. 比较两个无符号数,并根据比较的结果转移</li><li>3. 比较两个带符号数,并根据比较的结果转移</li><li>4.测试CX或ECX的值为0则转移指令</li></ul></div><p>条件转移指令较多,容易混淆,在此记录一下便于日后使用</p>
<p class="maodian"></p><h2>1.根据单个条件标志的设置情况转移</h2>
<table>
    <thead>
      <tr>
            <th align="center">指令</th>
            <th align="center">英文</th>
            <th align="center">含义</th>
            <th align="center">格式</th>
            <th align="center">测试条件</th>
      </tr>
    </thead>
    <tbody>
      <tr>
            <td align="center">JZ/JE</td>
            <td align="center">jump if zero/equal</td>
            <td align="center">结果为零/相等则转移</td>
            <td align="center">JZ/JE OPR</td>
            <td align="center">ZF=1</td>
      </tr>
      <tr>
            <td align="center">JNZ/JNE</td>
            <td align="center">jump if not zero/equal</td>
            <td align="center">结果不为零/不相等则转移</td>
            <td align="center">JNZ/JNE OPR</td>
            <td align="center">ZF=0</td>
      </tr>
      <tr>
            <td align="center">JS</td>
            <td align="center">jump if sign</td>
            <td align="center">结果为负则转移</td>
            <td align="center">JS OPR</td>
            <td align="center">SF=1</td>
      </tr>
      <tr>
            <td align="center">JNS</td>
            <td align="center">jump if not sign</td>
            <td align="center">结果为正则转移</td>
            <td align="center">JNS OPR</td>
            <td align="center">SF=0</td>
      </tr>
      <tr>
            <td align="center">JO</td>
            <td align="center">jump if overflow</td>
            <td align="center">溢出则转移</td>
            <td align="center">JO OPR</td>
            <td align="center">OF=1</td>
      </tr>
      <tr>
            <td align="center">JNO</td>
            <td align="center">jump if not overflow</td>
            <td align="center">不溢出则转移</td>
            <td align="center">JNO OPR</td>
            <td align="center">OF=0</td>
      </tr>
      <tr>
            <td align="center">JP/JPE</td>
            <td align="center">jump if parity/parity even</td>
            <td align="center">奇偶位为1则转移</td>
            <td align="center">JP/JPE OPR</td>
            <td align="center">PF=1</td>
      </tr>
      <tr>
            <td align="center">JNP/JNPE</td>
            <td align="center">jump if not parity/parity even</td>
            <td align="center">奇偶位为0则转移</td>
            <td align="center">JNP/JNPE OPR</td>
            <td align="center">PF=0</td>
      </tr>
      <tr>
            <td align="center">JB/JNAE/JC</td>
            <td align="center">jump if below/not above、not equal/carry</td>
            <td align="center">低于/不高于或不等于/进位为1则转移</td>
            <td align="center">JB/JNAE/JC OPR</td>
            <td align="center">CF=1</td>
      </tr>
      <tr>
            <td align="center">JNB/JAE/JNC</td>
            <td align="center">jump if not below/ above、equal/not carry</td>
            <td align="center">不低于/高于或等于/进位为零则转移</td>
            <td align="center">JNB/JAE/JNC OPR</td>
            <td align="center">CF=0</td>
      </tr>
      <tr>
            <td align="center">适用于测试某</td>
            <td align="center">一次运算的结果并根据其</td>
            <td align="center">不同特征产生程序分支</td>
            <td align="center">不同的处理的</td>
            <td align="center">情况</td>
      </tr>
    </tbody>
</table>
<p class="maodian"></p><h2>2. 比较两个无符号数,并根据比较的结果转移</h2>
<table>
    <thead>
      <tr>
            <th align="center">指令</th>
            <th align="center">英文</th>
            <th align="center">含义</th>
            <th align="center">格式</th>
            <th align="center">测试条件</th>
            <th align="center">等价于</th>
      </tr>
    </thead>
    <tbody>
      <tr>
            <td align="center">JB/JNAE/JC</td>
            <td align="center">jump if below/not above、not equal/carry</td>
            <td align="center">低于/不高于或不等于/进位为1则转移</td>
            <td align="center">JB/JNAE/JC OPR</td>
            <td align="center">CF=1</td>
            <td align="center">&lt;</td>
      </tr>
      <tr>
            <td align="center">JNB/JAE/JNC</td>
            <td align="center">jump if not below/ above、equal/not carry</td>
            <td align="center">不低于/高于或等于/进位为零则转移</td>
            <td align="center">JNB/JAE/JNC OPR</td>
            <td align="center">CF=0</td>
            <td align="center">≥</td>
      </tr>
      <tr>
            <td align="center">JBE/JNA</td>
            <td align="center">jump if below/equal、not above</td>
            <td align="center">低于/等于、不高于则转移</td>
            <td align="center">JBE/JNA OPR</td>
            <td align="center">CF并ZF=1</td>
            <td align="center">≤</td>
      </tr>
      <tr>
            <td align="center">JNBE/JA</td>
            <td align="center">jump if not below/not equal、above</td>
            <td align="center">不低于/不等于、高于则转移</td>
            <td align="center">JNBE/JA OPR</td>
            <td align="center">CF并ZF=0</td>
            <td align="center">&gt;</td>
      </tr>
    </tbody>
</table>
<p class="maodian"></p><h2>3. 比较两个带符号数,并根据比较的结果转移</h2>
<table>
    <thead>
      <tr>
            <th align="center">指令</th>
            <th align="center">英文</th>
            <th align="center">含义</th>
            <th align="center">格式</th>
            <th align="center">测试条件</th>
            <th align="center">等价于</th>
      </tr>
    </thead>
    <tbody>
      <tr>
            <td align="center">JL/JNGE</td>
            <td align="center">jump if less、not greater/equal</td>
            <td align="center">小于、不大于/不等于则转移</td>
            <td align="center">JL/JNGE OPR</td>
            <td align="center">SF异或CF=1</td>
            <td align="center">&lt;</td>
      </tr>
      <tr>
            <td align="center">JNL/JGE</td>
            <td align="center">jump if not less、greater/equal</td>
            <td align="center">不小于、大于/等于则转移</td>
            <td align="center">JNL/JGE OPR</td>
            <td align="center">SF异或CF=0</td>
            <td align="center">≥</td>
      </tr>
      <tr>
            <td align="center">JLE/JNG</td>
            <td align="center">jump if less/equal、not greater</td>
            <td align="center">小于/等于、不大于则转移</td>
            <td align="center">JLE/JNG OPR</td>
            <td align="center">(SF异或CF)并ZF=1</td>
            <td align="center">≤</td>
      </tr>
      <tr>
            <td align="center">JNLE/JG</td>
            <td align="center">jump if not less/not equal、 greater</td>
            <td align="center">不小于/不等于、大于则转移</td>
            <td align="center">JNLE/JG OPR</td>
            <td align="center">(SF异或CF)并ZF=0</td>
            <td align="center">&gt;</td>
      </tr>
    </tbody>
</table>
<p class="maodian"></p><h2>4.测试CX或ECX的值为0则转移指令</h2>
<blockquote>
<p>1. LCXZ (jump if CX register is zero) CX寄存器的内容为零则转移 <br />
  格式:JCXZ OPR <br />
  测试条件:(CX)=0</p>
<p>2. LECXZ (jump if ECX register is zero) ECX寄存器的内容为零则转移 <br />
  格式:JECXZ OPR  (386及其后继机型可用) <br />
  测试条件:(ECX)=0 <code><br />
</code></p>
</blockquote>
<p>以上就是汇编语言指令集学习条件转移指令详解的详细内容,更多关于汇编语言条件转移指令的资料请关注琼殿技术社区其它相关文章!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>图文详解通俗易懂的汇编语言寄存器</li><li>汇编语言显示功能实现教程详解</li><li>汇编语言之实现发出各种声音</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编语言指令集学习条件转移指令详解