📄 dpjjx16.htm
字号:
<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		rel</P>
<P ALIGN="JUSTIFY">JNZ		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	A,R0</P>
<P ALIGN="JUSTIFY">JZ		L1</P>
<P ALIGN="JUSTIFY">MOV	R1,#00H</P>
<P ALIGN="JUSTIFY">AJMP	L2</P>
<P ALIGN="JUSTIFY">L1:	MOV	R1,#0FFH</P>
<P ALIGN="JUSTIFY">L2: SJMP	L2</P>
</FONT>
<P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</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		A,#data,rel </P>
<P ALIGN="JUSTIFY">CJNE		A,direct,rel</P>
<P ALIGN="JUSTIFY">CJNE		Rn,#data,rel</P>
<P ALIGN="JUSTIFY">CJNE		@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	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>	</font><FONT SIZE=3>MOV		A,R0</font></P>
<P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</font><FONT SIZE=3>CJNE		A,#10H,L1</font></P>
<FONT SIZE=3>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -