- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM 嵌入式系统 ARM汇编程序设计 1 汇编语言源程序 助记符 伪指令 宏指令 汇编指令和机器指令是“一一对应”的 汇编语言程序需由汇编程序将其汇编为机器语言 程序,才能被计算机执行。 汇编语言大体上包括了汇编指令、系统调用和中断、伪指令和宏指令,汇编语言是强烈依赖硬件和汇编环境的。 学习和使用汇编语言程序设计的原因 指令语句(instructions) 完成一定操作功能,能够翻译成机器代码的语句。 伪指令语句(directives, 指示性语句) 为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码。 宏指令语句(marcos) 可看成是由若干条指令语句形成的语句,一条宏指令语句的功能相当于若干条指令语句的功能。 ARM程序设计基础 伪指令 宏与宏指令 ARM汇编语言规范(语句、表达式和运算符) ARM汇编语言的程序格式 2 伪指令 段定义 标号 符号定义伪指令 数据定义伪指令 汇编控制伪指令 其他伪操作 汇编语言程序示例 AREA Block, CODE, READONLY num EQU 10 ENTRY start LDR R0, =src LDR R1, =dst MOV R2, #num blockcopy LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE blockcopy B . AREA BlockData, DATA, READWRITE src DCD 0,1,2,3,4,5,6,7,8,9 dst SPACE 10*4 END 符号定义伪指令 定义全局变量: GBLA、GBLL和GBLS 定义局部变量: LCLA、LCLL和LCLS 变量赋值: SETA、SETL、SETS 通用寄存器列表定义名称:RLIST GBLA、GBLL和GBLS GBLA、GBLL和GBLS 语法格式: GBLA(GBLL或GBLS) 全局变量名 GBLA objectsize ;全局的数字变量objectsize ,为0 Objectsize SETA 0xff ;将该变量赋值为0xff SPACE objectsize ;引用该变量 GBLL statusB ;全局的逻辑变量statusB ,为{False} statusB SETL {TRUE} ;将该变量赋值为真 全局:作用范围为包含该变量的源程序 LCLA、LCLL和LCLS LCLA、LCLL和LCLS 语法格式: LCLA(LCLL或LCLS) 局部变量名 MACRO ;声明一个宏 $label message $a ;宏的原型 LCLS err ;声明一个局部变量err,为空串 err SETS “error no: ” ;向该变量赋值 $label ;代码 INFO 0,err:CC::STR:$a ;使用该串变量 MEND ;宏定义结束 局部:作用范围为包含该局部变量的宏代码的一个实例 SETA、SETL、SETS SETA、SETL和SETS 语法格式: 变量名 SETA(SETL或SETS) 表达式 在向变量赋值前,必须先声明该变量 RLIST RLIST 语法格式: 名称 RLIST {寄存器列表} Context RLIST {r0-r6,r8,r10-r12,r15} ;将寄存器列表名称定义为Context ,可在ARM指令LDM/STM中通过该名称访问寄存器列表。排列顺序无关 数据定义伪指令 DCB DCW(DCWU) DCD(DCDU) DCFD(DCFDU) DCFS(DCFSU) SPACE MAP FIELD DCB DCW(或DCWU) DCD(或DCDU) 语法格式: {标号} DCD(或DCDU) 表达式 DCD:“ ” DCD:字对齐 DCDU:不严格字对齐。 data1 DCD 1,5,20 ;其值为1,5,20 data2 DCD memaddr+4 ;分配一个字单元,其值为程序中标号memaddr加4个字节 DCFD(或DCFDU) 语法格式: {标号} DCFD
文档评论(0)