易利pc蛋蛋连接_avr宏汇编和表达式

2019-11-15来源: 51hei关键字:avr  宏汇编  表达式

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

定义宏初始化存储器等全部伪指令在表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 表达式的整数部分


关键字:avr  宏汇编  表达式 编辑:什么鱼 引用地址:http://news.socialskive.com/mcu/ic480104.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。易利pc蛋蛋连接如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过上海快三app赚钱—主页-彩经_彩喜欢子邮件或上海快三app赚钱—主页-彩经_彩喜欢话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:avr单片机的内部结构
下一篇:avr单片机使用注意点

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR编程_如何通过软件复位AVR?
Question如何通过软件复位AVR?Answer如果你想通过软件复位AVR,你应该使用内部看门狗。简单的使能它和让它溢出。当看门狗触发后,程序计数器返回到0,清除所有的寄存器和其他正在执行的任务,这与将RESET脚拉低有同样的效果。你不应该处理: --用另一个AVR的引脚连接外部RESET引脚。在短暂的复位时间,AVR的引脚会三态失效,这会导致RESET无效。 --跳到程序地址0,跳到程序地址0,这不会清除全部的寄存器,所以你不会得到一个完整的“复位”。下列是每30mS复位一次AVR的例子代码(GCC):#include <avr/io.h>#include <avr/wdt.h>int main
发表于 2019-12-11
AVR(M48)的i2c程序,读写at24c02
//ICC-AVR application builder : 2007-12-5 17:34:01// Target : m48// Crystal: 1.0000Mhz#include <iom168v.h>#include <macros.h>#include <myfun.h>//#include <I2C.h>#define START 0x08#define ReSTART 0x10#define MT_SLA_ACK 0x18#define MT_DATA_ACK 0x28#define MR_SLA_ACK 0x40#define MR_DATA_ACK
发表于 2019-12-11
AVR ATMEGA8 串口USART
avr串口配置很简单,配置就几个寄存器就可以进收发;但有几点要搞明白的是:1、串口一但被配置成功IO功能自动被占用,这点与LPC或STM8/32不同(需要寄存配置);2、没有专门的串口开起或闭关功位(整个串口);3、读写控制寄存器C需要把URSEL位写成1,而读写UBRRH寄存器时须要URSEL写成0;   1: //晶振频率     2: #define F_CPU 6000000UL     3: //波特率     4: #define BAUD 9600  
发表于 2019-12-10
avr官方充上海快三app赚钱—主页-彩经_彩喜欢器
我主要做的是对LiIon上海快三app赚钱—主页-彩经_彩喜欢池进行充上海快三app赚钱—主页-彩经_彩喜欢,用到的主要是AVR的相位修正PWM和ADC,AVR--PWM分为三种:1.快速PWM模式--单斜边工作模式,计数器从BOTTOM到TOP,对于普通比较模式OCnx在TCNTn与OCRnx匹配时置位,在TOP时清零,PWM频率fpwm = fclk/(N(1+TOP)),N为分频系数。              2.相位修正PWM模式--双斜边工作模式, 计数器重复的从BOTTOM到TOP,然后又从TOP退到BOTTOM,一般工作模式下,往TOP计数时OCnx在TCNTn与OCRnx匹配时清零,往BOTTOM计数时置位,fpwm
发表于 2019-12-10
ubuntu下gcc-avr安装
易利pc蛋蛋连接ubuntu下研究arduino时发现,原来可以不用arduino IDE开发,linux下还有gcc-avr直接开发avr系列的控制器。易利pc蛋蛋连接于是,迫不及待的查看了下相关资料,总结一下安装gcc-avr的步骤。PS:感叹一下,现在ubuntu做得实在是太好用了,以前很费心的事情,现在都很简单了。1、更新下系统,并安装开发包。apt updateapt upgradeapt install build-essential2、安装gcc-avr的工具链。易利pc蛋蛋连接apt install gcc-avr avr-libc avrdude gdb-avr3、安装相关软件的帮助文档。apt install avrdude-doc gcc-doc
发表于 2019-12-10
打造最强Eclipse-嵌入式开发环境(AVR)
,所以当前MinGW是最好的选择,当然你也可以选择CodeBlocks、C-free等等以上安装都比较简单,在网上检索相关博客即可,需要注意的是要添加必要的系统环境变量。易利pc蛋蛋连接为此我使用批处理脚本做了一个插件,敬请期待我的其他博文。推荐其他相关博文:搭建Eclipse IDE AVR开发平台搭建AVR-C语言开发环境eclipse+winavreclipse 环境搭建_百度经验我将其分别安装在D:CODEMinGW   D:CODEeclipse-Luna目录下,这样便于管理我的Eclipse必备插件列表: AVR-Eclipse       辅助配置AVR项目  
发表于 2019-12-10
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

上海快三app赚钱—主页-彩经_彩喜欢子工程世界版权所有 京ICP证060456号 京ICP备10001474号 上海快三app赚钱—主页-彩经_彩喜欢信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 socialskive.com, Inc. All rights reserved