1 / 101
文档名称:

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

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

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

分享

预览

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

上传人:1557281760 2019/11/22 文件大小:597 KB

下载得到文件列表

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

文档介绍

文档介绍:,它不在处理器运行期间由机器执行,只是在汇编时被翻译成ARM或者Thumb(或Thumb-2)指令(或指令序列),从而实现真正的指令操作。ARM伪指令包含ADR、ADRL、LDR等。31)小范围地址读取伪指令ADR格式ADR{cond}{.W}register,label功能将基于PC相对偏移地址或基于寄存器相对偏移地址值读取到寄存器中字节地址对齐时,取值范围为−255~255字地址对齐时,取值范围为−1020~102016字节地址对齐时其取值范围更大ADR伪指令被汇编器编译成一条指令。汇编器通常使用ADD指令或SUB指令来实现伪操作的地址装载功能。如果不能用一条指令来实现ADR伪指令的功能,汇编器将报告错误。42)中等范围地址读取伪指令ADRL格式ADRL{cond}register,label功能将基于PC相对偏移的地址或基于寄存器相对偏移的地址值读取到寄存器中字节地址对齐时,取值范围为−64~64KB;字地址对齐时,取值范围为−256~256KB。16字节地址对齐时,其取值范围更大。ADRL伪指令被编译器换成两条指令。即使一条指令可以完成该操作,编译器也将产生两条指令,其中一条为多余指令。如果汇编器不能在两条指令内完成操作,将报告错误,中止编译。5格式LDR{cond}{.W}register,=[expr|label-expr]功能将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。如果加载的常数符合MOV或MVN指令立即数的要求,则用MOV或MVN指令替代LDR伪指令。如果加载的常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入数据缓存池,并使用一条程序相对偏移的LDR指令从数据缓存池读出常量。3)大范围地址读取伪指令LDR6示例将常数0xff0读到R3中。LDRR3,=0xff0;汇编后将得到:MOVR3,#0xff0将常数0xfff读到R1中。LDRR1,=0xfff;汇编后将得到:LDRR1,[pc,offset_to_litpool]…litpoolDCD0xfff7将place标号地址读入R1中。LDRR2,=place;汇编后将得到:LDRR2,[pc,offset_to_litpool]…(Directive)是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。伪操作只是汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。ARM公司推出的开发工具所支持的汇编伪操作符号定义伪操作数据定义伪操作汇编控制伪操作杂项伪操作91)符号定义伪操作(1)全局变量定义GBLA、GBLL及GBLS(2)局部变量定义LCLA、LCLL及LCLS格式:GCLA/GCLL/GCLS variable格式:LCLA/GCLL/GCLS variable说明variable-全局/局部变量名称A-算术变量(初始化为0)L-逻辑变量(初始化为假F)S-字符串变量(初始化为空)10