第3章 ARM指令集寻址方式—Load/Store指令寻址(一)

本文详细介绍了ARM指令集中Load/Store指令的寻址方式,包括寄存器间接寻址、基址加变址寻址,并分别讨论了字和无符号字节寻址的三种内存地址构成格式:立即数、寄存器值和寄存器移位得到的地址偏移量。文中还列举了各种寻址方式的指令示例。
摘要由CSDN通过智能技术生成

Load/Store指令是对内存进行存储/加载数据操作的指令,根据访问的数据格式的不同,将这类指令的寻址分为字、无符号字节的Load/Store指令寻址半字、有符号字节Load/Store指令寻址两大类。

一、地址计算方法

1、寄存器间接寻址

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

LDR R0, [R1]                 ;从R1寄存器指向的地址中取出一个字的数据,存储到R0寄存器中

STR R0,[R1]                  ;将R0的值传送到以R1的值为地址的存储器中

2、基址加变址寻址

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

根据访问存储单元和基地址寄存器更新的先后顺序可以将基址加变址寻址分为两种:

1)前变址法:基地址寄存器中的值和地址偏移量先作加减运算,生成的操作数作为内存访问的地址。

2)后变址法:将基地址寄存器中的值直接作为内存访问的地址进行操作,内存访问完毕后基地址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。

采用变址寻址方式的指令常见有以下几种形式:

LDR R0, [R1, #4]                            ;将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中

LDR R0, [R1, #4] !                          ;将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中;然后,R1的内容自增4(也就是R1的内容加4后写回到R1中)。

LDR R0, [R1], #4                            ;以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4。

LDR R0, [R1, R2]                            ;将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。

二、字、无符号字节寻址

在Load/Store指令中,字与无符号字节操作指令编码格式如下:

type(bit[27:26]):指令类型码,01代表Load/Store指令。

汇编指令语法格式如下。

加载指令:

LDR {<cond>} {B} {T} <Rd>, <Addressing_mode>

存储指令:

STR {<cond>} {B} {T} <Rd>, <Addressing_mode>

其中:

cond为指令执行的条件,Rn为基址寄存器,Rd为源/目标寄存器,Addressing_mode内存地址构成格式。

     I(bit[25])                                                 描述
          I=1                     偏移量为寄存器或寄存器移位形式
          I=0                                偏移量为12位立即数
     P(bit[24])                                        描述
           P=1                                     前变址操作
           P=0                                     后变址操作
     U(bit[23])                                        描述
           U=1     内存地址address为基址寄存器Rn值加上地址偏移量
           U=0

    内存地址address为基址寄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值