ARM汇编指令集之五——乘法指令与乘加指令

发布者:熙风细雨最新更新时间:2016-07-11 来源: eefocus关键字:ARM  汇编指令集  乘法指令  乘加指令 手机看文章 扫描二维码
随时随地手机看文章
ARM微处理器支持的乘法指令与乘加指令共有6条,可分为运算结果为32位和运算结果为64位两类,与前面的数据处理指令不同,指令中的所有操作数、目的寄存器必须为通用寄存器,不能对操作数使用立即数或被移位的寄存器,同时,目的寄存器和操作数1必须是不同的寄存器。

乘法指令与乘加指令共有以下6条:

1、  MUL指令

MUL指令的格式为:

MUL{条件}{S} 目的寄存器,操作数1,操作数2

MUL指令完成将操作数1与操作数2的乘法运算,并把结果放置到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数或无符号数。

指令示例:

MUL R0,R1,R2            ;R0 = R1 × R2

MULS R0,R1,R2           ;R0 = R1 × R2,同时设置CPSR中的相关条件标志位

2、  MLA指令

MLA指令的格式为:

MLA{条件}{S} 目的寄存器,操作数1,操作数2,操作数3

MLA指令完成将操作数1与操作数2的乘法运算,再将乘积加上操作数3,并把结果放置到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数或无符号数。

指令示例:

MLA R0,R1,R2,R3            ;R0 = R1 × R2 + R3

MLAS  R0× R2 + R3,同时设置CPSR中的相关条件标志位

3、  SMULL指令

SMULL指令的格式为:

SMULL{条件}{S}   目的寄存器Low,目的寄存器低High,操作数1,操作数2

SMULL指令完成将操作数1与操作数2的乘法运算,并把结果的低32位放置到目的寄存器Low中,结果的高32位放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数。

指令示例:

SMULL   R0,R1,R2,R3       ;R0 = (R2 × R3)的低32位

                                                  ;R1 = (R2 × R3)的高32位

4、  SMLAL指令

SMLAL指令的格式为:

SMLAL{条件}{S}   目的寄存器Low,目的寄存器低High,操作数1,操作数2

SMLAL指令完成将操作数1与操作数2的乘法运算,并把结果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,结果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数。

对于目的寄存器Low,在指令执行前存放64位加数的低32位,指令执行后存放结果的低32位。

对于目的寄存器High,在指令执行前存放64位加数的高32位,指令执行后存放结果的高32位。

指令示例:

SMLAL   R0,R1,R2,R3       ;R0 = (R2 × R3)的低32位 + R0

                                  ;R1 = (R2 × R3)的高32位 + R1

 

5、  UMULL指令

UMULL指令的格式为:

UMULL{条件}{S}   目的寄存器Low,目的寄存器低High,操作数1,操作数2

UMULL指令完成将操作数1与操作数2的乘法运算,并把结果的低32位放置到目的寄存器Low中,结果的高32位放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的无符号数。

指令示例:

UMULL   R0,R1,R2,R3       ;R0 = (R2 × R3)的低32位

                                                 ;R1 = (R2 × R3)的高32位

6、  UMLAL指令

UMLAL指令的格式为:

UMLAL{条件}{S}   目的寄存器Low,目的寄存器低High,操作数1,操作数2

UMLAL指令完成将操作数1与操作数2的乘法运算,并把结果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,结果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的无符号数。

对于目的寄存器Low,在指令执行前存放64位加数的低32位,指令执行后存放结果的低32位。

对于目的寄存器High,在指令执行前存放64位加数的高32位,指令执行后存放结果的高32位。

指令示例:

UMLAL   R0,R1,R2,R3                 ;R0 = (R2 × R3)的低32位 + R0

                                                           ;R1 = (R2 × R3)的高32位 + R1


关键字:ARM  汇编指令集  乘法指令  乘加指令 引用地址:ARM汇编指令集之五——乘法指令与乘加指令

上一篇:ARM汇编指令集之六——程序状态寄存器访问指令
下一篇:ARM汇编指令集之四——数据处理指令

推荐阅读最新更新时间:2024-03-16 14:59

ARM编程时数据类型的影响
这是我今天下午看那本 ARM嵌入式系统开发——软件设计与优化 所学到的东西。前面的关于ARM核的指令我就不讲了,只说下今天看的关于怎么提高C编程的效率,我还只看了那基本数据类型的定义时所应该要注意的事项,前面我在一篇 ARM内部逻辑结构见解【原】 已提到过内存的数据进入ARM核时要经过一个符号扩展,也就是说一个不足32位的数据经过内核会被扩展成32位的,那么我们在编程时就要注意咯,具体有以下几个方面: 1)我们如果在程序中定义了一个字符性的变量,那么编译器会对这个变量进行一个判别,就是这个字符变量值超过了255没,这样势必会增加一条指令,而我们如果用unsignedint,则可以省去那条多余的指令, 2)如果程序中有关于数组
[单片机]
英特尔超极本初获市场认可:最大挑战将是ARM
  2011年6月,在台北国际电脑展Computex上,英特尔首次提出超极本概念,并大胆提出,超极本在2012年底将会占据消费类笔记本电脑市场40%的份额。   超极本主导笔记本更轻、更薄,具有高续航能力以及时尚的设计外观,并融合传统笔记本电脑与平板电脑的体验,这给多年没有太多变化的PC产业带来了新活力。   PC厂商们迅速行动了起来。从英特尔提出超极本概念到现在不到一年的时间内,包括宏碁(微博)、联想、惠普(微博)等在内的主流PC厂商推出了10多款超极本,虽然价格高企,仍取得了部分市场份额。   现在,超极本超薄、超轻的产品形态已经得到市场认可,但价格居高不下成为快速普及的障碍。不过,这一问题将很快得到解决。据悉,包括联想
