《嵌入式系统》_第3章ARM指令系统及程序设计基础探究.ppt

《嵌入式系统》_第3章ARM指令系统及程序设计基础探究.ppt

  1. 1、本文档共161页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杨词慧 yangcihui@nchu.edu.cn;第3章 ARM指令系统及程序设计基础;寻址方式 处理器根据指令中给出的地址信息寻找物理地址的方式。 寻找操作数或操作数地址的方式。;寻址方式(续) ;立即寻址 也叫立即数寻址,操作数本身在指令中给出,该操作数被称为立即数。 例如: ADD R0, R0, #1 ; R0 ? R0+1 立即数须以“#”为前缀,对于十六进制表示的立即数,还需在“#”后加上“0x”或“”。;寄存器寻址 指令地址码中给出寄存器的编号,操作数存在寄存器中。例如: ADD R0, R1, R2 ; R0 ? R1+R2 寄存器间接寻址 以寄存器的值作为操作数地址。 例如: ADD R0, R1, [R2] ; R0 ? R1+[R2];基址变址寻址 将寄存器的内容与指令中给出的地址偏移量相加,得到操作数的地址。 包括 基址加偏移量寻址方式 基址加索引寻址方式 ;基址变址寻址(续) 基址加偏移量寻址方式 将寄存器内容与指令中给出的地址偏移量相加,得到操作数的有效地址。如: LDR R0, [R1, #4] ; R0 ? [R1+4] 前变址:基址加变址作为操作数地址。 后变址:基址作为操作数的地址,传送后自动更新基址寄存器的值。;基址变址寻址(续);基址变址寻址(续);基址变址寻址(续) 基址加索引寻址方式 将基址寄存器的值与索引寄存器的值相加,形成操作数的有效地址。例如: LDR R0, [R1, R2] ; R0 ? [R1+R2];多寄存器寻址 一次完成多个(最多16)寄存器值的传送 例如: LDMIA R0, {R1, R2, R4} ; R1 ? [R0] ; R2 ? [R0+4] ; R4 ? [R0+8];多寄存器寻址(续) ;寄存器移位寻址 操作数为寄存器中数做相应的移位而得到 例如: ADD R0, R1, R2, LSL #3 ; R0 ?R1+8×R2;寄存器移位寻址(续) ARM中的移位或循环移位操作 LSL:逻辑左移(Logical Shift Left) LSR:逻辑右移(Logical Shift Right);寄存器移位寻址(续) ASR:算术右移(Arithmetic Shift Right)。移位过程中保持符号位不变,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。 ;寄存器移位寻址(续) ROR:循环右移(Rotate Right)。从字的最低端移出的位依次填入字的高端空出的位。;寄存器移位寻址(续) RRX:扩展的循环右移(Rotate Right Extended )。操作数向右移一位,左侧空位由状态寄存器C位填充。 当移位的类型为RRX时,无需指定移位的位数,其它的则须指定移位的位数。;相对寻址 以PC当前值作为基地址,指令中的地址标号作为位移量,两者相加后得到操作数的有效地址。例如: BL NEXT ; 跳转至子程序 NEXT …… NEXT …… MOV PC, LR ; 从子程序返回;堆栈寻址 堆栈:按先进后出(FILO)的方式工作,使用堆栈指针(Stack Pointer, SP) 指示当前操作位置。 根据栈指针的指向位置可将堆栈分为 满堆栈:SP指向最后压入堆栈的数据。 空堆栈:SP指向下个将放入数据空位置;堆栈寻址;堆栈寻址(续) 根据堆栈的生成方式可将堆栈分为 递增堆栈(Ascending Stack):堆栈由低地址向高地址生成。 递减堆栈(Descending Stack) :由高地址向低地址生成。;堆栈寻址(续);3.1 ARM寻址方式;堆栈寻址(续) ARM支持四种类型堆栈工作方式 满递增堆栈:SP指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈:SP指向最后压入的数据,且由高地址向低地址生产。;堆栈寻址(续) ;堆栈寻址(续) 堆栈工作方式 空递增堆栈:SP指向下个将放入数据的空位置,且由低地址向高地址生成。 空递减堆栈:SP指向下个将要放入数据的空位置,且由高地址向低地址生成。;堆栈寻址(续) ;ARM指令集分类 加载/存储指令 数据处理指令 分支指令 状态寄存器访问指令 异常/中断指令 协处理器指令;ARM指令的特点 所有指令都是32bit; 大多数指令都在单周期内完成; 所有指令都可以条件执行; load/store体系结构; 指令集可以通过协处理器扩展。;ARM指令的格式 ;3.2 ARM指令集;3.2 ARM指令集;ARM指令的条件执行 所有ARM指令都可包含一个可选的条件码,只有当CPSR中条件标志位满足指定条件时,指令才会被执行。否则以NOP指令通过流水线。 ;3.2 ARM指令集;3.2 ARM指令集;加载/存储指令 Load:将

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档