×
单片机 > 单片机程序设计 > 详情

avr宏汇编和表达式

发布时间:2020-06-04 发布时间:
|

汇编器提供一些伪指令伪指令并不直接转换成操作数而是用于调整存储器中程序的位置

定义宏初始化存储器等全部伪指令在表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单片机CO2检测显示程序解析