- 6
- 0
- 约2.09万字
- 约 69页
- 2018-02-02 发布于江西
- 举报
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)