- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言都具有一些相同的基本特征。
① 一条指令一行
② 使用标号(label)给内存单元提供名称,从第1列开始书写
③ 指令必须从第2列或能区分标号的地方开始书写
④ 注释跟在指定的注释字符后面(ARM使用的是“;”),一直书写到行尾。
ARM汇编语言基本的的语句格式如下:
?
{symbol} {instruction |directive | pseudo-instruction} {;comment}
符号 指令、伪操作或伪指令 [; 注释] ;① 符号由大小写字母、数字及下画线组成,符号不能用数字开头。
② 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。
③ 符号在其作用范围内必须唯一。
④ 自定义的符号名不能与系统的保留字相同。
⑤ 符号名不应与指令或伪指令同名。
;伪操作(Directive)是ARM汇编语言程序里的一些特殊的指令助记符
作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。
不同的编译程序所使用的伪操作有所不同。
;两种常见的ARM编译开发环境;ARM汇编语言伪操作;伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,只是在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。
;ARM汇编语言伪指令;在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。
ADR伪指令中的地址是基于PC或寄存器的,当ADR伪指令中的地址是基于PC时,该地址与ADR伪指令必须在同一个代码段中。
地址表达式expr的取值范围如下:
当地址值是字节对齐时,其取指范围为?255B~255B;
当地址值是字对齐时,其取指范围为?1020B~1020B。;ARM伪指令——小范围的地址读取; ...
0x20 ADD r1,pc,#0x3c
...
...
0x64 MOV r0,r14
...;ARM伪指令——小范围的地址读取;ARM伪指令——小范围的地址读取;ADRL比ADR伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。
地址表达式expr的取值范围如下:
当地址值是字节对齐时,其取指范围为?64KB~64KB;
当地址值是字对齐时,其取指范围为?256KB~256KB。
示例:?
LOOP MOV r0,#10 ; LOOP为行标,指示某一行代码
ADRL r4,LOOP ; 将LOOP地址放入r4(相对地址)
因为PC值为当前指令地址值加8字节,替换成本ADR伪指令将被编译器编译为
SUB r4,PC,#0xc
NOP (MOV r0,r0)
;ARM伪指令——中等范围的地址读取;ARM伪指令——中等范围的地址读取;ARM伪指令——中等范围的地址读取;在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。
示例:
LDR r1,=0xff ; 将0xff读取到r1中
; 编译后得到MOV r1,0xff
示例:
LDR r1, =ADDR ; 将外部地址ADDR读取到R1中?
汇编后将得到:
LDR r1,[PC,OFFSET_TO_LPOOL]
…
LPOOL DCD ADDR
;符号定义伪操作主要用于ARM汇编程序中定义变量,对变量赋值以及定义寄存器的别名等操作。常见的符号定义伪操作有如下几种:
① 用于定义全局变量的GBLA、GBLL以及GBLS。
② 用于定义局部变量的LCLA、LCLL以及LCLS。
③ 用于对变量赋值的SETA、SETL以及SETS。
④ 为一个协处理器定义名称用CP。
⑤ 为一个通用寄存器列表定义别名用RLIST。
;;数据定义伪操作一般用于特定的数据分配存储单元,同时可完成已匹配存储单元的初始化。常见的数据定义伪操作有如下几种:
① DCB/W/D 用于分配一片连续字节存储单元并用指定的数据初始化,其中B表示byte,W表示半字(word),D表示字长(double),在ARM处理器里即4个字节。
② MAP用于定义一个结构化的内存表首地址,与FIELD配合使用。
③ FIELD用于定义
您可能关注的文档
- 嵌入式开发板无界面linux文件系统的制作.pdf
- 配方中猪料原料的选择与应用(猪料选择与应用).pptx
- 嵌入式课程设计课程设计报告高志付.doc
- 配送系统优化.ppt
- 配送中心规划第一.ppt
- 嵌入式课件第讲GNUC开发工具链.ppt
- 嵌入式课件第讲LINUXC程序设计.ppt
- 嵌入式课件第讲嵌入式系统DMA控制页.ppt
- 嵌入式课件第讲时间管理页.ppt
- 配送中心绪论.pptx
- 2024年沧州市公务员考试行测真题及答案详解(名师系列).docx
- 粮油食品检验人员复习提分资料带答案详解(精练).docx
- 粮油食品检验人员自我提分评估(考点精练)附答案详解.docx
- 粮油食品检验人员全真模拟模拟题附参考答案详解(精练).docx
- 2025年延安市公务员考试行测试卷历年真题附答案详解(突破训练).docx
- 2025年株洲市公务员考试行测试卷历年真题含答案详解.docx
- 2024年枣庄市公务员考试行测真题及完整答案详解1套.docx
- 2024年抚顺市公务员考试行测真题及答案详解(各地真题).docx
- 2025年常州市公务员考试行测真题及一套参考答案详解.docx
- 2023年德州市公务员考试行测试卷历年真题及1套完整答案详解.docx
最近下载
- Sorensen索伦森 SGA大功率程控直流电源操作手册.pdf
- DB32T 4013-2021第三方社会稳定风险评估技术规范.docx
- 《给水排水管道工程施工及验收规范》GB50268-2008.pdf VIP
- 化妆品产品稳定性测试记录表(一)( A1 ).xls VIP
- 广东省深圳市生地会考真题试卷及答案.docx VIP
- 可感染人类的高致病性病原微生物菌(毒)种或样本运输管理规定44页.docx VIP
- (高清版)ZT 0341-2020 矿产地质勘查规范 建筑用石料类.pdf VIP
- 《大国航母与舰载机》期末考试答案.docx VIP
- 海运出口流程.pptx VIP
- 三类医疗器械培训计划.docx VIP
文档评论(0)