嵌入式杂项指令.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式杂项指令

指令集之杂项指令 组长:XX 组员:XXX 杂项指令介绍 * 周立功单片机 ARM指令集中有四条指令作为杂项指令,实际上这四条指令非常重要。它们如下所示: MSR{cond} psr_fields←Rd/#immed_8r,psr为 CPSR或SPSR 写状态寄存器指令 MSR BKPT immed_16 使ARM处理器进入Debug模式 断点指令 BKPT MRS{cond} Rd←psr,psr为CPSR或SPSR 读状态寄存器指令 MRS SWI{cond} 产生软中断,处理器进入管理模式 软中断指令 SWI 条件码位置 操作 说明 助记符 ARM杂项指令——SWI(软中断指令) SWI指令用来实现在用户模式下的程序调用 管理模式中的代码,从而实现在从户模式变换到管理模式,并且将CPSR保存到管理模式的SPSR中。主要用于用户程序调用操作系统的系统服务,操作系统在SWI异常处理程序中进行相应的系统服务,执行时不影响条件标志位。 SWI{cond} immed_24 SWI指令格式 SWI指令编码 指令执行的条件码 指令传递的参数(24位立即数) ARM杂项指令——SWI(软中断指令) 根据SWI指令传递的参数SWI异常处理程序可以作出相应的处理。SWI指令传递参数有以下两种方法, 指令中的24位立即数指定了用户请求的服务类型,参数通过通用寄存器传递。 MOV R0,#34 ;设置子功能号为34 SWI 12 ;调用12号软中断 指令中的24位立即数被忽略,用户请求的服务类型由寄存器R0的值决定,参数通过其它的通用寄存器传递。 MOV R0,#12 ;调用12号软中断 MOV R1,#34 ;设置子功能号为34 SWI 0 ARM杂项指令——SWI(软中断指令) 在SWI异常中断处理程序中,取立即数的步骤为: 通过对SPSR访问确定是ARM指令还是Thumb指令; 然后取该SWI指令的地址,可通过访问LR寄存器得到; 接着读出该SWI指令,分解出立即数。 SWI_Handler STMFD SP!, {R0-R3, R12, LR} ; 现场保护 MRS R0, SPSR ; 读取SPSR STMFD SP!, {R0} ; 保存SPSR TST R0, #0x20 ; 测试T标志位 LDRNEH R0, [LR,#-2] ; 若是Thumb指令,读取指令码(16位) BICNE R0, R0, #0xFF00 ; 取得Thumb指令的8位立即数 LDREQ R0, [LR,#-4] ; 若是ARM指令,读取指令码(32位) BICEQ R0, R0, #0xFF000000 ; 取得ARM指令的24位立即数 ... LDMFD SP!, {R0-R3, R12, PC}^ ; SWI异常中断返回 ARM杂项指令——MRS(状态寄存器读指令) 在ARM处理器中,只有MRS指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以了解当前处理器的工作状态。读SPSR寄存器可以了解到进入异常前的处理器状态。 MRS{cond} Rd,psr MRS指令格式 指令对应编码 指令执行的条件码 目标寄存器,不能为R15 区别CPSR(为0)和SPSR(为1)寄存器 ARM杂项指令——MRS(状态寄存器读指令) 在ARM处理器中,只有MRS指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以了解当前处理器的工作状态。读SPSR寄存器可以了解到进入异常前的处理器状态。 MRS{cond} Rd,psr MRS指令格式 应用示例: MRS R1,CPSR ; 将CPSR状态寄存器读取,保存到R1中 MRS R2,SPSR ; 将SPSR状态寄存器读取,保存到R2中 ARM杂项指令——MSR(状态寄存器写指令) 在ARM处理器中,只有MSR可对CPSR和SPSR进行写操作。与MRS配合使用,可实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。 MSR{cond} psr_fields,#immed_8r MSR指令格式1 MSR{cond} psr_fields,Rm MSR指令格式2 指令执行的条件码 CPSR或SPSR 指定传送的区域,可以为以下字

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档