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

📄 masm2.htm

📁 51单片机教程及源码
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <font face="Arial" size=3> 
  <p align="JUSTIFY"> MOV SBUF,#00H</p>
  <p align="JUSTIFY">KEY_DISP:</p>
  <p align="JUSTIFY"> .</p>
  <p align="JUSTIFY"> .</p>
  <p align="JUSTIFY"> .</p>
  <p align="JUSTIFY"> POP PSW</p>
  <p align="JUSTIFY"> RET</p>
  <p align="JUSTIFY">;*********************************************************</p>
  </font> 
  <p align="JUSTIFY"><font face="Arial" size=3>;</font><font face="宋体" lang="ZH-CN" size=3>以上键盘程序</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY">;********************************************************</p>
  <p align="JUSTIFY"> .</p>
  <p align="JUSTIFY"> .</p>
  </font></i><b><font face="宋体" lang="ZH-CN"> <a name="_Toc416236553">三、算术表达式和算术操作</a> 
  <p></p>
  </font></b> 
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>在宏汇编中允许使用一个算术表达式的结果来作为一个参数使用,从而使编写源程序时更为灵活。算术表达式由参数与算术操作符组成,其中参数可以是数值类型,符号类型或字符串类型。而算术表达式的最后运算结果即为该算术表达式所代表的参数。它是一个十六位的二进制数。在可以用数值的任何地方,都可以使用表达式,例如直接值,转移和子程序调用的址址部分。汇编命令内表达式由汇编解释程序在汇编时计算,改变表达式值的唯一方法就是修改参数值。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>算术表达式的最简单的形式就是只有一个参数,这个参数的值也就是它的结果。一般形式为参数与算术操作符的组合,它们之间用某些限定符予以隔离,例如空格、制表符等。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>在宏汇编中,所有的参数值均为整数,以十六位二进制形式存放,因此其表示范围为0~65535。对于负数则以其补码来表示。下面给出一个例子介绍宏汇编中允许使用的各种算术操作符,请大家仔细阅读。</font></p>
  <i> 
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#3+5 ;MOV A,#8,</font><font face="宋体" lang="ZH-CN" size=3>加法</font><font face="Arial" size=3>,</font><font face="宋体" lang="ZH-CN" size=3>前面加</font><font face="Arial" size=3>'#'</font><font face="宋体" lang="ZH-CN" size=3>号代表是立即数</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,3+5 ;MOV A,8 ,</font><font face="宋体" lang="ZH-CN" size=3>加法</font><font face="Arial" size=3>,</font><font face="宋体" lang="ZH-CN" size=3>未加</font><font face="Arial" size=3>'#'</font><font face="宋体" lang="ZH-CN" size=3>号代表</font><font face="Arial" size=3>3+5</font><font face="宋体" lang="ZH-CN" size=3>是地址</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,5-3 ;MOV A,2 ,</font><font face="宋体" lang="ZH-CN" size=3>减法</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,3-5 ;MOV A,0FEH,</font><font face="宋体" lang="ZH-CN" size=3>减法</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#5-3 ;MOV A,#2,</font><font face="宋体" lang="ZH-CN" size=3>减法</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#5*3 ;MOV A,#15,</font><font face="宋体" lang="ZH-CN" size=3>乘法</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#6/3 ;MOV A,#2 ,</font><font face="宋体" lang="ZH-CN" size=3>除法</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#6 MOD 3 ;MOV A,#0 ,</font><font face="宋体" lang="ZH-CN" size=3>取模运算</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,01010010 SHR 3 ;MOV A,E3H 
    ,</font><font face="宋体" lang="ZH-CN" size=3>向右移位</font><font face="Arial" size=3>,01010010</font><font face="宋体" lang="ZH-CN" size=3>向右移</font><font face="Arial" size=3>3</font><font face="宋体" lang="ZH-CN" size=3>位</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#21 SHL 5 ;MOV A,#0A0H ,</font><font face="宋体" lang="ZH-CN" size=3>向左移位</font><font face="Arial" size=3>,21</font><font face="宋体" lang="ZH-CN" size=3>向左移</font><font face="Arial" size=3>5</font><font face="宋体" lang="ZH-CN" size=3>位</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A, # NOT 0A5H ;MOV A,#5AH ,</font><font face="宋体" lang="ZH-CN" size=3>取</font><font face="Arial" size=3>0A5H</font><font face="宋体" lang="ZH-CN" size=3>的反</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#10101111 OR 11110000 ;MOV 
    A,#57H,</font><font face="宋体" lang="ZH-CN" size=3>求两数之或</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#10101010 AND 00001111 ;MOV 
    A,#52H,</font><font face="宋体" lang="ZH-CN" size=3>求两数之与</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#4B2H XOR 3197 ;MOV A,#0CFH,</font><font face="宋体" lang="ZH-CN" size=3>求两数之异或</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,#(HIGH 4567H) ;MOV A,#45H 
    ,</font><font face="宋体" lang="ZH-CN" size=3>取</font><font face="Arial" size=3>4567H</font><font face="宋体" lang="ZH-CN" size=3>的高两位</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>MOV A,LOW 4567H ;MOV A,67H ,</font><font face="宋体" lang="ZH-CN" size=3>取</font><font face="Arial" size=3>4567H</font><font face="宋体" lang="ZH-CN" size=3>的低两位</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY">END<b><font face="宋体" lang="ZH-CN"> </font></b></p>
  </font></i><b><font face="宋体" lang="ZH-CN"> 
  <p align="JUSTIFY"> <a name="_Toc416236554">四、机器码代码文件</a>
  <p></p>
  </font></b> 
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>机器码代码文件由宏汇编产生,为了与一般的HEX文件相区别,通常由宏汇编产生的机器码代码文件被称为INTEL文件。该文件是由能够在处理器上运行的机器指令码组成。它可被用来传送到仿真器或用户系统中进行调试或运行。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>INTEL</font><font face="Arial" size=3> 
    </font><font face="宋体" lang="ZH-CN" size=3>HEX文件由若干行组成,每行表示一个记录,它的每一行都是可以打印的ASCII字符,用两个字符,用两个字符来表示一个字节的值。每一行的格式如下:</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>:CC aaaa tt dd.......dd ss</font><font face="宋体" lang="ZH-CN" size=3>冒号</font><font face="Arial" size=3>":"</font><font face="宋体" lang="ZH-CN" size=3>为每一行的起始符,随后为一组数据在其中。</font><font face="Arial" size=3>CC 
    </font><font face="宋体" lang="ZH-CN" size=3>为由两个字节表示的十六进制数,它的范围为</font><font face="Arial" size=3>00H~10H,</font><font face="宋体" lang="ZH-CN" size=3>它表示该记录包含的机器代码的字节数。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> aaaa</font><font face="宋体" lang="ZH-CN" size=3>为用ASCII码表示的四个十六进制数,它是该记录第一个数据字节所驻存的存储空间的绝对地址。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>tt</font><font face="宋体" lang="ZH-CN" size=3>是表示该记录数据类型的一个代码,若该记录为数据,则</font><font face="Arial" size=3>tt</font><font face="宋体" lang="ZH-CN" size=3>为</font><font face="Arial" size=3>0</font><font face="宋体" lang="ZH-CN" size=3>,否则是其它值。</font><font face="Arial" size=3>dd</font><font face="宋体" lang="ZH-CN" size=3>表示代码的实际字节值,每一个字节值用两个字符表示。(将会有</font><font face="Arial" size=3>cc</font><font face="宋体" lang="ZH-CN" size=3>个</font><font face="Arial" size=3>dd</font><font face="宋体" lang="ZH-CN" size=3>数据)</font><font face="Arial" size=3>ss</font><font face="宋体" lang="ZH-CN" size=3>是一个和校验,它是从计数器到最后一个数据字节的所有字节值累加和的相所数。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>当</font><font face="Arial" size=3>ss</font><font face="宋体" lang="ZH-CN" size=3>与记录中所有的字相加时,其结果应该为零,若为其它值则表明该记录有错。</font></p>
  <b><font face="宋体" lang="ZH-CN"> <a name="_Toc416236555">五、列表文件</a> 
  <p></p>
  </font></b> 
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>由汇编程序生成的第二个文件是列表文件,它以LST为扩展名,也是一个ASCII码字符文件,回而可以被打印显示,也可以作为程序的文档。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>列表文件是分页的,每页的长度由缺省值决定。也可以通过伪指令</font><font face="Arial" size=3>&amp;PAGE</font><font face="宋体" lang="ZH-CN" size=3>来决定。每页以一起始行开始,用来指出汇编的类型类型和版本,以及页号。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>当用户使用</font><font face="Arial" size=3>&amp;TITLE</font><font face="宋体" lang="ZH-CN" size=3>伪指令时,该行后面紧接着一个标题行,当用户使用</font><font face="Arial" size=3>SUBTITLE</font><font face="宋体" lang="ZH-CN" size=3>指令时,后再接一个子标题行。例如:</font><font face="Arial" size=3>The 
    Cybernetic Micro Sysystems 8051 FamilyAssembler,Version 3.03 Page 109-10-83</font><font face="宋体" lang="ZH-CN" size=3>。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>每页的其它部分由用户程序、汇编所产生的绝对地址和机器代码组成。通常一个行的第一个字符是一个空格,若出现</font><font face="Arial" size=3>"I"</font><font face="宋体" lang="ZH-CN" size=3>则指出这一行是个外部来的文件。而</font><font face="Arial" size=3>"+"</font><font face="宋体" lang="ZH-CN" size=3>则表明是一个宏扩展行。后面接着的四个字符通常是当前语句的程序地址,以十六进制形式给出,</font><font face="Arial" size=3>END</font><font face="宋体" lang="ZH-CN" size=3>指令前的四个字符表示该指令的起始地址参数值。后面有一个空格。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>程序计数器后是10个字符的空间,它通常包含该行汇编出的目标代码的十六进制值。显示出的字节值的数目依赖于每条语句所要求的字节数目,这里,每个字节值用两字符表示。对等价指令,这个域还包含一个等号(</font><font face="Arial" size=3>=</font><font face="宋体" lang="ZH-CN" size=3>)。不生成目标代码的源程序行中该域全为空格。</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>每行的前16个字符后面的剩余部分包含着台的源程序文件。因而列表文件的每一行长度为源程序的长度再加上16列字符。如果是用80列宽的打印纸则源程序行的长度应小于64列,否则打印设备在打印时反长行切断,或则分成两行。</font></p>
</ol>
<p align="center"><a href="dpjjx.htm"><img src="back1.gif" width="43" height="55" border="0"></a></p>
</body>
</html>

⌨️ 快捷键说明

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