找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3236|回复: 0
收起左侧

avr宏汇编和表达式

[复制链接]
ID:104287 发表于 2016-1-31 20:21 | 显示全部楼层 |阅读模式
汇编器提供一些伪指令伪指令并不直接转换成操作数而是用于调整存储器中程序的位置
定义宏初始化存储器等全部伪指令在表4.2 中给出
1 BYTE 保存字节到变量
BYTE 伪指令保存存储的内容到SRAM 中为了能提供所要保存的位置BYTE 伪指令前应有
标号该伪指令带一个表征被保存字节数的参数该伪指令仅用在数据段内见伪指令CSEG DSEG
和ESEG 注意必须带一个参数字节数的位置不需要初始化
语法LABEL BYTE 表达式
2 CSEG 一代码段
CSEG 伪指令定义代码段的开始位置一个汇编文件包含几个代码段这些代码段在汇 编时
被连接成一个代码段在代码段中不能使用BYTE 伪指令典型的缺省段为代码段代码段有一个
字定位计数器ORG 伪指令用于放置代码段和放置程序存储器指定位置的常数
CSEG 伪指令不带参数
语法CSEG
表4.2 伪指令表
序号 伪指令 说 明 序号 伪指令 说 明
1 BYTE 保存字节到变量 10 ESEG E2PROM 段
2 CSEG 代码段 11 EXIT 退出文件
3 DB 定义字节常数 12 INCLUDE 从指定文件开始读
4 DEF 设置寄存器的符号名 13 LIST 打开列表文件
5 DEVICE 定义被汇编的器件 14 LISTMAC 打开宏表达式
6 DSEG 数据段 15 MACRO 宏开始
7 DW 定义字常数 16 NOLIST 关闭列表文件
8 ENDMACRO 宏结束 17 ORG 设置程序起始位置
9 EQU 符号相等于表达式 18 SET 赋值给一个标号
3 DB 在程序存储器或E2PROM 存储器中定义字节常数
DB 伪指令保存数据到程序存储器或E2PROM 存储器中为了提供被保存的位置在DB 伪指令
前必须有标号DB 伪指令可带一个表达式表至少有一个表达式DB 伪指令必须放在代码段或
E2PROM 段表达式表是一系列表达式用逗号分隔每个表达式必须是一128 255 之间的有效值
如果表达式有效值是负数则用8 位2 的补码放在程序存储器或E2PROM 存储器中如果DB 伪指
令用在代码段并且表达式表多于一个表达式则以两个字节组合成一个字放在程序存储器中
如果表达式表是奇数那么最后一个表达式将独自以字格式放在程序存储器中而不管下一行汇
编代码是否是单个DB 伪指令
语法LABEL DB 表达式
4 DEF 设置寄存器的符号名
DEF 伪指令允许寄存器用符号代替一个定义的符号用在程序中并指定一个寄存器,一个寄
存器可以赋几个符号符号在后面程序中能再定义
语法DEF 符号一寄存器
5 DEVICE 定义被汇编的器件
DEVICE 伪指令允许用户告知汇编器被执行的代码使用那种器件如果使用该伪指令若在代
码中有指定的器件不提供的指令则提示一个警告如果代码段或E2PROM 段的尺寸大于被指定器
件的尺寸也提示警告如果不使用DEVICE 伪指令则假定器件提供所有的指令也不限制存储
器尺寸
语法 .DEVICE AT90S1200 AT90S2313 AT90S4414 AT9OS8515
6 DSEG 一数据段
DSEG 伪指令定义数据段的开始一个汇编文件能包含几个数据段这些数据段在汇编时
被连接成一个数据段一个数据段正常仅由BYTE 伪指令和标号组成数据段有自己的定
位字节计数器ORG 伪指令被用于在SRAM 指定位置放置变量DSEG 伪指令不带参数
语法 .DSEG
7 DW——在程序存储器和E2PROM 存储器中定义字常数
DW 伪指令保存代码到程序存储器或E2PROM 存储器为了提供被保存的位置在DW 伪指
令前必须有标号DW 伪指令可带一个表达式表至少有一个表达式DW 伪指令必须放在
代码段或E2PROM 段表达式表是一系列表达式用逗号分隔每个表达式必须是一32 768
65 535 之间的有效值如果表达式有效值是负数则用 16 位2 的补码放在程序存储器中
语法LABEL .DW 表达式表
8·ENDMACRO 一宏结束
ENDMACRO 伪指令定义宏定义的结束该伪指令并不带参数参见MACRO 宏定义伪指令
语法 .ENDMACRO
9 EQU——设置一个符号相等于一个表达式
EQU 伪指令赋一个值到标号该标号用于后面的表达式用EQU 伪指令赋值的标号是一个
常数不能改变或重定义
语法 .EQU 标号= 表达式
10 ESEG - E2PROM 段
ESEG 伪指令定义E2PROM 段的开始位置一个汇编文件包含几个E2PROM 段这些E2PROM
段在汇编时被连接成一个E2PROM 段在E2PROM 段中不能使用BYTE 伪指令E2PROM 段有一
个字节定位计数器ORG 伪指令用于放置E2PROM 存储器指定位置的常数ESEG 伪指令不带参数
语法 .ESEG
11 EXIT——退出文件
EXIT 伪指令告诉汇编器停止汇编该文件正常情况下汇编器汇编到文件的结束如果
EXIT 出现在包括文件中则汇编器从文件中INCLUDE 伪指令行继续汇编
语法 .EXIT
12·INCLUDE——包括另外的文件
INCLUDE 伪指令告诉汇编器从指定的文件开始读然后汇编器汇编指定的文件直到文件
结束或遇到EXIT 伪指令一个包括文件也可能自己用INCLUDE 伪指令来表示
语法 .INCLUDE“文件名”
13 LIST——打开列表文件生成器
LIST 伪指令告诉汇编器打开列表文件生成器汇编器生成一个汇编源代码地址和操作
代码的文件列表列表文件生成器缺省值是打开该伪指令总是与NOLIST 伪指令一起出现
用于生成列表或汇编源文件有选择的列表
语法 .LIST
14 LISTMAC——打开宏表达式
LISTMAC 伪指令告诉汇编器当调用宏时用列表生成器在列表文件中显示宏表达式
缺省值仅是在列表文件中显示宏调用参数
语法 .LISTMAC
15 MACRCO 一宏开始
MACRO 伪指令告诉汇编器这是宏开始MACRO 伪指令带宏名和参数当后面的程序中写
了宏名被表达的宏程序在指定位置被调用一个宏可带10 个参数这些参数在宏定义中
用0 9 代表当调用一个宏时参数用逗号分隔宏定义用ENDMACRO 伪指令结束
缺省值为汇编器的列表生成器仅列表宏调用为了在列表文件中包括宏表达式必须使
用 LISTMAC 伪指令在列表文件的操作代码域内宏用 a+ 作记号
语法 .MACRO 宏名
16 NOLIST--关闭列表文件生成器
NOLIST 伪指令告诉汇编器关闭列表文件生成器正常情况下汇编器生成一个汇编源
代码地址和操作代码文件列表缺省时为打开列表文件但是可用该伪指令禁止列表为
了使被选择的汇编源文件部分产生列表文件该伪指令可以与LIST 伪指令一起使用
语法 .NOLIST
17 ORG 一设置程序起始位置
ORG 伪指令设置定位计数器一个绝对值设置的值为一个参数如果ORG 伪指令放在数
据段则设置SRAM 定位计数器如果该伪指令放在代码段则设置程序存储器计数器如
果该伪指令放在E2PROM 段则设置E2PROM 定位计数器如果该伪指令前带标号在相同
的源代码行则标号由参数值给出代码和E2PROM 定位计数器的缺省值是零而当汇编启
动时 SRAM 定位计数器的缺省值是32 因为寄存器占有地址为 0 31 注意E2PROM 和
SRAM 定位计数器按字节计数而程序存储器定位计数器按字计数
语法 .ORG 表达式
18 SET 设置一个与表达式相等的符号
SET 伪指令赋值给一个标号这个标号能用在后面的表达式中用SET 伪指令赋值的
标号在后面的程序中能改变
语法 .SET 标号 = 表达式
4 ·1 3 表达式
汇编器包括一些表达式表达式由操作数运算符和函数组成所有的表达式内部为32

一操作数
1 用户定义的标号该标号给出了放置标号位置的定位计数器的值
2 用户用SET 伪指令定义的变量
3 用户用EQU 伪指令定义的常数
4 整数常数包括下列几种形式
·十进制缺省值 10 255
·十六进制数二进制表示法0x0a,$0a,0xff.$ff
二进制数0b0O00101O,0bllllllll
5 PC 程序存储器定位计数器的当前值
二 函 数
1 LOW 表达式返回一个表达式的低字节
2 HIGH 表达式返回一个表达式的第二个字节
3 BYTE2 表达式与HIGH 函数相同
4 BYTE3 表达式返回一个表达式的第三个字节
5 BYTE4 表达式返回一个表达式的第四个字节
6 LWRD 表达式返回一个表达式的 0 15 位
(7) HWRD 表达式返回一个表达式的 16 31 位
8 PAGE 表达式返回一个表达式的 16 21 位
9 EXP2 表达式返回2 表达式
10 LOG2 表达式返回LOG2 表达式的整数部分




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表