[嵌入式]
MRAM将变革未来存储技术发展,ARM捷足先登
MRAM开发商Spin Transfer Technologies Inc.已更名为Spin Memory Inc.(加利福尼亚州弗里蒙特),并在Applied Ventures LLC和ARM Ltd.领导的B轮融资中募集了5200万美元。 Applied Ventures LLC是芯片制造设备供应商Applied Materials Inc的风险投资部门。Spin Transfer Technologies成立于2007年,由孵化器公司Allied Minds全资拥有。 Global Foundries Inc.和英特尔使用嵌入式MRAM作为片上非易失性高速缓存来替代闪存。 相反,Applied,ARM和Sp
[嵌入式]
MRAM将变革未来存储技术发展,<font color='red'>ARM</font>捷足先登
ARM922T核ZCP320A处理器PCI总线操作
摘要:本文简要说明了ZCP320A处理器内部集成的PCI总线接口、编程模式及工作模式,并介绍了作为主设备时如何访问外部扩展的RTL8139 PCI网卡设备。为以后的设计者提供借鉴及应用基础。 关键词:ARM922T ZCP320A PCI总线 RTL8139 ZCP320A采用了ARM公司的ARM922T核,ARM922T是ARM9TDMI通用处理器家族中的一员采用哈佛结构内部使用5级流水线支持32位的ARM指令系统和16位的Thumb指令系统包括两个相互独立的8KB 的数据和指令高速缓存,高速缓存行的长度是8个字。ARM922T 实现增强型ARM结构v4MMU以提供对指令和数据地址的转换和访问许可检测。ARM922T 支持
[嵌入式]
基于ARM9芯片的S3C2440和Linux操作系统设计SPI驱动程序
  在嵌入式开发过程中,许多系统通常使用串口驱动来满足通信要求,但在实际应用中,使用SPI通信方式会更加高效和快捷[2]。SPI接口是一种高速、高效的串行接口技术,因而SPI设备在数据通信应用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系统,设计了一种SPI驱动程序,该驱动程序功能可靠灵活、易于移植,可应用于多种嵌入式平台,实现ARM与设备之间的通信。   1 硬件说明   1.1 S3C2440开发平台   采用三星公司的SoC芯片S3C2440[4]作为核心处理器,主频为400 MHz,并与64 MB SDRAM和64 MB NAND Flash共同组成核心部分。此外,该平台也为用户提供了大量的通
[单片机]
基于<font color='red'>ARM</font>9芯片的S3C2440和Linux操作系统设计SPI驱动程序
推动5G和未来物联网发展,Arm推出全新基础设施平台
Arm 推出两款全新完整基础设施级平台,不仅能加快产品上市速度,并针对5G时代云端到边缘的应用提供优化的设计点 针对7纳米工艺技术优化的Arm Neoverse N1平台,在各种关键云端工作负载可实现2.5倍的性能提升 Arm Neoverse E1平台为高效吞吐量平台,其吞吐量性能较前几代提升达2.7倍 Arm宣布推出两款全新Arm Neoverse平台,即Neoverse N1平台和E1平台,以高度的可扩展性、高吞吐量和性能,推动5G和未来物联网的发展,推动下一波基础设施平台转型。 去年10月,Arm推出Arm Neoverse,为创建万亿联网设备的世界而打造云端到边缘的基础设施。此后,整个Arm生态系统见
[物联网]
Arm Cortex-R52+ 增强汽车功能安全性,让设计更灵活
Arm近日发布了Arm® Cortex®-R系列的最新产品Cortex-R52+,可支持汽车电子设计的演变,帮助汽车研发人员在巨大的压力下,达成汽车设计的要求。 Arm汽车事业部副总裁Chet Babla表示:“随着虚拟电子控制单元(ECU)的应用越来越普遍,它们需要通过验证过的嵌入式实时技术提供支持,实现虚拟嵌入式应用之间的严格隔离。Cortex-R52+ 可为具有功能安全要求的实时应用提供更好的可配置性。这对于ECU的整合日益重要。” 作为Arm安全就绪(Safety Ready)产品组合的一部分,Cortex-R52+ 能够出色地满足异构SoC内部集成的安全岛的需求,广泛应用于包括ADAS和座舱控制器在内的诸多应用。
[嵌入式]
ARM7-LPC2148连接7段显示器的教程
显示是任何嵌入式系统应用程序中非常重要的一部分,因为它可以帮助用户了解系统的状态,并显示系统生成的输出或任何警告消息。电子产品中使用的显示器类型很多,如7段显示器,LCD显示器,TFT触摸屏显示器,LED显示器等。 今天在本教程中,我们将用ARM7-LPC2148连接7段显示器。在详细介绍之前,我们将了解如何控制7段模块以显示任意数量的字符。 7段显示器 7段显示是显示数字和字符的最简单的显示单元之一。它通常用于显示数字,并且比点阵显示具有更亮的照明和更简单的结构。由于照明更亮,因此可以从比LCD更大的距离观看输出。如上图所示的7段显示器,它由8个LED组成,每个LED用于照亮单元的一个段,第8个LED用于照亮7段显示
[单片机]
用<font color='red'>ARM</font>7-LPC2148连接7段显示器的教程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved