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

📄 dpjjx13.htm

📁 单片机入门的好书
💻 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 bgcolor="#CCCCCC" background="../back.jpg">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
<P ALIGN="JUSTIFY">单片机指令(四)算术运算类指令</P>
</FONT><OL><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

<P ALIGN="JUSTIFY"><LI>不带进位位的加法指令</LI><p></P>
</font><P ALIGN="JUSTIFY"><FONT SIZE=3>ADD    </font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&#9;</FONT><FONT SIZE=3>A,#DATA         ;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:</FONT><FONT SIZE=3>ADD    A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#10H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A,direct           ;</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:</FONT><FONT SIZE=3>ADD    A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>10H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A,Rn             ;</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:</FONT><FONT SIZE=3>ADD    A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>R7</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A,@Ri            ;</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:</FONT><FONT SIZE=3>ADD    A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>@R0</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>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中。</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:</font><FONT SIZE=3>MOV    A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#30H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#10H</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>40H</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 SIZE=3>MOV&#9;&#9;34H</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#10H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOV&#9;&#9;R0</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#13H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOV&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>34H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>R0</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOV&#9;&#9;R1</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#34H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>ADD&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>@R1</font></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"><LI>带进位位的加法指令</LI><p></P>
</FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>ADDC&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>Rn</font></P><FONT SIZE=3>
<P ALIGN="JUSTIFY">ADDC&#9;&#9;A,direct</P>
<P ALIGN="JUSTIFY">ADDC&#9;&#9;A,@Ri</P>
<P ALIGN="JUSTIFY">ADDC&#9;&#9;A,#data</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>C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值。</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>说明:由于</font><FONT SIZE=3>51</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单片机是一种</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位机,所以只能做</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位的数学运算,但</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位运算的范围只有</FONT><FONT SIZE=3>0-255</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,这在实际工作中是不够的,因此就要进行扩展,一般是将</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>个</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位的数学运算合起来,成为一个</FONT><FONT SIZE=3>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位的运算,这样,可以表达的数的范围就可以达到</FONT><FONT SIZE=3>0-65535</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。如何合并呢?其实很简单,让我们看一个</FONT><FONT SIZE=3>10</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>进制数的例子:</font></P>
<P ALIGN="JUSTIFY"><FONT SIZE=3>66+78</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做</font><FONT SIZE=3>6+8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>(低位),然后再做</FONT><FONT SIZE=3>6+7</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范置(</FONT><FONT SIZE=3>0-9</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)。</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法是将这一点加进去。那么计算机中做</font><FONT SIZE=3>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位加法时同样如此,先做低</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位的,如果两数相加产生了进位,也要“点一下”做个标记,这个标记就是进位位</FONT><FONT SIZE=3>C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,在</FONT><FONT SIZE=3>PSW</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中。在进行高位加法是将这个</FONT><FONT SIZE=3>C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>加进去。例:</FONT><FONT SIZE=3>1067H+10A0H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,先做</FONT><FONT SIZE=3>67H+A0H=107H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,而</FONT><FONT SIZE=3>107H</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>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的是</FONT><FONT SIZE=3>7</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,而</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>则到了</FONT><FONT SIZE=3>PSW</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>CY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>就相当于是</FONT><FONT SIZE=3>100H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。然后再做</FONT><FONT SIZE=3>10H+10H+CY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,结果是</FONT><FONT SIZE=3>21H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,所以最终的结果是</FONT><FONT SIZE=3>2107H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</font></P><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY"><LI>带借位的减法指令</LI><p></P>
</FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>SUBB&#9;&#9;A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>Rn</font></P><FONT SIZE=3>
<P ALIGN="JUSTIFY">SUBB&#9;&#9;A,direct</P>
<P ALIGN="JUSTIFY">SUBB&#9;&#9;A,@Ri</P>
<P ALIGN="JUSTIFY">SUBB&#9;&#9;A,#data</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>设(每个</font><FONT SIZE=3>H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,(</FONT><FONT SIZE=3>R2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT SIZE=3>=55H</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>SUBB&#9;&#9;A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>R2</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>73H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将</font><FONT SIZE=3>CY</FONT><FONT FACE="宋体" LANG="ZH-CN" 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">MUL&#9;&#9;AB&#9;</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>B</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的两个</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位无符号数相乘,两数相乘结果一般比较大,因此最终结果用</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>个</FONT><FONT SIZE=3>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位数来表达,其中高</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位放在</FONT><FONT SIZE=3>B</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,低</FONT><FONT SIZE=3>8</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>FFFFFH</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>(</FONT><FONT SIZE=3>65535</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)时,</FONT><FONT SIZE=3>0V</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>置</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>(溢出),否则</FONT><FONT SIZE=3>OV</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>CY</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>=4EH</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,(</FONT><FONT SIZE=3>B</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT SIZE=3>=5DH</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,执行指令</font></P>
<P ALIGN="JUSTIFY"><FONT SIZE=3>MUL&#9;&#9;AB</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>后,乘积是</FONT><FONT SIZE=3>1C56H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,所以在</FONT><FONT SIZE=3>B</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中放的是</FONT><FONT SIZE=3>1CH</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>56H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</font></P><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

⌨️ 快捷键说明

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