历史上的今天
返回首页

历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2021年09月27日 | ARM汇编程序和指令学习

2021-09-27 来源:eefocus

mvo指令的详解

在这里插入图片描述

立即数被编码到机器的低12位,如果立即数小于256,则编码到低8位,否则,如果能通过循环左移偶数位变成小于256的数,那么编码时,小于256的数在机器码的低八位,移动的位数除以2编码到低12的高四位


移位指令操作

LSL 对通用寄存器中的内容进行逻辑左移操作


LSR 对通用寄存器中的内容进行逻辑右移操作


ASR 对通用寄存器中的内容进行算数右移操作,左端是正数的话用0补齐,如果是负数的话用1补齐


ROR 对通用寄存器进行循环右移操作,左端的数用右边移出的位来补充


nt main ()

{

int a, b, c,d;

__asm__ __volatile__(

"nopn"

"mov r0,#0x78n" //将0x78放到寄存器r0中

"lsl %[a],r0,#0x4n" //将寄存器r0通过左移四位的操作

"lsr %[b],r0,#0x4n"//将寄存器r0通过右移四位的操作

"asr %[c],r0,#0x8n"  //将寄存器r0通过算数左移移四位的操作

"ror %[d],r0,#0x4n" 将寄存器r0通过循环右移四位的操作

"nopn"

:[a]"=&r"(a),输出的变量

[b]"=r&"(b),

[c]"=&r"(c),

[d]"=&r"(d)

: //输入的变量

:"r0"//被更改的资源列表

);

}


算数运算逻辑指令

AND 将两个数进行逻辑与运算,常用于频闭操作数1的某些位


ORR 将两个操作数进行逻辑或运算,常用于设置操作数1的某些位


EOR 将两个操作数进行异或操作,用于反转操作数1的某些位


ADD 将两个数进行算数相加


ADC 与ADD的区别是除了两个操作数相加,还包括CPSR中的C的标志位


SUB 将两个数进行相减操作


int a, b, c,d;

__asm__ __volatile__(

"nopn"

"mov r0,#0x78n" //将0x78放到寄存器r0中

"and %[a],r0,#0x78n"

"orr %[b],r0,#0x4n"

"add %[c],r0,#0x22n"

""

"nopn"

:[a]"=&r"(a),

[b]"=r&"(b),

[c]"=&r"(c),

[d]"=&r"(d)

:

:"r0"

);


}


加载/存储指令

LDR 从储存器中将一个32位的字数据传到目标寄存器中


STR 将源寄存器32位数据传到储存器中


LDR 的伪指令用法


ldr r0 ,=lable//取标号处的地址送入r0

ldr r0 ,lable//取标号处的地址储存的四字节真值

ldr r0 ,=imedi //将任意一个常量立即数,放入r0,无论是否合法

推荐阅读

史海拾趣

AC Interface Inc公司的发展小趣事

ABC Electronics Inc. 起初是一家小型电子元件供应商,专注于为本地市场提供基本的电子零部件。然而,随着技术的快速发展,公司创始人意识到,只有不断创新才能在竞争激烈的市场中立足。于是,ABC Electronics 开始投入大量资源研发具有竞争力的新产品。经过数年的努力,公司成功推出了一款具有高效能、低能耗特点的电源管理芯片,迅速获得了市场的认可。这一创新产品不仅为公司带来了可观的利润,也奠定了其在电子行业的技术领先地位。

Elektron公司的发展小趣事

Elektron公司的故事始于1942年,由威利·科伯以Elektron物理技术设备工厂Kerber的名称成立。当时,该公司主要生产基于汞蒸气整流器的固定电池电源和船用电池充电器。这些产品在市场上取得了良好的反响,为公司的发展奠定了坚实的基础。在随后的几年里,Elektron不断扩大产品范围,开始涉足汽车行业的电池充电器以及焊接和切割工艺的电源等领域。

EMBEST公司的发展小趣事

在XXXX年12月,EMBEST成为了Microsoft银牌合作伙伴。这一荣誉的获得标志着EMBEST在软件开发和服务方面得到了业界的广泛认可。作为Microsoft银牌合作伙伴,EMBEST将能够更好地利用Microsoft的技术和资源,为客户提供更优质的服务和解决方案。

