嵌入式控制系统课件-第2章-3 ARM7异常和寻址方式.pptVIP

  • 3
  • 0
  • 约7.86千字
  • 约 41页
  • 2017-06-05 发布于湖北
  • 举报

嵌入式控制系统课件-第2章-3 ARM7异常和寻址方式.ppt

2.4 异常 简介 2.4 异常 异常优先级 2.4 异常 异常的入口和出口处理 2.4 异常 异常的入口和出口处理 2.4 异常 进入异常 2.4 异常 进入异常 2.4 异常 进入异常 2.4 异常 退出异常 2.4 异常 快速中断请求 2.4 异常 中断请求 2.4 异常 中止异常 2.4 异常 中止——预取指中止 2.4 异常 中止——数据中止 2.4 异常 中止——数据中止 2.4 异常 软件中断指令 2.4 异常 未定义的指令 2.4 异常 未定义的指令 2.5 ARM处理器寻址方式 寻址方式分类 2.5 ARM处理器寻址方式 寻址方式分类——1 寄存器寻址 2.5 ARM处理器寻址方式 寻址方式分类——2 立即寻址 2.5 ARM处理器寻址方式 寻址方式分类——3 寄存器移位寻址 2.5 ARM处理器寻址方式 寻址方式分类——4 寄存器间接寻址 2.5 ARM处理器寻址方式 寻址方式分类——5 变址寻址 2.5 ARM处理器寻址方式 寻址方式分类——5 变址寻址 2.5 ARM处理器寻址方式 寻址方式分类——6 多寄存器寻址 2.5 ARM处理器寻址方式 寻址方式分类——7 堆栈寻址 2.5 ARM处理器寻址方式 寻址方式分类——7 堆栈寻址 2.5 ARM处理器寻址方式 寻址方式分类——7 堆栈寻址 2.5 ARM处理器寻址方式 寻址方式分类——7 堆栈寻址 2.5 ARM处理器寻址方式 寻址方式分类——8 块拷贝寻址 2.5 ARM处理器寻址方式 寻址方式分类——9 相对寻址 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDR R1,[R2] ;将R2指向的存储单元的数据读出 ;保存在R1中 SWP R1,R1,[R2] ;将寄存器R1的值和R2指定的存储 ;单元的内容交换 0x55 R0 R2 00xAA 0LDR R0,[R2] 0xAA 变址寻址就是将基址寄存器的内容与指令中给出的偏移量(4K)相加/减,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。寄存器间接寻址是偏移量为0的基址加偏移寻址。 变址寻址指令举例如下: LDR R2,[R3,#0x0C] ;读取R3+0x0C地址上的存储单元 ;的内容,放入R2 0x55 R2 R3 00xAA 0x4000000C LDR R2,[R3,#0x0C] 0xAA 将R3+0x0C作为地址装载数据 寄存器间接寻址是变址寻址的特例 变址寻址指令举例如下: LDR R0,[R1] ,#4 ;R0=[R1],R1=R1+4 ;后索引基址寻址 ;ARM这种自动索引机制不消耗额外的时间 LDR R0,[R1,R2] ;R0=[R1+R2] ; 基址加索引寻址; 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下: LDR R1!,{R2-R4,R6} ;将R1指向的单元中的数据读出到 ;R2~R4、R6中(R1自动加16) STR R0!,{R2-R4,R6} ;将寄存器R2~R4、R12的值保 ;存到R0指向的存储; 单元中 ;(R0自动加16) 0R1 R2 0x?? 0x01 00x?? R3 R4 0x?? R6 0x?? 0x02 0x03 0x04 000x4000000C 存储器 LDR R1!,{R2-R4,R6} 0x01 0x02 0x03 0x04 0 堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出” 。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种: 向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈 栈底 栈顶 栈区 SP? 堆栈存储区 栈顶 栈底 栈区 ?SP 向下增长 向上增长 00堆栈压栈 堆栈压栈 栈顶 SP? 栈顶 SP? 栈底 空堆栈 栈底 满堆栈 堆栈指针

文档评论(0)

1亿VIP精品文档

相关文档