4.1ARM处理器寻址方式 ·寻址方式分类一堆栈寻址 所以可以组合出四种类型的堆栈方式: ■满递增:堆栈向上增长,堆栈指针指向内会有效 数据项的最高地址。指令如LDMFA、STMFA等; ■空递增:堆栈向上增长,堆栈指针指向堆栈上的 第一个空位置。指令如LDMEA、STMEA等; ■满递减:堆栈向下增长,堆栈指针指向内会有效 数据项的最低地址。指令如LDMFD、STMFD等; ■空递减:堆栈向下增长,堆栈指针向堆栈下的第 一个空位置。指令如LDMED、STMED等
所以可以组合出四种类型的堆栈方式: ▪满递增:堆栈向上增长,堆栈指针指向内含有效 数据项的最高地址。指令如LDMFA、STMFA等; ▪空递增:堆栈向上增长,堆栈指针指向堆栈上的 第一个空位置。指令如LDMEA、STMEA等; ▪满递减:堆栈向下增长,堆栈指针指向内含有效 数据项的最低地址。指令如LDMFD、STMFD等; ▪空递减:堆栈向下增长,堆栈指针向堆栈下的第 一个空位置。指令如LDMED、STMED等。 4.1 ARM处理器寻址方式 • 寻址方式分类——堆栈寻址
4.1ARM处理器寻址方式 ·寻址方式分类一块拷贝寻址 多寄存器传送指令用于将一块数据从存储器的 某一位置拷贝到另一位置。如: STMIA R0!,{R1-R7};将R1~R7的数据保存到存储器中。 ;存储指针在保存第一个值之后增加, :增长方向为向上增长。 STMIB R0!,{R1-R7】 ;将R1R7的数据保存到存储器中。 :存储指针在保存第一个值之前增加, ;增长方向为向上增长
多寄存器传送指令用于将一块数据从存储器的 某一位置拷贝到另一位置。 如: STMIA R0!,{R1-R7} ;将R1~R7的数据保存到存储器中。 ;存储指针在保存第一个值之后增加, ;增长方向为向上增长。 STMIB R0!,{R1-R7} ;将R1~R7的数据保存到存储器中。 ;存储指针在保存第一个值之前增加, ;增长方向为向上增长。 4.1 ARM处理器寻址方式 • 寻址方式分类——块拷贝寻址
4.1ARM处理器寻址方式 ·寻址方式分类一相对寻址 相对寻址是基址寻址的一种变通。由程序计数 器P℃提供基准地址,指令中的地址码字段作为偏移 量,两者相如后得到的地址即为操作数的有效地址。 相对寻址指令举例如下: BL SUBR1 ;调用到SUBR1子程序 BEQ LOOP ;条件跳转到工OOP标号处 LOOP MOV R6,#1 SUBR1
相对寻址是基址寻址的一种变通。由程序计数 器PC提供基准地址,指令中的地址码字段作为偏移 量,两者相加后得到的地址即为操作数的有效地址。 相对寻址指令举例如下: BL SUBR1 ;调用到SUBR1子程序 BEQ LOOP ;条件跳转到LOOP标号处 . LOOP MOV R6,#1 . SUBR1 . 4.1 ARM处理器寻址方式 • 寻址方式分类——相对寻址
第4章目录 ▣1.ARM处理器寻址方式 口2.指令集介绍 ·ARM指令集 ■Thumb指令集
第4章 目录 ❑1.ARM处理器寻址方式 ❑2.指令集介绍 ▪ ARM指令集 ▪ Thumb指令集
·简单的ARM程序 A文件名:TEST1.S 使用“;”进行注 真调试 AREA Example1,CODE,READONLY ;声明代码段Examp1e1 ENTRY :标识程序入口 CODE32 ;声明32位ARM指令 START MOV R0,#0 :设置参数 MOV R1,#10 LOOP BL ADD SUB :调用子程序ADD SUB LOO卫 实际代码段 :跳转到LO0P ADD SUB 标号顶格写 ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END 声明文件结束 :文件结束
• 简单的ARM程序 ;文件名:TEST1.S ;功能:实现两个寄存器相加 ;说明:使用ARMulate软件仿真调试 AREA Example1,CODE,READONLY ;声明代码段Example1 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 START MOV R0,#0 ;设置参数 MOV R1,#10 LOOP BL ADD_SUB ;调用子程序ADD_SUB B LOOP ;跳转到LOOP ADD_SUB ADDS R0,R0,R1 ;R0 = R0 + R1 MOV PC,LR ;子程序返回 END ;文件结束 使用“;”进行注释 标号顶格写 实际代码段 声明文件结束