- 1、本文档共77页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
03 嵌入式汇编程序设计基础.ppt
北京大学出版社出版 杨宗德编著 嵌入式ARM系统原理与实例开发 北京大学出版社 出版 杨宗德 编著 2007年7月 ARM处理器模式 除用户模式之外的其余6种称为非用户模式 (特权模式) 在特权模式中,除系统模式之外的其余5种又称为异常模式 不同的工作模式间可以相互切换。 ARM处理器的寄存器 为什么需要R13,R14,SPSR? ARM的寄存器组织 1.通用寄存器:包括R0~R15,以及程序计数器PC . R0~R7称为不分组寄存器; R8~R12有两组物理寄存器。 一组属于快速模式(R8_fiq~R12_fiq) 另一组属于其它模式(R8_usr~R12_usr) ; R13和R14有6组物理寄存器。 其中用户模式和系统模式共用一组 寄存器R13通常作为堆栈指针SP (stack pointer) 寄存器R14常用作连接寄存器LR(link register); 寄存器R15,又称为PC (program counter) ARM的寄存器组织 2.状态寄存器: 当前程序状态寄存器CPSR (current program status Register),可以在任何工作模式下被访问; 程序状态备份寄存器SPSR (Saved Program Status Register),只有在异常模式下,才能被访问 ; CPSR/SPSR 条件标志(Condition Code Flags) N = ALU计算结果为负数(Negative result from ALU(Arithmetic Logical Unit ) flag)。 Z = ALU计算结果为0(Zero result from ALU flag)。 C = ALU计算结果进位(ALU operation Carried out)。 For an addition, including CMN, C =1 if produced a carry. For a subtraction, including CMP, C=0 if produced a borrow. V = ALU计算结果溢出(ALU operation Overflowed)。 Q=E DSP (preserve and restore the CPSR Q flag if an exception occurs about enhanced DSP instructions.) 中断禁止位(Interrupt Disable bits) I = 1,关IRQ。 F = 1,关FIQ。 T Bit (Architecture v4T only) T = 0, 处理器当前处于ARM状态(Processor in ARM state) T = 1, 处理器当前处于Thumb状态(Processor in Thumb state) 不同模式下可以访问的寄存器 ARM异常处理 异常向量表 ARM异常处理 快速中断请求FIQ: 将下一条要执行的指令地址+4,保存到R14_fiq,保存CPSR的值到SPSR_fiq中; 强制M[4:0]=10001(fiq模式),并置位CPSR中的F,I标志位; 强制PC从地址0x1c取下一条指令; 从FIQ返回,执行指令:SUBS PC,R14_fiq,#4 中断请求IRQ: 将下一条要执行的指令地址+4,保存到R14_irq,保存CPSR的值到SPSR_irq中; 强制M[4:0]=10010(irq模式),并置位CPSR中的I标志位; 强制PC从地址0x18取下一条指令; 从irQ返回,执行指令:SUBS PC,R14_irq,#4 异常中断: 在指令预取异常或数据异常发生,ARM进行一下操作: 保存地址(异常指令地址加4为指令预取异常,加8为数据异常)到R14_abt,保存CPSR的值到SPSR_abt中; 强制M[4:0]=10111(异常模式),并置位CPSR中的I标志位; 强制PC从地址0x0c取下一条指令; 从FIQ返回,执行指令: SUBS PC,R14_abt,#4 预取异常 SUBS PC,R14_abt,#8 数据异常 软中断: 将SWI指令地址+4,保存到R14_svc,保存CPSR的值到SPSR_svc中; 强制M[4:0]=10011(svc模式),并置位CPSR中的I标志位; 强制PC从地址0x80取下一条指令; 从svc返回,执行指令:SUBS PC,R14_svc 无定义指令陷阱: 将无指令或协处理指令地址+4,保存到R14_und,保存CPSR的值到SPSR_und中; 强制M[4:0]=11
文档评论(0)