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

📄 dpjjx15.htm

📁 详细介绍了51的入门知识
💻 HTM
📖 第 1 页 / 共 4 页
字号:
lang=EN-US style='font-family:System'><font size="2">DPTR</font></span><span
lang=EN-US style='font-size:10.5pt'><o:p></o:p></span></p>

<p style='margin-left:72.0pt;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US
style='font-family:System'><font size="2">MOV<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>A</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">R0<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>;</font></span><font size="2">从</font><span lang=EN-US style='font-family:System'><font size="2">R0</font></span><font size="2">中取数(详见下面说明)</font><span
lang=EN-US><o:p></o:p></span></p>

<p style='margin-left:72.0pt;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US
style='font-family:System'><font size="2">MOV<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>B</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">#2</font><span style='mso-tab-count:4'><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span></span><span
lang=EN-US style='font-size:10.5pt'><o:p></o:p></span></p>

<p style='margin-left:72.0pt;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US
style='font-family:System'><font size="2">MUL<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>A</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">B</font></span><span
style='mso-tab-count:3' lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span><span
lang=EN-US style='font-family:System'><font size="2">;A</font></span><font size="2">中的值乘</font><span lang=EN-US style='font-family:System'><font size="2">2</font></span><font size="2">(详见下面的说明)</font><span
lang=EN-US><o:p></o:p></span></p>

<p style='margin-left:72.0pt;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US
style='font-family:System'><font size="2">JMP<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>A</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">@A+DPTR<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
;</font></span><font size="2">跳转</font><span lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><font size="2">TAB:<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AJMP<span
style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span>S1</font></span><span style='mso-tab-count:3' lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span><span
lang=EN-US style='font-family:System'><font size="2">;</font></span><font size="2">跳转表格</font><span lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span
style='mso-tab-count:1' lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp; </font> </span>
<span lang=EN-US
style='font-family:System'><font size="2">AJMP<span style='mso-tab-count:
1'>&nbsp;&nbsp;&nbsp;&nbsp; </span>S2</font></span><span lang=EN-US style='font-size:
10.5pt'><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><span style='mso-tab-count:1'>
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font> </span>
<font size="2">AJMP<span
style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span>S3</font></span><o:p></o:p></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><span style='mso-tab-count:2'>
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span><font size="2">.</font></span><o:p></o:p></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><span style='mso-tab-count:2'>
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span><font size="2">.</font></span><o:p></o:p></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><span style='mso-tab-count:2'>
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font> </span><font size="2">.</font></span><o:p></o:p></p>

<table class=MsoNormalTable border=1 cellspacing=1 cellpadding=0 width=609
 style='width:456.75pt;mso-cellspacing:.7pt' height=446>
 <tr style='mso-yfti-irow:0'>
  <td width=342 rowspan=2 style='width:256.5pt;padding:.75pt .75pt .75pt .75pt'>
  <p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2"><span lang=EN-US><img id="_x0000_i1025" src=dpj1302.gif width="338" height="398"></span></font><o:p></o:p></p>
  <p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2"><span lang=EN-US>&nbsp;</span></font><o:p></o:p></p>
  <p align=center style='text-align:center;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2">图</font><span lang=EN-US><font size="2">2</font><o:p></o:p></span></p>
  </td>
  <td width=200 style='width:150.0pt;padding:.75pt .75pt .75pt .75pt'>
  <p class=MsoNormal style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2"><span lang=EN-US><img id="_x0000_i1026"
  src=dpj1301.gif width="99" height="126"></span></font><o:p></o:p></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes;height:247.5pt'>
  <td width=200 style='width:150.0pt;padding:.75pt .75pt .75pt .75pt;
  height:247.5pt'>
  <p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2"><span lang=EN-US><img id="_x0000_i1027" src=dpj1303.gif width="204" height="272"></span></font><o:p></o:p></p>
  <p align=center style='text-align:center;mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
  <font size="2">图</font><span lang=EN-US><font size="2">3</font><o:p></o:p></span></p>
  </td>
 </tr>
