ASM-51宏汇编应用指南
2、6 宏处理操作 本文引用地址:https://www.eepw.com.cn/article/171459.htm
在源程序中,如果有一段程序需要多次使用,为使程序不重复书写这段程序,可用宏定义把所需要重复出现的程序块定义成宏指令,此后在宏指令出现的地方,宏汇编程序总是自动地把它们替换成相应的代码段。
(1) 宏指令格式
[ 宏指令名 ] MACRO [形式参数,。。。]
代码段
ENDM
在宏定义中,使用了“形式参数“,它们引用宏指令时被给出的一些名字或数值(实在参数)所替换。使用形式参数给宏指令带来了很大的灵活性。
(2)宏调用格式
[ 宏指令名 ] [实在参数,。。。]
注意:1、当有两个以上的实参数时,它们之间要用逗号,空格或列表符隔开。
2、实参数项将对应替换宏指令中形式参数。如果形式参数为标号时,则在宏调用中,实参也应为标号,且要求实参是唯一的。如果宏定义中有自己的标号,则在宏调用时,汇编程序自动地把标号变成唯一的标号。
2、7 其他
(1) 替换名 ALTNAME
功能: 这一伪指令用来自定义名字,以替换源程序中原来的保留字,替换的保留字均可等效地用于子程序中。
格式: ALTNAME 保留字 自定义名
注意: 自定义名与保留字之间首字符必须相同。
(2) 附加文件的链结 INCLUDE
功能: 利用此伪指令可将一个源文件插入到当前源文件中一起汇编,最终成为一个完整的源程序。
格式: INCLUDE [ 驱动器名: ] [ 路径名 ] 文件名
注意:1、文件名中若没有扩展名,则系统默认是。ASM(该文件必须是能打开的)。
2、被插入的源程序中不能包含END伪指令,否则汇编会停止运行。被链接文件的每一行,在程序清单中以“I“开头。
3、链接伪指令可有8级嵌套, 若要求嵌套的多, 则要修改 DOS 中的
CONFIG。SYS文件的FILES参数。
3 宏汇编运行
3、1 系统运行环境
ASM-51宏汇编要在IBM-PC及其兼容机上运行(至少128K字节的RAM);具有一个软驱动器或硬驱动器,采用ANSI标准终端(包括键盘,显示控制器,打印机,至少一个RS-232异步通讯接口)。软件有PC-DOS,MS-DOS 2。0 以上版本,ASM_51系统。
3、2 宏汇编程序的运行
以 8051 宏汇编为例,在DOS系统的提示符下键入
A> ASM51 文件名。ASM CR>
等错误的个数出现后 ,键入 CR> 变返回到DOS提示符下。8051的宏汇编与此相似。
4 汇编的使用
使用ASM-51宏汇编是将8051源程序汇编生成列表输出文件和目标代码文件,供模拟/调试时使用。我们使用的宏汇编完全采用Inter标准助记符和行格式,因此在编写源程序时,可以使用宏汇编中的伪指令, 以增加源程序的运行速度和可读性。也可以直接用 Inter 标准助记符来编写源程序。再经过ASM-51宏汇编进行汇编,便可得到列表输出文件和目标代码文件。
汇编的格式如下:
> ASM51 文件名。ASM [ 可选项 ]
其中可选项为: /L, /H, /S, /P, /N
/L 表示源程序汇编后不生成列表册输出文件(.LST),只显示在屏幕上。
/H 表示源程序汇编后不生成目标代码文件(.HEX)。
/S 表示源程序汇编后不生成符号表。
/P 表示源程序汇编后生成符号表。
/N 表示源程序汇编后,程序是连续的显示。
如果没有选择项,则表示产生列表输出文件和目标代码文件,且在LST文件后面列出符号表。 生成的目标代码便可以进行模拟/调试,如果在模拟/调试中发现错误,则源程序要经过修改,重新汇编,然后再进行模拟/调试,直到完全正确。
若程序汇编过程中有错误,则给出出错信息(出错信息见附录)。 生成的目标代码可以进行模拟/调试/烧写。
附录 ASM-51 汇编出错信息表
1 Address Out of Range 一个被计值的目标地址超出了当前语句的范围。
2 Badly Formed Argument 数字规定的类型中有非法数字存在。
3 Illefal Equale 有不允许的类型约定。
4 Label Name Conflicts With Symbol Name 在程序中有两个符号相同。
5 Label Address Changed On Pass 2。 源程序在此错误之前,还有一些错误。
6 Missing Argument in Expression 表达式中算术运算符后面没有操作数。
7 Missing END Statrment 汇编的源程序结尾未发现END语句。
8 Multiply Defined Label 源程序中定义了两个标号。
9 Unbalanced Parentheses 表达式中多余或缺少括号。
10 Undefined Symbol 语句中的符号名可能拼错或未被定义。
11 Unrecognized Statemen or Undefined Argument 未定义参数的指令或代码。
12 Value Out of Range 有一个非法的值来说明一个有着可能值限制的语句。
评论