网站大量收购独家精品文档,联系QQ:2885784924

ARM考试资料整理的.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM考试资料整理的

嵌入式系统的基本定义:嵌入式系统源于微型计算机,是嵌入到对象体系中,实现嵌入对象智能化的计算机。(填空题) 2、嵌入式处理器可以分为以下几大类: 嵌入式微处理器; 嵌入式微控制器; 嵌入式DSP处理器; 嵌入式片上系统(SOC)。 ARM7与ARM9的区别: ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺依曼结构。 ARM9内核是1.1MIPS/MHz的五级流水线和哈佛结构。 4、3级流水线: PC总是指向”正在取指“的指令,而不是指向”正在执行“或”正在译码“的指令。 处理器处于ARM时,每条指令长为4字节,故: PC值=当前程序执行位置+8字节 处理器处于Thumb时,每条指令长为2字节,故: PC值=当前程序执行位置+4字节 看如下程序(ARM状态): 0x4000 ADD PC,PC,#4 ;正在被执行的指令,将地址值PC+4写到PC 0x4004 ... ;正在被译码的指令 0x4008 ... ;正在被取指的指令,PC=0x4008 0x400C ... ;PC+4=0x400C ARM处理器模式表: 在ARM处理器内部共有37个用户可访问的32位寄存器。 堆栈指针R13(SP):保存堆栈的出入口地址 链接寄存器R14(LR):保存子程序的返回地址 程序计数器R15(PC):总是指向正在“取指”的指令 CPSR:程序状态寄存器,监视和控制内部操作。 在异常模式下,允许访问用于保存CPSR当前值的备份程序状态寄存器SPSR。 CPSR与SPSR的关系: 当一个特定的异常中断发生时,将CPSR的当前值保存到相应异常模式下的SPSR,然后设置CPSR为相应的异常模式。 从异常中断程序退出返回时,可通过保存在SPSR中的值来恢复CPSR。 8、ATPCS(规定了子程序间调用的基本规则)。 9.、第二章课后习题 10、thumb状态下可以对(高端寄存器)R8~R12访问的指令只有MOV、ADD、CMP。 MOV指令将一个值从低端寄存器(R0~R7)转移到高端寄存器或者从高端寄存器转移到低端寄存器。 ADD指令将高端寄存器的值与低端寄存器的值相加。 CMP指令比较高端寄存器和低端寄存器的值。 异常向量表地址(或者叫异常入口地址0x00~0x1C):七种异常 地址 异常 优先级(1为最高) 返回地址 0x00 复位 1 - 0x04 未定义指令 6 R14 0x08 软件中断 6 R14 0x0C 中止(预取) 5 R14-4 0x10 中止(数据) 2 R14-8 0x14 保留 0x18 IRQ 4 R14-4 0x1C FIQ 3 R14-4 复位异常:当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作: 1、强制M[4:0]变为b10011,系统进入管理模式; 2、将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止; 3、将CPSR中的标志位T清零,处理器处于ARM状态; 4、强制PC从地址0x00开始对下一条指令进行取指; 5、返回到ARM状态并恢复执行。 13、ARM寻址方式:根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。 判断是哪一种寻址方式:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址 寄存器寻址: MOV R1,R2;将R2的值存入R1 SUB R0,R1,R2;将R1的值减去R2的值保存到R0 立即寻址: SUBS R0,R1,#1;R0减1,结果存到R0,并且影响标志位 MOV R0,#0xFF000;将立即数0xFF000装入R0 寄存器移位寻址: MOV R0,R2,LSL,#3;R2的值左移3位,结果放入R0,即R0=R2*8 ANDS R1,R1,R2,LSL R3;R2的值左移3位,然后和R1做“与”操作,存到R1 寄存器间接寻址: LDR R1,[R2];将R2指向的存储单元的数据读出,保存在R1中 SWP R1,R1,[R2];将R1的值和R2指定的存储单元的值交换 基址寻址: LDR R2,[R3,#0x0c];读取R3+0x0c地址上存储单元的内容,存入R2 STR R1,[R0,#-4]!;先R0=R0-4,然后把R1的值保存到R0指定的存储单元 LDR R1,[R0,R3,LSL #1];将R0+R3*2指定的存储单元的内容读出,存入R1 多寄存器寻址: LDMIA R1!,{R2-R7,R12};将R1所指单元的数据读出到R2~R7、R12中(R1自动加1) STMIA R0!,{R2-R7,R12};将R2~R7、R12的值保存到R0所指单元中(R0自动加1) 堆栈寻址: STMFD SP!,{R1-

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档