文档详情

嵌入式ARM结构与开发_第9章.ppt

发布:2015-08-04约3.68千字共25页下载文档
文本预览下载声明
ARM中指令特点 ARM中指令格式 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 ARM中指令介绍 使用16 位的存储器可以降低成本,在这种情况下,Thumb 指令集的整体执行速度比ARM 32 位指令集快,而且提高了代码密度,所以一般用Thumb 编译器将C 语言程序编译成16 位的代码。处理器一开始总在arm 状态,可使用BX 指令转换到Thumb 状态 IC-MSP V1.0 * IC-MSP V1.0 * IC-MSP V1.0 * IC-MSP V1.0 第九章 ARM指令系统与寻址方式 本章学习内容 ARM中指令特点 ARM中指令格式 ARM中指令介绍 ARM的宏汇编 ARM的汇编语言编程 ARM指令系统属于RISC 指令系统。标准的ARM 指令每条都是32 位长,有些ARM核还可以执行Thumb 指令集,该指令集是ARM 指令集的子集,每条指令只有16 位 对于同时支持ARM指令与Thumb指令的ARM核来说,它是通过给CPSR寄存器中标志T置位与否来决定当前运行的是否是Thumb指令集 ARM指令的一个重要特点是它所带的指令都是条件执行,条件标志位于程序代码字节的cond位(位28~31) ARM指令中每个位域的长度都是一样的,这样减少了系统设计的复杂性 ARM 指令按功能分,有跳转类、数据传输类、算术逻辑运算类、比较类, 移位类等指令 XScale指令中新增了一些乘法指令以及内部累加器访问指令 例如B post ; post→(PC),无条件跳转到post 标号地址处执行程序 跳转指令 例如B post ; post→(PC),无条件跳转到post 标号地址处执行程序 算术运算 例如ADD R3,R3,#2 ; (R3)+2→R3 例如SUB R4,R4,#1 ; (R4)-1→R4 逻辑运算 例如AND R0,R0,#0xFF ; (R0)0xFF→R0 例如AND R0,R4,#1 ;保留R4.0,其余清0 例如AND R0,R4,#0xfffffff7 ;R4.3=0 清0 比较指令 例如 CMP R1,#0x0 ; (R1) 比较0x0 例如 BNE addr1 ;不等跳转到addr1处 数据传输指令 例如 MOV R1,#0x8 ;0x08→ (R1) 例如 MOV R14,PC ; (PC) →(R14) 堆栈操作指令 例如 STMFD R13!,{R4-R6,R10,R11,R14} 进栈 例如 LDMFD R13!,{R4-R6,R10,R11,PC} 出栈 乘法指令 例如 MUL R1,R2,R3 ;(R3) *(R2)→(R1) 例如 MRS R4,PSR ; (PSR) → (R4) 专用寄存器传输指令 例如 MSR PSR,R4 ;(R4) →(CPSR) 例如 MRS R4,PSR ; (PSR) → (R4) 其它指令 例如 BIC R0,R0,#0x1 ;位清0(R0.0=0)→(R0) 例如 TST R0,#0x8 ;位测试R0.3=1? 其中PSR为程序状态寄存器,共有两个专用寄存器: CPSR:当前程序状态寄存器 SPSR:保护程序状态寄存器 例如: MRS R0,CPSR ; (CPSR) → (R4) ORR R0,R0,#0;(R0.29=1) → (R0) MSR CPSR_f,R0 ; (R0) → (CPSR) _f仅修改CPSR[31:24]最高8位数据,其余为0 LDR R4,#0x0000050 MSR CPSR_c,R4 ; (R0) → (CPSR) _c仅修改CPSR[7:0]低8位数据,其余为0 ARM 指令的基本寻址方式有: 寄存器寻址 例:ADD R0 , R1 , R2 ; (R1)+
显示全部
相似文档