电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

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

  • 资源ID:89343039       资源大小:1.47MB        全文页数:236页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

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

第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:包含第一个操作数的寄存器; operand2:第二个操作数。,指令中的第二个操作数“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”为寄存器移位后所得的结果。 移位方式如下: 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.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中的数值作为地址,取出此地址中的数值并保存在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. 基址寻址 基址寻址是将基址寄存器的内容与指令中所给出的地址偏移量相加,形成操作数的有效地址。基址寻址一般用于访问基址附近的存储单元。 基址寻址方式示例如下: 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. 堆栈寻址 堆栈是一个按照特定顺序进行存取的存储区,操作顺序为“先进后出”,它使用一个被称做堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的有效数据时,称为满堆栈;当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈。 另外,根据堆栈的生成方式,堆栈又可以分为递增堆栈和递减堆栈。当堆栈由低地址向高地址生成时,称为递增堆栈;当堆栈由高地址向低地址生成时,称为递减堆栈。因此根据以上的划分方式就有4种不同类型的组合。, 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。如指令LDMFA、STMFA等。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。如指令LDMEA、STMEA等。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。如指令LDMFD、STMFD等。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。如指令LDMED、STMED等。,堆栈寻址方式示例如下: STMFD SP! , R0-R5, LR ;将R0R5、LR入栈,满递减堆栈 LDMFD SP! , R0-R5, LR ;数据出栈,放入R0R5、LR寄存器中,满递减堆栈,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)处理指令、加载/存储指令、协处理器指令和异常产生指令。为了更清晰地描述这些指令,有些大类的指令进一步分为几个小类指令来分别介绍。 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****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.