1 / 101
文档名称:

第4章arm汇编语言程序设计.ppt

格式:ppt   大小:1,390KB   页数:101页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第4章arm汇编语言程序设计.ppt

上传人:1557281760 2018/7/18 文件大小:1.36 MB

下载得到文件列表

第4章arm汇编语言程序设计.ppt

相关文档

文档介绍

文档介绍:1
第4章 ARM汇编语言程序设计
ARM汇编伪指令与伪操作
ARM 汇编语言的语句格式
ARM 汇编语言的程序格式
ADT IDE集成开发环境
ARM汇编语言程序设计举例
汇编语言与C语言的混合编程
2
ARM汇编伪指令与伪操作
汇编语言伪指令
ARM汇编伪操作
GNU ARM汇编伪操作
3

伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,只是在汇编时被翻译成ARM或者Thumb(或Thumb-2)指令(或指令序列),从而实现真正的指令操作。
ARM伪指令包含ADR、ADRL、LDR等。
4
1)小范围地址读取伪指令ADR
格式
ADR{cond}{.W} register,label
功能
将基于PC相对偏移地址或基于寄存器相对偏移地址值读取到寄存器中
字节地址对齐时,取值范围为−255~255
字地址对齐时,取值范围为−1020~1020
16字节地址对齐时其取值范围更大
ADR伪指令被汇编器编译成一条指令。汇编器通常使用ADD指令或SUB指令来实现伪操作的地址装载功能。如果不能用一条指令来实现ADR伪指令的功能,汇编器将报告错误。
5
2)中等范围地址读取伪指令ADRL
格式
ADRL{cond} register,label
功能
将基于PC相对偏移的地址或基于寄存器相对偏移的地址值读取到寄存器中
字节地址对齐时,取值范围为−64~64KB;
字地址对齐时,取值范围为−256~256KB。
16字节地址对齐时,其取值范围更大。
ADRL伪指令被编译器换成两条指令。即使一条指令可以完成该操作,编译器也将产生两条指令,其中一条为多余指令。如果汇编器不能在两条指令内完成操作,将报告错误,中止编译。
6
格式
LDR{cond}{.W} register,=[expr | label-expr]
功能
将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。
如果加载的常数符合MOV或MVN指令立即数的要求,则用MOV或MVN指令替代LDR伪指令。
如果加载的常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入数据缓存池,并使用一条程序相对偏移的LDR指令从数据缓存池读出常量。
3)大范围地址读取伪指令LDR
7
示例
将常数0xff0读到R3中。
LDR R3,=0xff0 ;
汇编后将得到:
MOV R3,#0xff0
将常数0xfff读到R1中。
LDR R1,=0xfff ;
汇编后将得到:
LDR R1,[pc,offset_to_litpool]

litpool DCD 0xfff
8
将place标号地址读入R1中。
LDR R2,=place ;
汇编后将得到:
LDR R2,[pc,offset_to_litpool]

litpool DCD place
9
2. ARM汇编伪操作
伪操作(Directive)是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。
伪操作只是汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。
ARM公司推出的开发工具所支持的汇编伪操作
符号定义伪操作
数据定义伪操作
汇编控制伪操作
杂项伪操作
10
1)符号定义伪操作
(1)全局变量定义GBLA、GBLL及GBLS
(2)局部变量定义LCLA、LCLL及LCLS
格式:GCLA/ GCLL/ GCLS variable
格式:LCLA/ GCLL/ GCLS variable
说明
variable -全局/局部变量名称
A-算术变量(初始化为0)
L-逻辑变量(初始化为假F)
S-字符串变量(初始化为空)