03 嵌入式汇编程序计基础.ppt

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

北京大学出版社出版 杨宗德编著 嵌入式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指令编码方式 opcode {cond} {S} Rd, Rn {,opcode2} 其中,内的项是必须的,{}内的项是可选的,如opcode是指令助记符,是必须的,而{cond}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。其中: Opcode:指令助记符,如LDR,STR 等。 Cond:执行条件,如EQ,NE 等。 S:是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响。 Rd:目标寄存器。 Rn:第一个操作数的寄存器。 operand2:第二个操作数。 ARM指令的条件码 ARM指令的条件码(续) 立即寻址 MOV R0, #0xff00 ; 0xff00-R0 寄存器寻址 MOV R1, R2 ; R2-R1 SUB R0, R1, R2 ; R1-R2-R0 基地址变址寻址 LDR R2,[R3,#0x0F] ;R2←[R3+0x0F] STR R1,[R0,#-2] ;R1←[R0-2] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 寄存器偏移寻址 MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,即R0=R2*8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与操作,结果放入R1 寄存器间接寻址 LDR R1,[R2] ; R1←[R2] ADD R1,R1,[R2] ; R1←R1+[R2] 多寄存器寻址 LDMIA R1,{R2,R12} ; R2←[R1],R12←[R2+4] mov指令及例程 MOV{cond}{S} Rd,op1 数据传送指令 MVN{cond}{S}

文档评论(0)

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

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

1亿VIP精品文档

相关文档