📄 单片机指令(四).htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0047)http://www.onestudy.net/download/elec/dpj11.htm -->
<!-- saved from url=(0048)http://www.21icsearch.com/pmcu/dpjjx/dpjjx13.htm --><HTML><HEAD><TITLE>单片机指令(四)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY bgColor=#cccccc background=""><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>单片机指令(四)算术运算类指令</P></FONT>
<OL><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>
<LI>不带进位位的加法指令
<P></P></FONT>
<P align=justify><FONT size=3>ADD </FONT><FONT lang=ZH-CN face=宋体
size=3></FONT><FONT size=3>A,#DATA ;</FONT><FONT lang=ZH-CN face=宋体
size=3>例:</FONT><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>#10H</FONT></P>
<P align=justify><FONT size=3>ADD A,direct ;</FONT><FONT lang=ZH-CN face=宋体
size=3>例:</FONT><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>10H</FONT></P>
<P align=justify><FONT size=3>ADD A,Rn ;</FONT><FONT lang=ZH-CN face=宋体
size=3>例:</FONT><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>R7</FONT></P>
<P align=justify><FONT size=3>ADD A,@Ri ;</FONT><FONT lang=ZH-CN face=宋体
size=3>例:</FONT><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>@R0</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>用途:将</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体
size=3>中的值与其后面的值相加,最终结果否是回到</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN
face=宋体 size=3>中。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>例:</FONT><FONT size=3>MOV
A</FONT><FONT lang=ZH-CN face=宋体 size=3>,</FONT><FONT size=3>#30H</FONT></P>
<P align=justify><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>#10H</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>则执行完本条指令后,</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值为</FONT><FONT
size=3>40H</FONT><FONT lang=ZH-CN face=宋体 size=3>。</FONT></P><FONT lang=ZH-CN
face=宋体 size=3>
<P align=justify>下面的题目自行练习</P></FONT>
<P align=justify><FONT size=3>MOV 34H</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>#10H</FONT></P>
<P align=justify><FONT size=3>MOV R0</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>#13H</FONT></P>
<P align=justify><FONT size=3>MOV A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>34H</FONT></P>
<P align=justify><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>R0</FONT></P>
<P align=justify><FONT size=3>MOV R1</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>#34H</FONT></P>
<P align=justify><FONT size=3>ADD A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>@R1</FONT></P><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify></P>
<LI>带进位位的加法指令
<P></P></FONT>
<P align=justify><FONT size=3>ADDC A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>Rn</FONT></P><FONT size=3>
<P align=justify>ADDC A,direct</P>
<P align=justify>ADDC A,@Ri</P>
<P align=justify>ADDC A,#data</P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>用途:将</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值和其后面的值相加,并且加上进位位</FONT><FONT
size=3>C</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>说明:由于</FONT><FONT
size=3>51</FONT><FONT lang=ZH-CN face=宋体 size=3>单片机是一种</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体 size=3>位机,所以只能做</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体 size=3>位的数学运算,但</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体 size=3>位运算的范围只有</FONT><FONT
size=3>0-255</FONT><FONT lang=ZH-CN face=宋体
size=3>,这在实际工作中是不够的,因此就要进行扩展,一般是将</FONT><FONT size=3>2</FONT><FONT lang=ZH-CN
face=宋体 size=3>个</FONT><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位的数学运算合起来,成为一个</FONT><FONT size=3>16</FONT><FONT lang=ZH-CN face=宋体
size=3>位的运算,这样,可以表达的数的范围就可以达到</FONT><FONT size=3>0-65535</FONT><FONT
lang=ZH-CN face=宋体 size=3>。如何合并呢?其实很简单,让我们看一个</FONT><FONT
size=3>10</FONT><FONT lang=ZH-CN face=宋体 size=3>进制数的例子:</FONT></P>
<P align=justify><FONT size=3>66+78</FONT><FONT lang=ZH-CN face=宋体
size=3>。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体
size=3>这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做</FONT><FONT size=3>6+8</FONT><FONT
lang=ZH-CN face=宋体 size=3>(低位),然后再做</FONT><FONT size=3>6+7</FONT><FONT
lang=ZH-CN face=宋体
size=3>,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范置(</FONT><FONT
size=3>0-9</FONT><FONT lang=ZH-CN face=宋体 size=3>)。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体
size=3>在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法是将这一点加进去。那么计算机中做</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋体 size=3>位加法时同样如此,先做低</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位的,如果两数相加产生了进位,也要“点一下”做个标记,这个标记就是进位位</FONT><FONT size=3>C</FONT><FONT
lang=ZH-CN face=宋体 size=3>,在</FONT><FONT size=3>PSW</FONT><FONT lang=ZH-CN
face=宋体 size=3>中。在进行高位加法是将这个</FONT><FONT size=3>C</FONT><FONT lang=ZH-CN
face=宋体 size=3>加进去。例:</FONT><FONT size=3>1067H+10A0H</FONT><FONT lang=ZH-CN
face=宋体 size=3>,先做</FONT><FONT size=3>67H+A0H=107H</FONT><FONT lang=ZH-CN
face=宋体 size=3>,而</FONT><FONT size=3>107H</FONT><FONT lang=ZH-CN face=宋体
size=3>显然超过了</FONT><FONT size=3>0FFH</FONT><FONT lang=ZH-CN face=宋体
size=3>,因此最终保存在</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN face=宋体
size=3>中的是</FONT><FONT size=3>7</FONT><FONT lang=ZH-CN face=宋体
size=3>,而</FONT><FONT size=3>1</FONT><FONT lang=ZH-CN face=宋体
size=3>则到了</FONT><FONT size=3>PSW</FONT><FONT lang=ZH-CN face=宋体
size=3>中的</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体
size=3>位了,换言之,</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体
size=3>就相当于是</FONT><FONT size=3>100H</FONT><FONT lang=ZH-CN face=宋体
size=3>。然后再做</FONT><FONT size=3>10H+10H+CY</FONT><FONT lang=ZH-CN face=宋体
size=3>,结果是</FONT><FONT size=3>21H</FONT><FONT lang=ZH-CN face=宋体
size=3>,所以最终的结果是</FONT><FONT size=3>2107H</FONT><FONT lang=ZH-CN face=宋体
size=3>。</FONT></P><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify></P>
<LI>带借位的减法指令
<P></P></FONT>
<P align=justify><FONT size=3>SUBB A</FONT><FONT lang=ZH-CN face=宋体
size=3>,</FONT><FONT size=3>Rn</FONT></P><FONT size=3>
<P align=justify>SUBB A,direct</P>
<P align=justify>SUBB A,@Ri</P>
<P align=justify>SUBB A,#data</P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>设(每个</FONT><FONT
size=3>H</FONT><FONT lang=ZH-CN face=宋体 size=3>,(</FONT><FONT
size=3>R2</FONT><FONT lang=ZH-CN face=宋体 size=3>)</FONT><FONT
size=3>=55H</FONT><FONT lang=ZH-CN face=宋体 size=3>,</FONT><FONT
size=3>CY=1</FONT><FONT lang=ZH-CN face=宋体 size=3>,执行指令</FONT><FONT
size=3>SUBB A</FONT><FONT lang=ZH-CN face=宋体 size=3>,</FONT><FONT
size=3>R2</FONT><FONT lang=ZH-CN face=宋体 size=3>之后,</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值为</FONT><FONT
size=3>73H</FONT><FONT lang=ZH-CN face=宋体 size=3>。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体
size=3>说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将</FONT><FONT
size=3>CY</FONT><FONT lang=ZH-CN face=宋体 size=3>清零即可。</FONT></P><FONT
lang=ZH-CN face=宋体 size=3>
<P align=justify></P>
<LI>乘法指令
<P></P></FONT><FONT size=3>
<P align=justify>MUL AB </P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>此指令的功能是将</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>和</FONT><FONT
size=3>B</FONT><FONT lang=ZH-CN face=宋体 size=3>中的两个</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位无符号数相乘,两数相乘结果一般比较大,因此最终结果用</FONT><FONT size=3>1</FONT><FONT lang=ZH-CN
face=宋体 size=3>个</FONT><FONT size=3>16</FONT><FONT lang=ZH-CN face=宋体
size=3>位数来表达,其中高</FONT><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位放在</FONT><FONT size=3>B</FONT><FONT lang=ZH-CN face=宋体
size=3>中,低</FONT><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位放在</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN face=宋体
size=3>中。在乘积大于</FONT><FONT size=3>FFFFFH</FONT><FONT lang=ZH-CN face=宋体
size=3>(</FONT><FONT size=3>65535</FONT><FONT lang=ZH-CN face=宋体
size=3>)时,</FONT><FONT size=3>0V</FONT><FONT lang=ZH-CN face=宋体
size=3>置</FONT><FONT size=3>1</FONT><FONT lang=ZH-CN face=宋体
size=3>(溢出),否则</FONT><FONT size=3>OV</FONT><FONT lang=ZH-CN face=宋体
size=3>为</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN face=宋体
size=3>,而</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体
size=3>总是</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN face=宋体
size=3>。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>例:(</FONT><FONT
size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>)</FONT><FONT
size=3>=4EH</FONT><FONT lang=ZH-CN face=宋体 size=3>,(</FONT><FONT
size=3>B</FONT><FONT lang=ZH-CN face=宋体 size=3>)</FONT><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -