×
嵌入式 > 嵌入式开发 > 详情

ARM裸机开发笔记4ARM寻址方式

发布时间:2020-09-02 发布时间:
|
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。

立即(数)寻址

操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式为立即寻址

ADD R0,R0,#1 ;R0

ADD R0,R0,#ox3f ;R0

以上指令中,第二个源操作数即为立即数。立即数以#开头

寄存器寻址

利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。

ADD R0,R1,R2 :R0

该指令将寄存器R1和R2的内容相加放到R0中。

寄存器间接寻址

以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中

ADD R0,R1,[R2] ;R0

LDR R0,[R1] ;R0

[]表示取寄存器内容处的存储器的值

基址变址寻址方式

将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址:

LDR R0,[R1,#4] ;R0

LDR R0,[R1,#4]! ;R0

LDR R0,[R1],#4 ;R0

LDR R0,[R1,R2] ;R0

多寄存器寻址

一条指令可以完成多个寄存器值的传送。一条指令完成传送最多16个通用寄存器的值

LDMIA R0,{R1,R2,R3,R4} ;R1

IA表示每次执行完加载操作后,R0按字长度增加

相对寻址

以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。

以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:

BL NEXT ;跳转到子程序NEXT处执行

·····················

NEXT

··························

MOV PC,LR ;从子程序返回

椎栈寻址

椎栈指针总是指向栈顶

递增椎栈:向高地址方向生长

递减椎栈:向低地址方向生长

满椎栈:椎栈指针指向最后压入椎栈的有效数据项

空椎栈:椎栈指针指向下一个要放入数据的空位置



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于嵌入式系统的CAN总线网络通信流程设计