ARM中的寻址方式

ARM中的寻址方式

  • 立即寻址
  • 寄存器寻址
  • 寄存器移位寻址
  • 寄存器间接寻址
  • 基址变址寻址
  • 多寄存器寻址
  • 块复制寻址
  • 堆栈寻址
  • 相对寻址
立即寻址

操作数本身就在指令中给出
在这里插入图片描述

寄存器寻址

利用寄存器中值作为操作数

在这里插入图片描述

寄存器移位寻址

第二个寄存器操作数移位后与第一个操作数结合
移位位数可以是5位立即数或者寄存器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

寄存器间接寻址

操作数存放在内存中,寄存器中的内容为操作数在内存单元中的地址
在这里插入图片描述

基址变址寻址

将基址寄存器中的内容与指令中给出的偏移量相加减,得出的数为操作数在内存单元的地址
寄存器间接寻址是偏移量为0的基址变址寻址
在这里插入图片描述

多寄存器寻址

一次可传送几个寄存器的值
在这里插入图片描述

块复制寻址

在这里插入图片描述
在这里插入图片描述

堆栈寻址

在这里插入图片描述

相对寻址

以程序计数器当前的值为基地址,指令中的标号为偏移量,将两者相加之后得到操作数的有效地址
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A组:基本指令 ADD、SUB、AND、OR、XOR、CMP、TEST、MVRR、DEC、INC、SHL、SHR、 JR、JRC、JRNC、JRZ、JRNZ 扩展指令 ADC、SBB、RCL、RCR、ASR、NOT、CLC、STC、EI、CI、JRS、 JRNS、JMPR B组:基本指令 JMPA、LDRR、STRR、PUSH、POP、PSHF、POPF、MVRD、IN、OUT、RET C组:扩展指令 CALR、LDRA、STRA、LDRX、STRX D组:基本指令 CALA 扩展指令 IRET 这种分类办法,是为了突出指令执行步骤的划分结果,有利于讲解控制器设计技术。 A组指令完成的是通用寄存器之间的数据运算或传送,或其它几项特殊的操作,在取指之后可一步完成。 B组指令完成的是一次内存或I/O读、写操作,在取指之后可两步完成,第一步把要使用的地传送到地寄存器AR,第二步执行内存或I/O读、写操作。 C组指令在取指之后可三步完成,其CALR指令在用两步完成一次写内存之后,第三步执行寄存器之间的数据传送;而其它指令在第一步置地寄存器AR,第二步读内存(即取得一个内存单元的地)并传送到地寄存器AR,第三步执行另外一次读、写内存的操作。 D组指令完成的是两次读、写内存操作,在取指之后可四步完成。 十六位的教学机系统,实现了上面4组的29条基本指令,用于支持教学机的监控程序和简单的汇编语言程序设计。保留了其余19条扩展指令,供学生在教学实验进行扩展,即完成对这些指令的设计与调试,当然,还可以扩展另外一些指令。 为了支持汇编语言程序设计,每一条指令分配了一个汇编语句名,其命名规则是: 用一个英文单词或其缩写形式(2~4个字母)给出一个汇编语句名,例如ADD、SUB、MVRR、MVRD、JR、JMPA、STRX等; 其的1~2个字母可能涉及到操作数方式,具体规定如下: 用R代表寄存器,例如ADD R0,R1 语句表示 R0←R0+R1;MVRR R0,R1语句表示把寄存器R1的内容传送到寄存器R0;在R字母两侧加上方括号,代表寄存器间接,例如STRR [R8],R9 语句表示把R9的内容传送到以寄存器R8的内容为地的内存单元之; 用D表示立即数,例如MVRD R3,1234 语句表示 R0←立即数1234; 用X表示变,例如 LDRX R1,12[R2] 语句表示把变寄存器R2的内容与变偏移量12相加作为内存地,进行读操作,读出的数据传送的寄存器R1; 用A表示直接地,例如 JMPA 2008 语句表示转移到2008单元之处, STRA [2000], R2 语句表示把R2的内容写入到地为2000的内存单元之。 §1.2.1 基本指令汇总表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值