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

📄 masm2.htm

📁 不错的单片机方面的资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
<title>汇编程序的格式</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#cccccc">
<b> 
<p align="center"><font face="黑体" lang="ZH-CN" size=4>第三节</font><font face="Arial" size=4> 
  </font><font face="黑体" lang="ZH-CN" size=4>汇编程序输入和输出文件的格式</font></p>
</b> <b><font face="宋体" lang="ZH-CN"><a name="_Toc416236552">一、源文件</a></font></b><b><font face="黑体" lang="ZH-CN"> 
<p></p>
</font></b> 
<p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>源文件是由文字编缉器编写的由汇编指令和MASM51伪指令构成的文本文件。源文件一般应以.ASM为扩展名。</font></p>
<ol>
  <font face="宋体" lang="ZH-CN" size=3> </font><b><font face="宋体" lang="ZH-CN"> 
  <a name="_Toc416236552">二、源文件的格式</a> 
  <p></p>
  </font></b> 
  <p align="JUSTIFY"><font face="Arial" size=3> </font><font face="宋体" lang="ZH-CN" size=3>以回车作为结束的一行称为语句行。每一语句行长度应少于80个字符(即40个汉字)。每一个语句行对于汇编程序来说都是一条单独的命令行,它可以是一条汇编语言指令,也可以是一条注释,或是空白(即什么也不写),还可以是系统允许的伪指令。所有行必须按照INTEL标准格式书写即:</font></p>
  <p align="JUSTIFY"><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> 
    </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> </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>标号是标志程序中某一行的符号名,标号的数值就是标号所在行代码的地址。在宏汇编MASM51中标号的长度不受限制,但标号中不能包含‘:’或其它的一些特殊符号,也不以用汉字,可以用数字作标号,但必须用字母开头。当标号作参数用(如标号作转移地址),在命令后面出现时,必须舍去‘:’(如</font><font face="Arial" size=3> 
    LJMP START</font><font face="宋体" lang="ZH-CN" size=3>中的</font><font face="Arial" size=3> 
    START</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>命令及参数请参考有关单片机教材,其规定符合INTEL公司的51单片机汇编语言要求。这里必须注意:当采用十六进制数时,如果数值是以</font><font face="Arial" size=3>A,B,C,D,E,F</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>FFH</font><font face="宋体" lang="ZH-CN" size=3>,应当写成</font><font face="Arial" size=3>0FFH</font><font face="宋体" lang="ZH-CN" size=3>,</font><font face="Arial" size=3>C0H</font><font face="宋体" lang="ZH-CN" size=3>应写成</font><font face="Arial" size=3>0C0H</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>注释用于对程序的说明,它以分号开始,以回车结束。源程序行可以只包含注释,注释只是被复制到列表文件中,不产生机器码。由于汇编程序不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于源程序的阅读。否则,时间一长,自编的程序也会搞不清表达的含义。典型的注释有如下几种:1.在一行的后面写,以说明这一行语句的用途;2.在一段子程序的前面写,以说明这一子程序的用途,由什么程序调用,入口参数,出口值,占用资源等等情况;3.在整个源程序的最前面书写,以说明本程序的用途,资源的分配等情况。以下是一个例子:</font></p>
  <i> 
  <p align="JUSTIFY"><font face="Arial" size=3>;</font><font face="宋体" lang="ZH-CN" size=3>堆栈从</font><font face="Arial" size=3>5FH</font><font face="宋体" lang="ZH-CN" size=3>起</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3>;01H</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>'1',</font><font face="宋体" lang="ZH-CN" size=3>无为</font><font face="Arial" size=3>'0'</font></p>
  <p align="JUSTIFY"> <font face="Arial" size=3>;38H</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>2</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY"> ORG 0000H</p>
  <p align="JUSTIFY"> LJMP START</p>
  </font> 
  <p align="JUSTIFY"><font face="Arial" size=3> ORG 0003H ;</font><font face="宋体" lang="ZH-CN" size=3>外中断</font><font face="Arial" size=3>0</font><font face="宋体" lang="ZH-CN" size=3>处理程序</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY"> NOP</p>
  <p align="JUSTIFY"> RET</p>
  </font> 
  <p align="JUSTIFY"><font face="Arial" size=3>START: ;</font><font face="宋体" lang="ZH-CN" size=3>初始化程序</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY"> MOV SP,5FH</p>
  <p align="JUSTIFY"> .</p>
  <p align="JUSTIFY"> .</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">MAIN:</p>
  <p align="JUSTIFY"> LCALL KEY</p>
  <p align="JUSTIFY"> LJMP MAIN</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>
  </font> 
  <p align="JUSTIFY"><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>0</font><font face="宋体" lang="ZH-CN" size=3>开始</font></p>
  <font face="Arial" size=3> 
  <p align="JUSTIFY">;***************************************</p>
  <p align="JUSTIFY">KEY:</p>
  </font> 
  <p align="JUSTIFY"><font face="Arial" size=3> PUSH PSW ;</font><font face="宋体" lang="ZH-CN" size=3>将</font><font face="Arial" size=3>PSW</font><font face="宋体" lang="ZH-CN" size=3>推入堆栈</font></p>
  <p align="JUSTIFY"><font face="Arial" size=3> SETB RS0 ;</font><font face="宋体" lang="ZH-CN" size=3>选第一工作区</font></p>

⌨️ 快捷键说明

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