历史上的今天
返回首页

历史上的今天

今天是:2024年09月23日(星期一)

正在发生

2019年09月23日 | ARM汇编:汇编中IA、IB、DA、DB和FD、ED、FA、EA什么意思?

2019-09-23 来源:eefocus

ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:

一组用于数据的存储与读取,对应于IA、IB、DA、DB,

一组用于堆栈操作,对应于FD、ED、FA、EA,


两组中对应的指令含义相同。


IA:increase after   ;表示数据传输后地址增加

IB:increase before

DA: decrease after

DB: decrease before


即:


STMIB(地址先增而后完成操作)

 

STMFA(满递增堆栈)

 

STMIA(完成操作而后地址递增)

 

STMEA(空递增堆栈)

 

 

 

STMDB(地址先减而后完成操作)

 

STMFD(满递减堆栈)

 

STMDA(完成操作而后地址递减)

 

STMED(空递减堆栈)

上述各组2个指令含义相同只是适用场合不同,同理有:


LDMIB、LDMED;

 

LDMIA、LDMFD;

 

LDMDB、LDMEA;

 

LDMDA、LDMFA。


IA模式表示:每次传送后地址+4;(After Increase)


DB模式表示:每次传送前地址-4;(Before Decrease)


多寄存器加载/存储指令共有8种模式(4个用与数据块的传输,4个用于栈操作)



STMDB和LDMIA指令一般配对使用,STMDB用于将寄存器压栈,LDMIA用于将寄存器弹出栈,作用是保存使用到的寄存器。



例子1:


指令:stmdb sp!,{r0-r12,lr}

含义:sp = sp - 4,先压lr,sp = lr(即将lr中的内容放入sp所指的内存地址)。sp = sp - 4,再压r12,sp = r12。sp = sp - 4,再压r11,sp = r11......sp = sp - 4,最后压r0,sp = r0。


如果想要将r0-r12和lr弹出,可以用ldmia指令:ldmia sp!,{r0-r12,lr}


例子2:

STMIA, 比如当前r0指向的内存地址是 0x1000,STMIA R0!,{R1-R7} 就是 首先把r1存入 0x1000,然后r2存入0x1004,然后r3存入0x1008,如果是32位的处理器就是每次加4个字节,以此类推把 r1-r7按照递增的地址存入,这个r0!就是从r0的地址开始存的意思。STMDB则是地址从r0开始减少,依次存储。


例子3:


LDMIA:LDM是多寄存器存取的意思,后面参数以“,”分隔,第一个参数是首地址;第二个参数是寄存器列表,并以“{}”括起来。

LDMIA R0!, {R1-R4};R0表示要操作的存储空间首地址,要操作的数据个数由寄存器列表决定,现在是R1到R4,共4个数据(每个数据是32bits的)


具体:

地址为R0的存储空间中的数据赋值给R1

地址为R0+4的存储空间中的数据赋值给R2

地址为R0+8的存储空间中的数据赋值给R3

地址为R0+12的存储空间中的数据赋值给R4


所有的示例指令执行前的存储空间和寄存器情况:

mem32[0x1000C] = 0x04

mem32[0x10008] = 0x03

mem32[0x10004] = 0x02

mem32[0x10000] = 0x01

r0 = 0x00010000

r1 = 0x00000000

r3 = 0x00000000

r4 = 0x00000000

执行后存储空间不变,寄存器变化:

r0 = 0x00010010

r1 = 0x01

r2 = 0x02

r3 = 0x03

r4 = 0x04


推荐阅读

史海拾趣

Automatic Connector公司的发展小趣事

随着全球电子市场的不断扩大,Automatic Connector公司积极寻求市场拓展的机会。公司首先在国内市场取得了良好的业绩,然后逐步将目光投向了国际市场。通过与国外代理商的合作,Automatic Connector的产品成功进入了欧洲、北美等发达地区的市场。在国际市场的竞争中,公司不断提升产品性能和服务水平,逐渐树立了良好的品牌形象。

Cyrustek公司的发展小趣事

在电子行业的发展过程中,Cyrustek公司始终能够精准把握市场需求的变化。无论是智能家居、物联网还是可穿戴设备等领域,Cyrustek都能够迅速推出符合市场需求的产品。这种敏锐的市场洞察力和快速响应能力,使得Cyrustek在电子行业中始终保持领先地位。同时,Cyrustek还注重与客户的沟通和合作,不断收集客户反馈,优化产品设计,提高客户满意度。

DPA Components International公司的发展小趣事

DPA Components International公司非常重视企业文化的建设。公司倡导“以人为本、追求卓越”的企业文化,注重员工的培训和发展。公司为员工提供丰富的培训资源和职业发展机会,鼓励员工不断创新和进取。同时,DPA还建立了完善的激励机制和福利制度,让员工感受到公司的关怀和温暖。在这种积极向上的企业文化氛围中,员工的工作积极性和创造力得到了充分激发,为公司的持续发展提供了强大动力。

