《(23)--3-4-1 ARM的指令寻址方式(上).ppt》由会员分享,可在线阅读,更多相关《(23)--3-4-1 ARM的指令寻址方式(上).ppt(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3C H A P T E R嵌入式微处理器嵌入式微处理器3.4 ARM的指令系统n学习指令,首先要学会寻址方式。nARM的指令比较精简,只有装载、存储和交换指令可以对存储器中的数据进行访问。找出能访问存储器的这些指令。n找出ARM指令格式的特点,了解桶形移位器的作用。如:ADDR1,R1,R1,LSL#3 nARM汇编程序的结构是怎样的?n结合硬件知识,分析一段典型的启动代码。(Keil中的ARM程序项目内的Startup.S)3.4 ARM的指令系统n简介 ARM处理器是基于精简指令集计算机(RISC)原理设计的。具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密
2、度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。3.4.1 ARM的指令寻址方式n寻址方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。3.4.1 ARM的指令寻址方式 操作数的值
3、在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0 xAA0 x55R2R1n寻址方式分类寄存器寻址MOV R1,R20 xAA3.4.1 ARM的指令寻址方式 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:SUBSR0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOVR0,#0 xFF00
4、0 ;将立即数0 xFF000装入R0寄存器 0 x55R0MOV R0,#0 xFF00程序存储n寻址方式分类立即寻址MOV R0,#0 xFF000 xFF00从代码中获得数据3.4.1 ARM的指令寻址方式 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL#3 ;R2的值左移3位,结果放入R0,;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R10 x55R0R20 x01n寻
5、址方式分类寄存器移位寻址MOV R0,R2,LSL#30 x080 x08逻辑左移3位3.4.1 ARM的指令寻址方式 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDRR1,R2;将R2指向的存储单元的数据读出;保存在R1中 SWPR1,R1,R2;将寄存器R1的值和R2指定的存储;单元的内容交换 0 x55R0R2 0 x400000000 xAA0 x40000000n寻址方式分类寄存器间接寻址LDR R0,R20 xAA3.4.1 ARM的指令寻址方式 基址寻址就是将基址
6、寄存器的内容与指令中给出的偏移量(4K)相加/减,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。寄存器间接寻址是偏移量为0的基址加偏移寻址。基址寻址指令举例如下(前索引寻址):LDRR2,R3,#0 x0C ;读取R3+0 x0C地址上的存储单元 ;的内容,放入R2 STRR1,R0,#-4!;先R0=R0-4,然后把R0的值寄存 ;到保存到R1指定的存储单元 n寻址方式分类基址寻址0 x55R2R3 0 x400000000 xAA0 x4000000CLDR R2,R3,#0 x0C0 xAA将R3+0 x0C作为地址装载数据3.4.1 ARM的指令寻址方式 基址寻址指令举例如下:LDRR0,R1,#4 ;R0=R1,R1 R1 4 ;后索引基址寻址 ;ARM这种自动索引机制不消耗额外的时间LDR R0,R1,R2 ;R0=R1+R2n寻址方式分类基址寻址