三级嵌入式学习ing 考点21、22

 

考点21 ARM指令的寻址方式

  1. 立即寻址:也称为立即数寻址。操作数本身就在指令中给出,只寻取出指令也就取到了操作数。这个操作数称为立即数,要求以#为前缀。如MOV R0,#0x11
  2. 寄存器寻址:就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的方式,是执行效率较高的寻址方式。如ADD R0,R1,R2
  3. 寄存器间接寻址:就是以寄存器中的值作为操作数地址,而操作数本身存放在存储器中,用于间接寻找的寄存器必须用 [ ] 括起来。如TDR R5,[R4]
  4. 基址加变址寻址:就是将寄存器在(该寄存器一般称为基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。如LDR R0,[R1,#3]
  5. 相对寻址:与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,两者相加得到操作数的有效地址。

如,   BL Subroutine_A     ;跳转到子程序Subroutine_A执行

    Subroutine_A     

         MOV PC,LR        ;从子程序返回

     6.堆栈寻址:堆栈是一种数据结构,按先进后出(FILO)的方式工作,使用一个称作堆栈指针的专用寄存器(比如R13)指示当前的操作位置,堆栈指针总指向栈顶。根据堆栈的生成方式,分为递增堆栈,递减堆栈。当堆栈由低地址向高地址生成,成为递增堆栈。反之为递减堆栈。

    7.块拷贝寻址:又称为多寄存器寻址,采用多寄存器寻址方式,一条指令就可以完成多个寄存器的值的输送,这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。如,LDMIA R0,[R1,R2,R5,R9]

 

考点22 ARM指令集

   1.数据处理类指令:分为数据传送指令、算术/逻辑运算指令、比较指令等,具体如下

 

  2.程序状态寄存器访问指令:

  1. MRS —— 程序状态寄存器到通用寄存器的数据传送指令;                                                      格式一般为MRS 【cond】Rd,<PSR>;PSR为CPSR/SPSR
  2. MSR —— 通用寄存器到程序状态寄存机的数据传送指令;

         格式一般为 MRS 【cond】<PSR>_<fields>;fields为域

 

 3.分支指令:

  1. B转移指令,是最简单的跳转指令,一旦遇到一个B指令,ARM处理器将立即跳转到给定目标地址,从那里继续执行。格式为B Label;Label为目标地址
  2. BX带状态切换的转移指令,BX指令跳转到指令中所指定的由寄存器Rn与0xFFFFFFFE相与后的结果所指示的目标地址,即Rn【0】并不作为目标地址,而是作为状态切换位,目标地址处理指令可以是ARM指令,也可以是Thumb指令。格式为BX{cond}<Rn>
  3. BL带返回的转移指令,跳转之前会在寄存器R14中保存当前PC的值。格式为BL{cond}Label
  4. BLX带返回且带状态切换的转移指令,从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态由ARM状态切换到Thumb状态,该指令同时将PC的当前内容保存到寄存器R14中。

 

  4.加载/存储指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值