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

📄 the04.htm

📁 sed2350de biancheng
💻 HTM
📖 第 1 页 / 共 4 页
字号:
              </table>
            </div>
            <div align="center" class="lh15">表4.2 </div>
            <p   class="lh15">四、注释&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            <p   class="lh15">以分号(;)起始,用户可以注释程序。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            <p   class="lh15">CLRF&nbsp; F10&nbsp;&nbsp;&nbsp; ; 清F10寄存器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            <p class="lh15" ><b><font size="2">§4.3 伪指令</font></b>&nbsp;</p>
            <p   class="lh15">所谓伪指令,是一些用来控制汇编器的命令。它们可放在源程序(.ASM)中,但不是被翻译成可执行的机器代码,而是用来控制汇编器的输入/输出以及数据的定位等。</p>
            <p   class="lh15">在MPASM中,有四类伪指令:</p>
            <p   class="lh15">1、数据伪指令:用于控制程序存储器的定位,定义数据的名称等。</p>
            <p   class="lh15">2、列表伪指令:用于控制MPASM产生的列表文件(.LST)的格式等。</p>
            <p   class="lh15">3、控制伪指令:用于控制汇编的路径,如条件汇编等。</p>
            <p   class="lh15">4、宏汇编指令:用于控制宏定义体中的运行和数据定位。</p>
            <p class="MsoNormalIndent"><span class="lh15">一、数据伪指令</span></p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 1. DATA——定义程序存储器的值。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式:〔&lt;标号&gt;〕 
              DATA &lt;操作数&gt;,〔&lt;操作数&gt;…〕</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例:DATA 1,2+AB,“Test”</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 2. DEFINE——定义字符串变量。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式:#DEFINE&lt;变量名&gt;〔&lt;字符串&gt;〕</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例:#DEFINE&nbsp; Length&nbsp;&nbsp;&nbsp; 20</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              #DEFINE&nbsp; control&nbsp;&nbsp; 0x19,7</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              #DEFINE&nbsp; position&nbsp; (X,Y,Z)&nbsp; (Y-(2×Z+X))</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              test_Lable&nbsp; DATA&nbsp;&nbsp; position(1,Length,52)</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              bsf&nbsp;&nbsp;&nbsp; control&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ; 置0X19寄存器的bit7</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 3. SET——对标号赋值。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: &lt;标号&gt;&nbsp; 
              SET&nbsp; &lt;表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例:&nbsp; width&nbsp; SET&nbsp; 9</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              area&nbsp;&nbsp; SET&nbsp; 0x16</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              width&nbsp; SET&nbsp; area+8</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用SET可对标号任意重新赋值,见上例3。这和下面的另一条标号赋不同。&nbsp;&nbsp;&nbsp;&nbsp;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 4. EQU——对标号赋值。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式:&lt;标号&gt;&nbsp; 
              EQU&nbsp; &lt;表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: lable&nbsp; EQU&nbsp; 0x16</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标号一旦由EQU赋值后,其值便不能再重新定义,参考上面SET命令。&nbsp;&nbsp;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 5. RES——保留某段程序存贮区。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: RES&nbsp; 
              &lt;单元个数&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: RES&nbsp;&nbsp; 10</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 保留10个空白字节。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 6. INCLUDE——调入外部文件,通常是定义文件,对一些标号和变量进行定义。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              MPASM提供一个名为PICREG.EQU的定义文件,读文件中定义了</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              PIC寄存器的地址,复位向量及状态位址。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: INCLUDE&nbsp; 
              “文件名”</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: INCLUDE&nbsp; “picreg.egu”</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 7. Radix——进制定义指令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: RADIX&nbsp; 
              &lt;进制表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: RADIX&nbsp; dec&nbsp;&nbsp; ; 十进制</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              RADIX&nbsp; Hex&nbsp;&nbsp; ; 十六进制</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              RADIX&nbsp; oct&nbsp;&nbsp; ; 八进制</p>
            <p class="MsoNormalIndent"><span class="lh15">二、列表伪指令</span></p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 1. LIST——列表选择指令,设置各种汇编参数。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: LIST〔&lt;选择项&gt;…&lt;选择项&gt;〕</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: LIST F=INHX8M, R=DEC, P=16C84</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 以下是LIST选项表:</p>
            <table border="1" cellspacing="0" cellpadding="0" align="center">
              <tr> 
                <td valign="top" class="lh15"> 选项 </td>
                <td valign="top"  class="lh15"> 默 认 值 </td>
                <td valign="top" class="lh15"> 作&nbsp;&nbsp;&nbsp;&nbsp; 用 </td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >C=nnn</p></td>
                <td valign="top" class="lh15"> 80 </td>
                <td valign="top" > <p class="lh15" >行宽</p></td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >N=nnn</p></td>
                <td valign="top" class="lh15"> 59 </td>
                <td valign="top" > <p class="lh15" >每页的行数</p></td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >T=ON/OFF</p></td>
                <td valign="top" class="lh15"> OFF </td>
                <td valign="top" > <p class="lh15" >ON截去超长行的超出部分</p></td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >P=&lt;type&gt;</p></td>
                <td valign="top" class="lh15"> 无 </td>
                <td valign="top" > <p class="lh15" >PIC12C/16C/17C</p></td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >R=&lt;radix&gt;</p></td>
                <td valign="top" class="lh15"> hex </td>
                <td valign="top" > <p class="lh15" >常数进制选择:hex,dec,oct</p></td>
              </tr>
              <tr> 
                <td valign="top" > <p class="lh15" >F=&lt;format&gt;</p></td>
                <td valign="top" class="lh15"> INHX8M </td>
                <td valign="top" class="lh15" > 烧写文件格式:INHX16,INHX32和INHX8M </td>
              </tr>
            </table>
            <div align="center" class="lh15">表4.3 </div>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 2. PAGE——分页命令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: PAGE</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在列表文件中(.lst)中产生分页效果,即下面的文件输出将从新页面开始。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 3. TITLE——程序标头命令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: TITLE&nbsp; 
              '程序标头'</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: TITLE&nbsp; 'This is for PIC12C50X demo'</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标头最长不超过60个字符。TITLE令会造成分页,即标头总是在一页的第一行上。</p>
            <p class="MsoNormalIndent"><span class="lh15">三、控制伪指令</span></p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 1. ORG——定义程序存放起始地址。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式:&lt;标号&gt;&nbsp; 
              ORG&nbsp; &lt;地址表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ORG&nbsp;&nbsp; 0h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ; 起始程序存放地址</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              START:&nbsp;&nbsp;&nbsp; MOVWF OSCCAL</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若ORG不带地址参数,则默认为0。若ORG带标号,则地址参数也赋值给该标号。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 2. END——程序结束命令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式:&nbsp;&nbsp; 
              END</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例:&nbsp;&nbsp; END</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这条指令告诉MPASM这是源程序(.ASM)的结束行,后面若还有语句将被视为无效。&nbsp;&nbsp;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 3. IF——条件汇编命令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: IF&nbsp; 
              &lt;条件表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              &lt;源程序行&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              &lt;ELSE&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              &lt;源程序行&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ENDIF</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: IF&nbsp; VER==100</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              MOVLW&nbsp; 5</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              WOVWF&nbsp; F11</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ELSE</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              MOVLW&nbsp; 6</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              MOVWF&nbsp; F11</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ENDIF</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p   class="lh15">如果条件表达式为真,MPASM将汇编IF和ELSE之间的语句,反之汇编ELSE和ENDIF之间的语句。ELSE可以缺省,这样条件为真则汇编,反之不汇编。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp; 4. WHILE——条件循环命令。</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 格式: WHILE&nbsp; 
              &lt;条件表达式&gt;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              …</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ENSW&nbsp;</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              例: VARIABLE&nbsp; i</p>
            <p class="lh15" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

⌨️ 快捷键说明

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