电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ARM嵌入式系统基础及应用第一版 教学课件 ppt 作者 黄俊 全书 第4章

236页
  • 卖家[上传人]:E****
  • 文档编号:89343039
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:1.47MB
  • / 236 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第4章 ARM编程与调试,4.1 ARM指令系统 4.2 ARM汇编语言设计 4.3 ARM C语言设计 4.4 ADS开发平台 4.5 SDT开发平台 4.6 基于JTAG的调试系统 4.7 仿真器调试系统 4.8 本章小结,ARM微处理器是基于精简指令集计算机(RISC)原理设计的。ARM体系提供两种指令集:32位的ARM指令集和16位的Thumb指令集。ARM指令集执行效率高,但是代码密度低。,4.1 ARM指令系统,Thumb指令集是ARM指令集的功能子集,它具有较高的代码密度,同时保持了ARM大多数性能上的优势。ARM程序和Thumb程序可以相互调用,且两种状态之间的切换开销几乎为零。,4.1.1 ARM指令介绍 ARM指令包括数据处理指令、数据传送指令、控制流指令、分支、陷入系统代码。 ARM指令字长为固定的32位,基本格式如下: S, 其中号内的项是必需的,号内的项是可选的。各项的含义如下: opcode:指令助记符,如AND表示逻辑与指令; cond:指令执行条件; S:指令的操作是否影响CPRS寄存器的值;, Rd:目标寄存器; Rn:包含第一个操作数的寄存器; op

      2、erand2:第二个操作数。,指令中的第二个操作数“operand2”有很多表示方法,灵活地使用这些表示方法能够提高代码效率。它包括以下形式。,表4.1 ARM指令编码格式,1. 常数表达式 常数表达式 #immed_8r必须对应8位位图,即是由一个8位的常数通过循环右移偶数位得到。所以不是每一个32位的常数都是合法的,只有通过以上的移位方法得到的常数才是合法的。 合法的常量如下: 0xff,0x3fc,0xff00,0x104,200。 不合法的常量如下: 0x102,0x1010,511,0xff1,0xffff。,常量表达式应用示例如下: MOV R0, #0X104 ;令R0的数值为0X104 AND R1, R2, #0xff ;R2和0xff与,并把结果保存在R1中,2. 寄存器方式 在寄存器方式Rm下,指令的操作数“operand2”为寄存器的数值。 寄存器方式应用示例如下: MOV R1, R3 ;将R3的数值放到R1中 SUB R1, R2, R3 ;R1的数值等于R2的数值减去R3的数值,3. 寄存器移位方式 在寄存器移位方式下,指令的操作数“operand2”为寄

      3、存器移位后所得的结果。 移位方式如下: LSL #m ;逻辑左移m位(1m31) LSR #m ;逻辑右移m位(1m31) ASL #m ;算术左移m位(1m32) ASR #m ;算术右移m位(1m32) ROR #m ;循环右移m位(1m31) RRX ;右移一位,并用CPSR中的C条件标志位填补空出的位,寄存器移位方式应用示例如下: ADD R1, R1, R1, LSL #4 ;R1=R1+R1*24=R1*17 SUB R1, R1, R2, LSR R3 ;R1=R1-R2/2R3 ARM指令中的第2832位是给cond用的,它可以组成16种条件码。当ARM微处理器工作在ARM状态时,所有的指令都是根据CPSR中的条件标志位状态与指令的条件码是否符合来决定是否执行。当执行的条件满足时就执行该命令,否则指令被忽略,转向下一条指令。例如,在跳转指令B后面加上后缀EQ(即BEQ),则表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。 16种条件码的含义及助记符如表4.2所示,其中只有15种可以使用,第16种(1111)为系统保留。,表4.2 16种条件码的含义及助记符,续

      4、表,4.1.2 ARM指令寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM指令的寻址方式有以下几种。 1. 立即寻址 立即寻址又叫做立即数寻址,操作码字段后面的地址部分就是操作数,即数据就包含在指令当中,那么取出指令也就取到了操作数。 立即寻址方式示例如下: MOV R0, #0x104 ;R00x104 ADD R0, R1, #200 ;R0R1 + 200,2. 寄存器寻址 指令中的地址码字段指定了寄存器的编号,将寄存器中的数值作为操作数。执行指令时直接取出寄存器中的数值进行操作,这种寻址方式的效率比较高。 寄存器寻址方式示例如下: SUB R0, R1, R2 ;R0R1-R2 MOV R0, R1 ;R0R1,3. 寄存器间接寻址 寄存器间接寻址指令中的地址码字段给出的是一个通用寄存器的编号,它是以该寄存器中的值作为操作数的地址,而操作数本身存放在存储单元中。 寄存器间接寻址方式示例如下: ADD R1,R2,R3 ;将R3中的数值作为地址,取出此地址中的数值后与R2相加, ;结果保存在R1中 LDR R1,R2 ;将R2中的数值作为地址,

      5、取出此地址中的数值并保存在R1中,4. 寄存器偏移寻址 寄存器偏移寻址是ARM指令集特有的寻址方式,当第2个操作数是寄存器偏移方式时,先将其进行移位操作后再与第一个操作数结合。 寄存器偏移寻址方式示例如下: MOV R0, R1, LSL #1 ;R1中的值左移一位,结果放入R0中,即R0 = R1*2 AND R0, R0, R1, LSR R2 ;R1中的值右移R2位,和R0作逻辑与操作后,结果放 ;入R0中,可采用的移位方式有以下几种: LSL:逻辑左移,寄存器中字的低端空出的位补0。,图4.1 循环移位操作图示, LSR:逻辑右移,寄存器中字的高端空出的位补0。 ASR:算术右移,在移位过程中保持字的符号位不变,即如果原操作数为正数,则在字的高端空出的位补0,否则补1。 ROR:循环右移,即由字的低端移出的位来填补字的高端空出位。 RRX:带扩展的循环右移,操作数右移一位,高端空出的位由原CPSR中的C条件标志位填补。 各移位操作如图4.1所示。,5. 基址寻址 基址寻址是将基址寄存器的内容与指令中所给出的地址偏移量相加,形成操作数的有效地址。基址寻址一般用于访问基址附近的存储

      6、单元。 基址寻址方式示例如下: LDR R0, R1, #0X0C ;将R1中的数值加上#0X0C形成操作数的有效地址,取出 ;此地址中的数值保存在R0中 LDR R0, R1 # -2 ;将R1中的数值减去2形成操作数的有效地址,取出此地址 ;中的数值保存在R0中,然后R1的内容自动减2个字节,6. 多寄存器寻址 多寄存器寻址可以一次传送多个寄存器的值,在一条指令中最多允许传送16个通用寄存器的值。 多寄存器寻址方式示例如下: LDMIA R0!,R1-R4, R7 ;将R0单元中的数据读到R1、R2、R3、R4和R7中, ;R0自动加1 STMIA R0!,R1-R4, R7 ;将R1、R2、R3、R4和R7中的值保存在R0指向的地址 ;单元,R0自动加1,在使用多寄存器寻址方式的时候,寄存器子集的顺序按由小到大的顺序排列,连续的寄存器用连字符“-”连接,否则用“,”分隔。,7. 堆栈寻址 堆栈是一个按照特定顺序进行存取的存储区,操作顺序为“先进后出”,它使用一个被称做堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的有效数据时,称为满堆栈;

      7、当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈。 另外,根据堆栈的生成方式,堆栈又可以分为递增堆栈和递减堆栈。当堆栈由低地址向高地址生成时,称为递增堆栈;当堆栈由高地址向低地址生成时,称为递减堆栈。因此根据以上的划分方式就有4种不同类型的组合。, 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。如指令LDMFA、STMFA等。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。如指令LDMEA、STMEA等。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。如指令LDMFD、STMFD等。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。如指令LDMED、STMED等。,堆栈寻址方式示例如下: STMFD SP! , R0-R5, LR ;将R0R5、LR入栈,满递减堆栈 LDMFD SP! , R0-R5, LR ;数据出栈,放入R0R5、LR寄存器中,满递减堆栈,8. 块复制寻址 块复制寻址也是一种多寄存器传送指令,它用于将一块数据从存储器的某一位置复制到另一位置。 块复制寻址方式示例如下

      8、: STMDA R0!, R1-R5 ;将R1R5的数据保存到存储器中,存储器指针在保存第一 ;个值之后增加,增长方向为向下增长 STMDB R0!, R1-R5 ;将R1R5的数据保存到存储器中,存储器指针在保存第一,;个值之前增加,增长方向为向下增长 STMIA R0!, R1-R5 ;将R1R5的数据保存到存储器中,存储器指针在保存第一 ;个值之后增加,增长方向为向上增长 STMDB R0!, R1-R5 ;将R1R5的数据保存到存储器中,存储器指针在保存第一 ;个值之前增加,增长方向为向上增长,9. 相对寻址 相对寻址方式与基址寻址类似,它以程序寄存器PC提供的当前值为基地址,指令中的地址码作为偏移量,两者相加后得到的地址作为操作数的有效地址。 相对寻址方式示例如下: BL SUBR1 ;调用到SUBR1子程序 BEQ LOOP ;条件跳转到LOOP标号处 LOOP MOV R1, #3 ,SUBR1 跳转指令BL用的是相对寻址方式。,4.1.3 ARM指令集介绍 ARM指令集可以分为6大类,即跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指

      9、令和异常产生指令。为了更清晰地描述这些指令,有些大类的指令进一步分为几个小类指令来分别介绍。 1. 跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序的跳转:一是使用跳转指令;另一种是直接向PC寄存器中写入目标地址值。通过后一种方式可以实现在4 GB空间中的任意跳转。,如果在跳转之前结合使用“MOV LR, PC”等指令,可以保存返回地址值,从而实现了在4 GB连续的线性地址空间中进行子程序的调用。 ARM跳转指令可以实现从当前指令向前或向后32 MB的地址空间内的跳转,它包括以下4类指令:,(1) B指令跳转指令。 格式:Bcond B指令是最简单的跳转指令。当遇到B指令时,ARM处理器就立即跳转到给定的地址处,从那里开始执行。需要注意的是,指令中的地址是相对当前PC值的一个偏移量,而不是目标地址。目标地址应是先将指令中的24位带符号的补码立即数扩展为32位(扩展其符号位),再将此32位数左移两位得到的值与PC寄存器的值相加所得的结果。,(2) BL指令带返回的跳转指令。 格式:BLcond BL跳转指令常用于实现子程序的调用。跳转之前,在寄存器R14中保存PC的当前内容,返回时通过将R14的内容重新装载到PC中来实现。,(3) BLX指令带返回和切换的跳转指令。

      《ARM嵌入式系统基础及应用第一版 教学课件 ppt 作者 黄俊 全书 第4章》由会员E****分享,可在线阅读,更多相关《ARM嵌入式系统基础及应用第一版 教学课件 ppt 作者 黄俊 全书 第4章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.