</table>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">  应用背景介绍:在单片机开发中,经常要用到键盘,见上面的</font><span
lang=EN-US style='font-family:System'><font size="2">9</font></span><font size="2">个按键的键盘。我们的要求是:当按下功能键</font><span lang=EN-US
style='font-family:System'><font size="2">A………..G</font></span><font size="2">时去完成不同的功能。这用程序设计的语言来表达的话,就是:按下不同的键去执行不同的程序段,以完成不同的功能。怎么样来实现呢?</font><span
lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">  看图</font><span
lang=EN-US style='font-family:System'><font size="2">2</font></span><font size="2">,前面的程序读入的是按键的值,如按下</font><span lang=EN-US
style='font-family:System'><font size="2">'A'</font></span><font size="2">键后获得的键值是</font><span lang=EN-US style='font-family:
System'><font size="2">0</font></span><font size="2">,按下</font><span lang=EN-US
style='font-family:System'><font size="2">'B'</font></span><font size="2">键后获得的值是</font><span lang=EN-US style='font-family:
System'><font size="2">'1'</font></span><font size="2">等等,然后根据不同的值进行跳转,如键值为</font><span
lang=EN-US style='font-family:System'><font size="2">0</font></span><font size="2">就转到</font><span lang=EN-US style='font-family:System'><font size="2">S1</font></span><font size="2">执行,为</font><span
lang=EN-US style='font-family:System'><font size="2">1</font></span><font size="2">就转到</font><span lang=EN-US style='font-family:System'><font size="2">S2</font></span><font size="2">执行。。。。如何来实现这一功能呢?</font><span
lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">  先从程序的下面看起,是若干个</font><span
lang=EN-US style='font-family:System'><font size="2">AJMP</font></span><font size="2">语句,这若干个</font><span lang=EN-US style='font-family:System'><font size="2">AJMP</font></span><font size="2">语句最后在存储器中是这样存放的(见图</font><span
lang=EN-US style='font-family:System'><font size="2">3</font></span><font size="2">),也就是每个</font><span lang=EN-US style='font-family:System'><font size="2">AJMP</font></span><font size="2">语句都占用了两个存储器的空间,并且是连续存放的。而</font><span
lang=EN-US style='font-family:System'><font size="2">AJMP<span
style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>S1</font></span><font size="2">存放的地址是</font><span lang=EN-US style='font-family:System'><font size="2">TAB</font></span><font size="2">,到底</font><span
lang=EN-US style='font-family:System'><font size="2">TAB</font></span><font size="2">等于多少,我们不需要知道,把它留给汇编程序来算好了。</font><span lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">  下面我们来看这段程序的执行过程:第一句</font><span
lang=EN-US style='font-family:System'><font size="2">MOV DPTR</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">#TAB</font></span><font size="2">执行完了之后,</font><span
lang=EN-US style='font-family:System'><font size="2">DPTR</font></span><font size="2">中的值就是</font><span lang=EN-US style='font-family:System'><font size="2">TAB</font></span><font size="2">,第二句是</font><span
lang=EN-US style='font-family:System'><font size="2">MOV A</font></span><font size="2">,</font><span lang=EN-US style='font-family:System'><font size="2">R0</font></span><font size="2">,我们假设</font><span
lang=EN-US style='font-family:System'><font size="2">R0</font></span><font size="2">是由按键处理程序获得的键值,比如按下</font><span lang=EN-US
style='font-family:System'><font size="2">A</font></span><font size="2">键,</font><span lang=EN-US style='font-family:System'><font size="2">R0</font></span><font size="2">中的值是</font><span lang=EN-US style='font-family:System'><font size="2">0</font></span><font size="2">,按下</font><span
lang=EN-US style='font-family:System'><font size="2">B</font></span><font size="2">键,</font><span lang=EN-US style='font-family:System'><font size="2">R0</font></span><font size="2">中的值是</font><span
lang=EN-US style='font-family:System'><font size="2">1</font></span><font size="2">,以此类推,现在我们假设按下的是</font><span lang=EN-US
style='font-family:System'><font size="2">B</font></span><font size="2">键,则执行完第二条指令后,</font><span lang=EN-US style='font-family:System'><font size="2">A</font></span><font size="2">中的值就是</font><span
lang=EN-US style='font-family:System'><font size="2">1</font></span><font size="2">。并且按我们的分析,按下</font><span lang=EN-US style='font-family:System'><font size="2">B</font></span><font size="2">后应当执行</font><span
lang=EN-US style='font-family:System'><font size="2">S2</font></span><font size="2">这段程序,让我们来看一看是否是这样呢?第三条、第四条指令是将</font><span lang=EN-US
style='font-family:System'><font size="2">A</font></span><font size="2">中的值乘</font><span lang=EN-US style='font-family:System'><font size="2">2</font></span><font size="2">,即执行完第</font><span lang=EN-US style='font-family:System'><font size="2">4</font></span><font size="2">条指令后</font><span
lang=EN-US style='font-family:System'><font size="2">A</font></span><font size="2">中的值是</font><span lang=EN-US style='font-family:System'><font size="2">2</font></span><font size="2">。下面就执行</font><span
lang=EN-US style='font-family:System'><font size="2">JMP @A+DPTR</font></span><font size="2">了,现在</font><span lang=EN-US style='font-family:System'><font size="2">DPTR</font></span><font size="2">中的值是</font><span
lang=EN-US style='font-family:System'><font size="2">TAB</font></span><font size="2">,而</font><span lang=EN-US style='font-family:System'><font size="2">A+DPTR</font></span><font size="2">后就是</font><span
lang=EN-US style='font-family:System'><font size="2">TAB+2</font></span><font size="2">,因此,执行此句程序后,将会跳到</font><span lang=EN-US
style='font-family:System'><font size="2">TAB+2</font></span><font size="2">这个地址继续执行。看一看在</font><span lang=EN-US style='font-family:System'><font size="2">TAB+2</font></span><font size="2">这个地址里面放的是什么?就是</font><span
lang=EN-US style='font-family:System'><font size="2">AJMP<span
style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>S2</font></span><font size="2">这条指令。因此,马上又执行</font><span lang=EN-US style='font-family:System'><font size="2">AJMP<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>S2</font></span><font size="2">指令,程序将跳到</font><span lang=EN-US style='font-family:System'><font size="2">S2</font></span><font size="2">处往下执行,这与我们的要求相符合。</font><span
lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">请大家自行分析按下键“</font><span
lang=EN-US style='font-family:System'><font size="2">A</font></span><font size="2">”、“</font><span lang=EN-US style='font-family:System'><font size="2">C</font></span><font size="2">”、“</font><span
lang=EN-US style='font-family:System'><font size="2">D</font></span><font size="2">”</font><span style='font-family:
System'><font size="2">……</font></span><font size="2">之后的情况。</font><span lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<font size="2">  这样我们用</font><span
lang=EN-US style='font-family:System'><font size="2">JMP<span
style='mso-tab-count:1'>&nbsp;&nbsp; </span>@A+DPTR</font></span><font size="2">就实现了按下一键跳到相应的程序段去执行的这样一个要求。再问大家一个问题,为什么取得键值后要乘</font><span
lang=EN-US style='font-family:System'><font size="2">2</font></span><font size="2">?如果例程下面的所有指令换成</font><span lang=EN-US
style='font-family:System'><font size="2">LJMP</font></span><font size="2">,即:</font><span lang=EN-US><o:p></o:p></span></p>

<p style='mso-line-height-alt:0pt; line-height:150%; margin-top:0; margin-bottom:0'>
<span lang=EN-US style='font-family:System'><font size="2">LJMP<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span>S1,LJMP<span
style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>S2……</font></span><font size="2">这段程序还能正确地执行吗?如果不能,应该怎么改?</font><span lang=EN-US><o:p></o:p></span></p>

</div>
</body>

</html>

⌨️ 快捷键说明

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