资源描述:
《《AVR单片机》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AVR单片机原理及应用陈渊睿Tel:13002086301E-mail:ep02@163.com华南理工大学电力学院第四章汇编语言程序设计4.1汇编语言基础汇编语言源文件是由汇编语言代码和汇编程序指令所组成的ASCII字符文件。汇编语言源文件包括指令助记符、标号和伪指令。指令助记符和伪指令常带操作数4.1.1汇编语句格式程序输入行有下列4种形式:①【标号】伪指令【操作数】【注释】。②【标号】指令【操作数】【注释】。③注释。④空行。例子:Label:.EQUVar1=100;置Var1等于100伪指令.EQUV
2、ar2=200;置Var2等于200test:rjmptest;无限循环指令;纯注释行注意:不限制有关标号伪指令注释或指令的列位置4.1.2汇编器伪指令伪指令并不直接转换成操作数,而是用于调整存储器中程序的位置,定义宏,初始化存储器等伪指令表序号伪指令说明序号伪指令说明1BYTE在RAM中定义预留存储单元10EXIT退出文件2CSEG声明代码段11INCLUDE包含指定的文件3DB定义字节常数12MACRO宏定义开始4DEF定义寄存器符号名13ENDMACRO宏定义结束5DEVICE指定为何器件生成汇编代码1
3、4LISTMAC列表宏表达式6DSEG声明数据段15LIST列表文件生成允许器7DW定义字常数16NOLIST关闭列表文件生成8EQU定义标识符常量17ORG设置程序起始位置9ESEG声明E2PROM段18SET赋值给标识符表达式汇编器的表达式由操作数、运算符和函数组成。所有的表达式内部为32位(二进制)操作数(1)用户定义的标号,该标号给出了放置标号位置的定位计数器的值(2)用户用SET伪指令定义的变量(3)用户用EQU伪指令定义的常数(4)整数常数,包括下列几种形式·十进制缺省值10255·十六进制数二进
4、制表示法0x0a,$0a,0xff.$ff二进制数0b00001010,0b11111111(5)PC,程序存储器定位计数器的当前值汇编器的函数(而非单片机内的函数)有LOW、HIGH、BYTE2、BYTE3……汇编器所认的运算符部分运算符表序号运算符名称优先级说明1!逻辑非14单目运算符,表达式是0则返回1,表达式是1则返回02~逐位非14单目运算符,将表达式的值按位取反3-负号14单目运算符,使表达式为算术负4*乘法13双目运算符,两个表达式相乘5/除法13双目运算符,左边表达式除以右边表达式,得整数的商
5、值6+加法12双目运算符,两个表达式相加7-减法12双目运算符,左边表达式减去右边表达式8<<左移11双目运算符,左边表达式值左移右边表达式给出的次数9>>右移11双目运算符,左边表达式值右移右边表达式给出的次数10<小于10双目运算符,左边带符号表达式值小于右边带符号表达式值,则为1,否则为011<=小于等于10双目运算符,左边带符号表达式值小于或等于右边带符号表达式值,则为1,否则为012>大于10双目运算符,左边带符号表达式值大于右边带符号表达式值,则为1,否则为013>=大于等于10双目运算符,左边带
6、符号表达式值大于或等于右边带符号表达式值,则为1,否则为014==等于9双目运算符,左边带符号表达式值等于右边带符号表达式值,则为1,否则为015!=不等于9双目运算符,左边带符号表达式值不等于右边带符号表达式值,则为1,否则为016&逐位与8双目运算符,两个表达式值之间逐位与17^逐位异或7双目运算符,两个表达式值之间逐位异或18
7、逐位或6双目运算符,两个表达式值之间逐位或19&&逻辑与5双目运算符,两个表达式值之间逻辑与,全非0则为1,否则为020
8、
9、逻辑或4双目运算符,两个表达式值之间逻辑或,非0则为1
10、,全0为04.2简单与分支程序设计4.2.1简单程序设计也称顺序程序或直接程序.include“m8def.inc”ldixl,$61ldixh,$00ldsr16,$0060movr17,r16andir16,$0forir16,$30stx+,r16swapr17andir17,$0forir17,$30stx+,r17here:rjmphere.exit4.2.1分支程序设计又称散转程序.include“m8def.inc”.SETVAR=0X0070.SETFUNC=0X0071.ORG$000RJM
11、PMAIN.ORG0X0013MAIN:LDSR16,VARTSTR16BREQDONEBRPLPOSILDIR16,$FF;R16←-1RJMPDONEPOSI:LDIR16,$01DONE:STSFUNC,R16HERE:RJMPHERE.EXIT4.3循环与查表程序设计4.3.1循环程序设计例4.9:已知SRAMADDR($0062)为起始地址的数据块的数据是无符号数,块长在LEN($0061