资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,精选2021版课件,*,第,2,章,ARM Cortex-M0+,处理器,主要内容:,2.1,ARM,处理器应用概述,2.2,ARM Cortex-M0+,处理器简介,2.3,ARM Cortex-M0+,处理器的指令系统,2.4,ARM Cortex-M0+,汇编语言的基本语法,2.5,本章小结,1,精选2021版课件,2,.1,ARM,处理器应用概述,ARM,即,Advanced RISC Machines,的缩写。,1985,年,4,月,26,日,第一个,ARM,原型在英国剑桥的,Acorn,计算机有限公司诞生,由美国加州,SanJoseVLSI,技术公司制造。目前,,ARM,微处理器已遍及各类嵌入式产品市场,基于,ARM,技术的微处理器的应用,约占据了,32,位,RISC,微处理器,75,以上的市场份额,,ARM,技术正在逐步渗入到我们生活的各个方面。,2,精选2021版课件,ARM,公司在经典处理器,ARM11,以后的产品统一改用,Cortex,命名,并分成,A50,、,A,、,R,和,M,四类,旨在为各种不同的市场提供服务。,1,ARM Cortex-A50,系列处理器,该系列处理器是面向高效的低功耗服务器市场领域。,2,ARM Cortex-A,系列处理器,该系列处理器是面向尖端的基于虚拟内存的操作系统和用户应用。,3,ARM Cortex-R,系列处理器,该系列处理器是针对实时系统,为具有严格的实时响应限制的嵌入式系统提供高性能计算解决方案。,4,ARM Cortex-M,系列处理器,该系列处理器是一系列可向上兼容的高能效、易于使用的处理器,旨在帮助开发人员满足将来的嵌入式应用的需要。,3,精选2021版课件,2,.2,ARM Cortex-M0+,处理器简介,2012,年,3,月,14,日,,ARM,公司于中国上海发布了一款拥有全球最低功耗的微处理器,ARM Cortex-M0+,。该处理器不仅延续了易用性、,C,语言编程模型等优势,而且能够兼容已有的,Cortex-M0,处理器的工具。,4,精选2021版课件,2.2.1 ARM Cortex-M0+,处理器特点与结构图,5,精选2021版课件,2.2.2 ARM Cortex-M0+,处理器存储器映像,存储器系统支持所谓的“位带”(,bit-band,)操作及小端配置和大端配置。,6,精选2021版课件,2.2.3 ARM Cortex-M0+,处理器的寄存器,7,精选2021版课件,2.3 ARM Cortex-M0+,处理器的指令简表,其共有,57,条基本指令,依据不同的寻址方式形成,68,条具体指令,2.3.1 ARM Cortex-M0+,指令简表与寻址方式,1.ARM Cortex-M0+,指令简表,8,精选2021版课件,2.ARM Cortex-M0+,指令寻址方式,1,)立即数寻址,立即数范围是,0 x000 xff,SUB R1,R0,#1 R1R0-1,2,)寄存器寻址,操作数来自于寄存器,MOV R1,R2 R1 R2,3,)直接寻址,操作数来自存储单元,LDR Rt,label ,从标号,label,处连续取,4,字节至 寄存器中,4,)偏移及寄存器间接寻址,操作数来自存储单元,LDR R3,PC,#100 ,地址为(,PC+100,)的存储器单元的内容加载到寄存器,R3,中,9,精选2021版课件,2.3.2,数据传送类指令,1,生成与指针,PC,相关地址指令,2,取数指令,10,精选2021版课件,3.,存数指令,4,寄存器间数据传送指令,5,堆栈操作指令,11,精选2021版课件,2.3.3,数据操作类指令,1,算术运算类指令,2,逻辑运算类指令,12,精选2021版课件,3,数据序转指令,4,扩展类指令,5,位测试指令,13,精选2021版课件,6,移位类指令,14,精选2021版课件,2.3.4,跳转控制类指令,2.3.5,其他指令,例如断点指令、中断指令、屏蔽指令等,15,精选2021版课件,2.4 ARM Cortex-M0+,汇编语言的基本语法,2.4.1,汇编语言格式,汇编语言源程序以行为单位进行设计,每一行最多可以包含以下四个部分。,标号:操作码 操作数 注释,1.,标号,如果一个语句有标号,则标号必须 书写在汇编语句的开头部分,命名规则与,C,变 量相同。其值是本条语句的,PC,(,程序计数器,),值。,2.,操作码,操作码包括指令码和伪指令。对于有标号的行,必须用至少一个空格或制表符(,TAB,)将标号与操作码隔开。对于没有标号的行,不能从第一列开始写指令码,应以空格或制表符(,TAB,)开头。编译器不区分操作码中字母的大小写。,16,精选2021版课件,3.,操作数,可以是地址、标号或指令码定义的常数,也可以是由伪运算符构成的表达式。,1,)常数标识,十进制(默认)十六进制(,0 x,)二进制(,0b,),2)“#”,表示立即数,一个常数前添加“,#”,表示一个立即数,不加“,#”,时,表示一个地址。,3,)圆点“,.,”,若圆点“,.”,单独出现在语句的操作码之后的操作数位置上,则代表当前程序计数器的值被放置在圆点的位置。,17,精选2021版课件,4,)伪运算符,4.,注释,类,C,多行注释以“,/*”,开始,以“*,/”,结束,且可以用“,”,“,#,”引导单行注释。,18,精选2021版课件,2.4.2,伪指令,伪指令是没有对应机器码的指令,只能为编译器所识别并指导汇编如何进行。主要用于变量和常量以及宏的定义、条件判断、文件包含等。,1.,变量定义,变量表示存储单元,这种存储单元中存放数值,;,标号也可以表示存储单元,这种存储单元中存放机器指令代码。所以变量和标号均可表示存储器操作数。,.section.data .data,含义是将下面的标号声明为变量,var1:.byte ,定义字节变量,var1,,未赋初值。整条语句含义是:以标号,var1,开始定义一个数据区,var2:.byte 0 x56 ,定义字节变量,且初值为,0 x56,19,精选2021版课件,2.,字符常数与字符串常数定义,1,)字符常数,有两种字符常数。一种字符占一个字节,如,A,;另一种是组合字符,可包含多个字符。,2,)字符串常量,利用,ASCII,与,ASCIZ,可以定义字符串常数:,.section.rodata .rodata,含义是将下面的标号声明为常量,Label2,:,.ascii,字符串,直接定义,ascii,码字符串,Label3,:,.asciz,字符串,定义,ASCII,码字符串,但末尾增加,0 x00,20,精选2021版课件,3.,条件伪指令及文件包含伪指令,1,)条件伪指令,if,条件伪指令后面紧跟着一个恒定的表达式,(,即该表达式的值为真,),。并且最后要以,.endif,结尾。中间如果有其他条件,可以用,.elseif,或者,.else,填写汇编语句。,.ifdef,标号,表示如果标号被定义,执行下面的代码。,2,)文件包含伪指令,.include “filename”,.include,是一个附加文件的链接指示命令,利用它可以把另一个源文件插入当前的源文件一起汇编,成为一个完整的源程序。,21,精选2021版课件,4.,有限循环伪指令,1),该循环以,.irp,开始,,.endr,结束。例如:,.irp param,1,2,3,mov rparam,#4,.endr,编译器转换成下面的汇编 语句执行:,mov r1,#4,mov r2,#4,mov r3,#4,2),还有一种循环以,.rept,开头,以,.endr,结尾。,.rept 3,ADD r1,#4,.endr,编译器转换成下面的汇编 语句执行:,ADD r1,#4,ADD r1,#4,ADD r1,#4,22,精选2021版课件,5.,宏定义及宏调用伪指令,宏定义伪指令:,macroname:.macro arg0,arg1,arg3,.endm,定义一个宏,以,macroname.macro,开始,以,.endm,结束。在宏内部表达式中,可以用,.mexit,伪指令直接退出宏,放弃后面命令。,macro,后面的参数是宏被调用时的参数,定义的宏名称不能与汇编指令及汇编伪指令名称相冲突,可以是标识符。,宏调用伪指令:,macroname arg0,args,【,例如,】,定义一个宏执行一段代码,执行一段命令,name .macro labelA,mov r2,L3+labelA,.endm,调用这个宏,name,方法如下:,name 4,这个宏等同于如下程序段:,mov r2,L3+4,23,精选2021版课件,2.5,本章小结,本章简要概述了,ARM Cortex,处理器,重点介绍,ARM Cortex-M0+,的内部结构功能特点及汇编指令,有助于读者更深层次的理解和学习,ARM Cortex-M0+,软硬件的设计。,学习和记忆,ARM Cortex-M0+,基本指令对理解处理器特性十分有益的。本章给出的,ARM Cortex-M0+,指令简表可以方便读者记忆基本指令。,24,精选2021版课件,
展开阅读全文