ASM-51宏汇编应用指南
2、1 符号定义伪操作 本文引用地址:https://www.eepw.com.cn/article/171459.htm
符号定义伪操作及其格式: 符号名 符号定义名 常量或表达式
其中符号定义名可以为EQU,=,DATA,BYTE,WORD,BIT,SET等。下面就是这些符
号定义伪操作的用法及说明。如表--4所示。
表--4 符号定义伪操作
符号定义名 用 法 说 明
EQU 为常量,符号名等定义符号化常量名 符号名不能重名定义
= 为常量,符号名等定义符号化常量名 符号名不能重名定义
DATA 用来为一个字节类型的符号定值 符号名不能重名定义
BYTE 用来为一个字节类型的符号定值 符号名不能重名定义
WORD 用来为一个字类型的符号定值 符号名不能重名定义
8051中没有字操作
BIT 用来定义一个字位类型
SET 用来定义整数类型的符号名 符号名可重名定义
DATA与BYTE的区别: DATA与BYTE是相类似的伪指令。 当程序运行到DATA伪指令定义的符号名时,该符号名将被显示;而由BYTE定义的符号名不被显示。
2、2 段定义伪操作
(1) ORG 用于设置或改变程序计数器的值。
其格式为: ORG 常数或表达式
例如: ORG 0008H
ORG $+5
其中$表示程序计数器的当前值。
(2) END 表示源代码结束。
其格式为: END 常数或表达式
汇编程序遇到END语句即停止运行。 若程序中没有END,则在汇编源程序时显出错
(3) 8051系列的处理器把内存结构分成五个段,代码段CSEG,数据段DSEG,外部段XSEG,功能段FSEG和位段BSEG等,其用法及区别如 表--5所示。
在汇编以上各段所定义的符号时,系统根据符号所在不同段,赋与不同类型的字母,如表--6所示。
2、3 数据定义伪操作
数据定义伪操作格式:
[ 标号: ] 数据定义名 [ 表达式1,表达式2,。。。 ]
其中数据定义名可为DB,DW,DS等。
如表--7所示,数据定义伪操作的含义及说明。
表--5 段定义伪操作
段 用 法 及 区 别
代码段(CSEG) 包含由处理器所执行的程序。段名可缺省。有目标代码生成。
数据段(DESG) 由内部工作寄存器的处理器的RAM组成。用来对程序使用的数据地址赋符号名,大多以ORG,DATA,BYTE,WORD,EDNS等组成。 无目标码生成。
外部段(XSEG) 由外部工作寄存区和RAM组成。使用方法同数据段。无目标码生成。
功能段(FSEG) 由特殊寄存器位置组成(如:输入/输出部件,计时器,中断控制和连续的寄存器部件接口等)。无目标代码生成。
位 段(BSEG) 由一些独立的位组成,可以用布尔函数实现。 该段地址被解释为位地址。无目标代码生成。
表--6 程序分段的类型符号
段 标号(Label) 字节型操作数(Byte) 字型操作数(Word)
代码段CSEG L D W
数据段DSEG D D W
外部段XSEG X X E
功能段FSEG F F G
位 段BSEG B B B
说明: (1)在不同的段中类型符号不同;
(2)字节型操作数(Byte)一般通过DATA指令赋给符号; 字型操作数
一般通过WORD指令赋给符号;
(3)如果各段中用BYTE赋值,则在各段中符号全以S表示;在SIM51模
拟/调试中的符号区显示功能中,对BYTE赋值的将被跳过。
(4)在各段中,位类型可以用BIT指令赋给。
表--7 数据定义伪操作
数据定义名 含 义 说 明
DB 用于定义一个字节包含的值 表达式不是字符串时,每个表达式赋给一个字节,是字符串时,用单引号 “ ' “ 作为分隔符。
DW 用于定义一个字(16位) 每个表达式占16位。 如果表达式中的存贮内容为字符串,只取最后两个字符。若字符串只有一个字符,高字节置“0“。
DS 定义一个存贮区 通常用在代码段中,作为程序的一部分。若用在数据段,外部段,则作为位置标志使用。
表--8 列表伪操作
伪指令 含义及格式 说 明
$TITLE 给源程序指定一个标题 标题不加 “ “,其最大长度
格式: $TITLE [标题行] 60个字符。若标题行省略, 原来定义的标题行作废。
$SUBTTL 给源程序指定一个副标题 副标题不加 “ “,其最大长
格式: $SUBTTL [副标题行] 度60字符。若副标题行省略,原来定义的副标题行作废。
$PAGE 用于形成或定义新的一页或行数 汇编时页长为66行(适合于格式: $PAGE [表达式] 标准打印纸)。表达式最大为65535,最小为12, 表达式缺省,则从新的一页开始。
$LIST 使源程序汇编时,产生程序清单 汇编时无此指令照样产生清单。
格式: $LIST
$NOLIST 使源程序汇编时不产生程序清单
格式: $NOLIST
$NOCODE 源程序汇编时,条件汇编程序值 没有此指令汇编时,不论其值是为假的不产生清单。真、假的条件都不产生目标码。
格式: $NOCODE
2、4 列表伪操作
如表--8所示,列表伪操作的含义,格式及说明。
2、5 条件伪操作
条件伪操作格式:
IF 表达式
[ 程序块1 ]
[ ELSE ]
[ 程序块2 ]
ENDIF
当IF指令中的表达式为真时,被汇编的代码段是程序块1;当IF指令中的表达式为假时,被汇编的代码段是程序块2。 在一个条件结构中,仅有一个代码段被汇编,其它的则被忽略。
评论