Altera (Intel)公司的发展小趣事

随着公司业务的不断拓展和市场规模的逐步扩大,EMBEST在XXXX年成立了Timll和Giayee两个子公司。其中,Timll主要负责ARM工控业务,而Giayee则专门负责PDA/Smart Phone等业务。这两个子公司的成立不仅进一步拓展了EMBEST的业务领域,也为其未来的发展注入了新的活力。通过多元化的业务布局和精细化的管理,EMBEST在电子行业中的影响力日益增强。

Greenliant公司的发展小趣事

面对能源转型的挑战,GPS在2015年转型为智能电网解决方案的提供商。公司研发了一套集数据采集、监控、分析和优化于一体的智能电网平台,帮助电力公司提高运营效率,减少能源浪费。该平台通过实时监测电网状态,预测电力需求,并自动调整供电策略,实现了电网的智能化管理。GPS的智能电网解决方案在全球多个国家和地区得到应用,成为推动能源转型的重要力量。

Ecera Comtek Corp公司的发展小趣事

随着公司实力的不断增强,Ecera Comtek Corp公司开始寻求更广阔的发展空间。公司决定进军国际市场,拓展海外业务。然而,国际市场的竞争更加激烈,Ecera Comtek Corp公司面临着来自全球各地的强大竞争对手。为了应对这一挑战,Ecera Comtek Corp公司加强了与国际合作伙伴的联系,共同研发新产品,开拓新市场。同时,公司还加大了对海外市场的宣传力度,提高了品牌的知名度和美誉度。经过几年的努力,Ecera Comtek Corp公司的产品逐渐在国际市场上获得了认可,海外业务也取得了显著的进展。

问答坊 | AI 解惑

关于组成原理中跳转指令的问题

请问大家,为什么跳转指令像JC、JZ、JMP的微程序相同,计算机却可以判断出执行哪一个指令呢? 我查过,说是微程序是入口地址,指令的判断是通过硬件实现~~ 但是还是不明白,是怎么判断的? 难道对指令寄存器中IR有要求吗?…

查看全部问答>

关于ucos的一个问题

本人初学嵌入式系统 对于ucos尚留几个关于任务调度的问题,急需解惑, (1)当前运行的任务是不是还在就绪表中:         1.假设是,那么调度到新任务不都是当前任务么,也就是说实际上不会有任务切换了?(假设不会 ...…

查看全部问答>

wince idle 详细实现方法

现在的2440板子没法进入oemidle函数 求wince idle 详细实现方法…

查看全部问答>

wince自动拨号调用哪个dll文件

     我想用vs2005做一个wince下的自动拨号程序,不知该调用哪个dll文件。XP系统下应该用rasapi32.dll,可是wince下该调用哪个dll呢? …

查看全部问答>

用VB2005在CE5.0下模拟按键

在CE5.0下使用VB2005模拟按键时: keybd_event   、sendinput、sendkeys   等函数均不可以 RegisterHotKey   没有使用成功 请求帮助!…

查看全部问答>

ISA的总线标准资料

我要对ISA接口的采集卡开发驱动程序,谁有免费ISA的总线标准资料提供吗?谢谢.我的邮箱是:                gaoyuehong2008@163.com …

查看全部问答>

想问几个有关路由器嵌入的问题

cisco 华为 juniper 阿尔卡特的操作系统是什么啊?他们还有没有后台架构,例如VxWorks。有哪些路由器是用linux unix uclinux VxWorks或psos作为操作系统的啊?…

查看全部问答>

请问各位大虾PCB布线中80V的高电压需要注意什么问题

      医用B超前端电路需要正负80V的高电压,PCB板制作出来之后,电源和地上的干扰很大,并且会有明显电流过载现象,(电源用的是学生电源,PCB为四层板,电源层是单独布线的),有没有做过类似这样的电源设计的,问题可 ...…

查看全部问答>

ucos ii的定时器功能怎么实现

Ucos ii 2.8版本以后都有一个定时器模块,可以周期调用某回调函数,各位能不能给个具体的例子,使用哪些函数?…

查看全部问答>