📄 +ҦӦ
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0036)http://go.163.com/~czlyzhj/masm2.htm -->
<HTML><HEAD><TITLE>汇编程序的格式</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR></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><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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -