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

📄 dpjjx16.htm

📁 _计算实用教程Visual C++6.0实用教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>单片机第十四课 </TITLE>
</HEAD>
<BODY background="../back.jpg">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
<P ALIGN="JUSTIFY">单片机第十三课</P>
<P ALIGN="JUSTIFY">条件转移指令:</P>
<P ALIGN="JUSTIFY">条件转移指令是指在满足一定条件时进行相对转移。</P>
</FONT>
<OL>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <P ALIGN="JUSTIFY">
  </font>
  <LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>判</font><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>内容是否为</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>转移指令</font></LI>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
  <p></P>
  </FONT><FONT SIZE=3>
  <P ALIGN="JUSTIFY">JZ&#9;&#9;rel</P>
  <P ALIGN="JUSTIFY">JNZ&#9;&#9;rel</P>
  </FONT>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>第一指令的功能是:如果</font><FONT SIZE=3>(A)=0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,则转移,否则顺序执行(执行本指令的下一条指令)。转移到什么地方去呢?如果按照传统的方法,就要算偏移量,很麻烦,好在现在我们可以借助于机器汇编了。因此这第指令我们可以这样理解:</FONT><FONT SIZE=3>JZ 
    </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>标号。即转移到标号处。下面举一例说明:</font></P>
  <FONT SIZE=3>
  <P ALIGN="JUSTIFY">MOV&#9;A,R0</P>
  <P ALIGN="JUSTIFY">JZ&#9;&#9;L1</P>
  <P ALIGN="JUSTIFY">MOV&#9;R1,#00H</P>
  <P ALIGN="JUSTIFY">AJMP&#9;L2</P>
  <P ALIGN="JUSTIFY">L1:&#9;MOV&#9;R1,#0FFH</P>
  <P ALIGN="JUSTIFY">L2: SJMP&#9;L2</P>
  </FONT>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&#9;</font><FONT SIZE=3>END</font></P>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在执行上面这段程序前如果</font><FONT SIZE=3>R0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值是</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的话,就转移到</FONT><FONT SIZE=3>L1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>执行,因此最终的执行结果是</FONT><FONT SIZE=3>R1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值为</FONT><FONT SIZE=3>0FFH</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。而如果</FONT><FONT SIZE=3>R0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值不等于</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,则顺序执行,也就是执行</FONT><FONT SIZE=3> 
    MOV R1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#00H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>指令。最终的执行结果是</FONT><FONT SIZE=3>R1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值等于</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</font></P>
  <P ALIGN="JUSTIFY"> <FONT FACE="宋体" LANG="ZH-CN" SIZE=3>第一条指令的功能清楚了,第二条当然就好理解了,如果</font><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值不等于</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,就转移。把上面的那个例子中的</FONT><FONT SIZE=3>JZ</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>改成</FONT><FONT SIZE=3>JNZ</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>试试吧,看看程序执行的结果是什么</FONT><FONT SIZE=3>?</font></P>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
  <P ALIGN="JUSTIFY">
  <LI>比较转移指令</LI>
  <p></P>
  </FONT><FONT SIZE=3>
  <P ALIGN="JUSTIFY">CJNE&#9;&#9;A,#data,rel </P>
  <P ALIGN="JUSTIFY">CJNE&#9;&#9;A,direct,rel</P>
  <P ALIGN="JUSTIFY">CJNE&#9;&#9;Rn,#data,rel</P>
  <P ALIGN="JUSTIFY">CJNE&#9;&#9;@Ri,#data,rel</P>
  </FONT>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>第一条指令的功能是将</font><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值和立即数</FONT><FONT SIZE=3>data</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>比较,如果两者相等,就顺序执行(执行本指令的下一条指令),如果不相等,就转移,同样地,我们可以将</FONT><FONT SIZE=3>rel</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>理解成标号,即:</FONT><FONT SIZE=3>CJNE&#9;A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#data,</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>标号。这样利用这条指令,我们就可以判断两数是否相等,这在很多场合是非常有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>还会反映出哪个数大,哪个数小,这是用</FONT><FONT SIZE=3>CY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>(进位位)来实现的。如果前面的数(</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的)大,则</FONT><FONT SIZE=3>CY=0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,否则</FONT><FONT SIZE=3>CY=1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,因此在程序转移后再次利用</FONT><FONT SIZE=3>CY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>就可判断出</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的数比</FONT><FONT SIZE=3>data</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>大还是小了。</font></P>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <P ALIGN="JUSTIFY">例:</P>
  </FONT>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&#9;</font><FONT SIZE=3>MOV&#9;&#9;A,R0</font></P>
  <P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&#9;</font><FONT SIZE=3>CJNE&#9;&#9;A,#10H,L1</font></P>
  <FONT SIZE=3> 

⌨️ 快捷键说明

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