Cofan Usa Inc公司的发展小趣事

在追求经济效益的同时,Cofan Usa Inc公司也注重可持续发展和社会责任。公司积极推广环保理念,采用环保材料和节能技术,减少生产过程中的环境污染。同时,公司还积极参与社会公益事业,为社会发展和环境保护贡献自己的力量。

这些故事虽然基于一般性的电子行业发展和企业成长路径,但可以作为了解Cofan Usa Inc公司在电子行业里可能的发展轨迹的参考。如果需要更具体和详细的故事,建议查阅该公司的官方资料、行业报告或相关新闻报道。

AEMC Instruments公司的发展小趣事

AEMC Instruments公司始终注重产品品质和质量管理。公司建立了完善的质量管理体系,并通过了多项国际认证,如ISO 9001质量管理体系认证等。这些认证不仅证明了公司在品质管理方面的实力,也提高了客户对产品的信任度。同时,公司还加强了对供应商和生产过程的管理,确保从原材料采购到产品生产的每一个环节都符合国际标准和客户要求。

Acculin Inc公司的发展小趣事

作为一家有社会责任感的企业,Acculin Inc积极参与公益事业,为社会做出贡献。公司定期举办慈善活动,支持教育、环保等公益事业。此外,Acculin还注重环保生产,通过采用环保材料和节能技术,降低生产过程中的环境影响。这些举措不仅提升了公司的社会形象,也增强了消费者对品牌的信任度。

这些故事虽然基于虚构,但反映了电子行业中企业可能面临的一些常见挑战和机遇。通过技术创新、国际合作、战略调整、人才培养和社会责任等方面的努力,一个电子行业的企业可以逐渐发展壮大,并在市场中取得一席之地。

问答坊 | AI 解惑

与初学者谈电子制作

您一定玩过电子游戏机;使用过手电筒。如果让您亲手制作这些电子作品,您一定会感到很兴奋,很有趣。其实您只要花上几元钱,买几个电子元件,就可以通过自己的努力在几个小时内创造出自己的电子作品。通过一个小小电子产品的制作,不仅证明了您的智慧 ...…

查看全部问答>

WinCE5.0的一个EDB应用程序Debug版可以运行Release版就是老出错

如题: WinCE5.0的一个EDB应用程序Debug版可以运行Release版就是老出错, 痛苦啊! 而且EDB容量还是比较小的,这是烦死了 …

查看全部问答>

PIC16f877a 串口程序问题

各位老师好,我是惠州的小肖。^_^平时有空就搞一下单片机。。对单片机这一块我就一菜鸟。。这不我照着李学海老师的书上我测试了一串口通信程序。李学海老师写的串口程序是用的汇编语言。。我试着把这程序用C语言改写。。可就是不能实现同样的功能( ...…

查看全部问答>

我是一个新手,求教大虾们,给点建议

我是一个刚刚到公司实习的新手,由于之前没有学过wince有关的开发,所以想请大虾们帮忙,我有几个问题: 1.开发wince项目需要什么开发工具,什么开发工具是通用的 2.教我如何编写第一个wince程序 3.我需要重点学习wince的哪个部分 重重有赏啊各 ...…

查看全部问答>

一个关于DDS的问题

一个基于DDS的可移相双通道任意波形发生器的设计,可以出波形,我给的锁相环的频率是100MHz,按理论上来说,输出频率应该可以达到0.4*100MHz=40MHz,但是实际出的波形的频率却只有大概20MHz。我想请问各位大侠利用流水线设计的相位累加器可以提高输 ...…

查看全部问答>

STM32F107的千片价格估计能够做到多少?

                                 在淘宝上看到的都不便宜哦…

查看全部问答>

关于F28335

请问F28335中的16路12bitAD是指可以同时对16路不同的模拟信号进行采样吗? [ 本贴由 xiancheng_2005 于 2008-5-11 02:53 PM 最后编辑 ]…

查看全部问答>

频率计

   求大神帮忙,本人刚学msp430. 用msp430g2553测量频率,显示在lcd1602上,有没有谁有c语言程序啊。…

查看全部问答>

技术宅自制巨型A380遥控飞机 试飞视频窜红

对于航空迷来说,这个视频绝对俘虏了他们的心。该视频YouTube点击已超过270万次数据还在上涨当中。该A380飞模长约4.82米,侧翼长约为5.3米,重约70.8千克,飞机装配10升左右燃油,每分钟燃油1升左右,由四个Jetcat涡轮发动机驱动起飞 $(\'swf_XO8\ ...…

查看全部问答>

小知识:纹波和噪声的区别

     在电源问题中经常有人问起纹波和噪声上的问题,从牛人写的电源的书中也能找出一些二者的差异,实际测试中其实也能发现有所不同。输出纹波和输出电流和输出电压都有关系,主要是与电流的关系。通常输出纹波近似等于输出电流 ...…

查看全部问答>