当前位置:首页 > 单片机 > 单片机
[导读]所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前 ARM 指令系统支持如下几种常见的寻址方式。立即寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取

所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前 ARM 指令系统支持如下几种常见的寻址方式。

立即寻址

立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:

ADD R0 , R0 ,# 1 ; R0 ←R0+1

ADD R0 , R0 ,# 0x3f ; R0 ←R0+0x3f

在以上两条指令中,第二个源操作数即为立即数,要求以 “ # ” 为前缀,对于以十六进制表示的立即数,还要求在 “ # ” 后加上 “ 0x ” 或 “ & ” 。

寄存器寻址

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

ADD R0 , R1 , R2 ; R0 ←R1+R2

该指令的执行效果是将寄存器 R1 和 R2 的内容相加,其结果存放在寄存器 R0 中。

寄存器间接寻址

寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:

ADD R0 , R1 , [R2] ; R0 ←R1+[R2]

LDR R0,[R1] ; R0 ←[R1]

STR R0,[R1] ;[R1]← R0

在第一条指令中,以寄存器 R2 的值作为操作数的地址,在存储器中取得一个操作数后与 R1 相加,结果存入寄存器 R0 中。

第二条指令将以 R1 的值为地址的存储器中的数据传送到 R0 中。

第三条指令将 R0 的值传送到以 R1 的值为地址的存储器中。

基址变址寻址

基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:

LDR R0 , [R1 ,# 4] ; R0 ←[R1+4]

LDR R0 , [R1 ,# 4] ! ; R0 ←[R1+4]、R1←R1+4

LDR R0 , [R1] ,# 4 ; R0 ←[R1]、R1←R1+4

LDR R0 , [R1 , R2] ; R0 ←[R1+R2]

在第一条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。

在第二条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中,然后, R1 的内容自增 4 个字节。

在第三条指令中,以寄存器 R1 的内容作为操作数的有效地址,从而取得操作数存入寄存器 R0中,然后, R1 的内容自增 4 个字节。

在第四条指令中,将寄存器 R1 的内容加上寄存器 R2 的内容形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。

多寄存器寻址

采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多 16 个通用寄存器的值。以下指令:

LDMIA R0 , {R1 , R2 , R3 , R4} ; R1 ←[R0]; R2 ←[R0+4]; R3 ←[R0+8];

                   R4←[R0+12]

该指令的后缀 IA 表示在每次执行完加载 / 存储操作后, R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1 ~ R4 。

相对寻址

与基址变址寻址方式相类似,相对寻址以程序计数器 PC 的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令 BL 采用了相对寻址方式:

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

……

NEXT

……

MOV PC,LR ;从子程序返回

堆栈寻址

堆栈是一种数据结构,按先进后出( First In Last Out , FILO )的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。

当堆栈指针指向最后压入堆栈的数据时,称为满堆栈( Full Stack ),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈( Empty Stack )。

同时,根据堆栈的生成方式,又可以分为递增堆栈( Ascending Stack )和递减堆栈( Decending Stack ),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式, ARM 微处理器支持这四种类型的堆栈工作方式,即:

- 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。

- 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。

- 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。

- 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机的功能是由指令系统体现的。所以,寻址方式和指令系统是衡量微型机的重要指标。

关键字: 单片机 指令 寻址方式

在指令“MOV A,#12H”中,立即数#12H是源操作数,紧随操作码74H之后存放在ROM中。该指令执行时,单片机先从ROM中读取操作码74H,对操作码74H解码后,确定要进行的操作是将一个8位立即数送入累加器A,接下...

关键字: 单片机 指令 寻址方式

所谓寻址方式,就是寻找操作数地址的方式,在用汇编语言编程时,数据的存放 、传送、运算都要通过指令来完成。编程者必须自始至终都要十分清楚操作数的位置 ,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址...

关键字: 51单片机 寻址方式

在MCS-51系列单片机的指令系统中寻址方式共有7种,立即寻址方式,mcs-51单片机的一种寻址方式,操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H,立...

关键字: 51单片机 指令系统 寻址方式

指令给出参与运算的数据方式称为寻址方式。换句话说,寻址方式就是寻找确定参与操作的数的真正地址。

关键字: 51单片机 指令系统 寻址方式

  plc间接寻址的类型   间接寻址可分为两大类型:存储器间接寻址和寄存器间接寻址。如图1所示。      1、存储器间接寻址   存储器间接寻址的地址给定格式

关键字: 间接寻址 PLC 寻址方式 AC

什么是CHS寻址很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了所谓的CSH 3D参数 (Disk Geometry)。

关键字: 寻址方式 数据恢复教程

由于Thumb指令在某些特殊情况下可能比ARM指令更有效,所以它在很多方面得到了广泛的应用。但是Thumb知识ARM指令集的一个子集,它不能独立组成一个应用系统,所以在很多情况下应用程序需要二者的混合

关键字: ARM arm指令 thumb

ARM的9种寻址方式1)立即寻址操作数是立即数,以“#”为前缀,表示 16 进制数值时以“0x”表示。例:MOV R0,#0xFF00 ;0xFF00 -> R0SUBS R0,R0,#1 ;R0 – 1 ->...

关键字: ARM 寻址方式

80C51指令系统专用于80C51系列单片机,具有255种操作码(00H-FFH)除去A5H。1. 寻址方式寻址方式就是指指令中给出寻找操作数或操作数所在地址的方法,执行任何指令都需要操作数。1)立即寻址MOV DPTR...

关键字: 8051 单片机指令 寻址方式
关闭
关闭