在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1364|回复: 1

[资料] ARM寻址方式——寄存器寻址

[复制链接]
发表于 2015-12-22 15:47:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

寄存器寻址利用寄存器中的数值作为操作数,指令中地址码给出的是寄存器编号。例如:

ADD              R0R1R2                       ;R0<-R1+R2

本指令将2个寄存器的内容相加,结果放入第3个寄存器R0中。必须注意写操作数的顺序:第1个事结果寄存器,然后是第1操作数寄存器,最后是第2操作数寄存器。

1.
2操作数为寄存器型的移位操作

ARM指令的数据处理指令中参与操作的第2操作数为寄存器型时,若在执行寄存器寻址操作,则可选择是否对第2操作数进行移位,即“Rm{<shift>}”,其中Rm称为第2操作数寄存器,<shift>用来指定移位类型和移位位数。移位位数可以是5位立即数或寄存器。在指令执行时,将移位后的内容作为第2操作数参与运算。需要注意的是,第2操作数必须是寄存器,而且指令执行完毕后第2操作数寄存器的内容不变;对于第2操作数不是寄存器的情况,则不允许有移位操作。例如:

ADD              R3R2R1LSR      #2    ;R3<-R2+R1÷4

寄存器R1的内容逻辑右移2位,再与寄存器R2的内容相加,结果放在R3中。指令执行结束后,第2操作数寄存器R1的内容不变,参与操作的第二操作数为R1左移2位的结果。

2.
2操作数移位方式

ARM可采用的移位操作有:

LSL        逻辑左移。空出的最低有效位用0填充。

LSR        逻辑右移。空出的最高有效位用0填充。

ASL        算数左移。由于左移空出的有效位用0填充,因此它与LSL同义

ASR              算数右移。算数移位的对象是有符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,则空出的最高有效位用0填充;如果是负数,则用1填充。

ROR       循环右移。移出的字的最低有效位依次填入空出的 最高有效位。

RRX       带扩展的循环右移。将寄存器的内容循环右移1位,空位用原来的C标志位填充。只有当移位的类型为RRX时,才无须指定移位位数。

这些移位操作如图所示。

3.
2操作数的移位位数

移位位数可用立即数方式或寄存器方式给出。例如,下面2条指令分别是以立即数和寄存器方式给出了移位位数:

ADD       R3R2R1LSR      #2           ;R3<-R2+R1÷4

ADD       R3R2R1LSR      R4          ;R3<-R2+R1÷file:///C:/Users/xin.jin/AppData/Local/Temp/msohtml1/01/clip_image002.gif

寄存器R1的内容分别是逻辑右移2位、R4位,再与寄存器R2的内容相加,结果放入R3中。

凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

发表于 2015-12-24 13:41:30 | 显示全部楼层
看看嫩恩嗯
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 03:38 , Processed in 0.016442 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表