历史上的今天
返回首页

历史上的今天

今天是:2025年02月20日(星期四)

正在发生

2020年02月20日 | ARM学习笔记3——数据处理指令

2020-02-20 来源:eefocus

一、数据处理指令概述

  1、概念

  数据处理指令是指对存放在寄存器中的数据进行处理的指令。主要包括算术指令、逻辑指令、比较与测试指令以及乘法指令 如果在数据处理指令前使用S前缀,指令的执行结果将会影响CPSR中的标志位。

  

  2、语法格式

  数据处理指令的基本语法格式 {}{S} ,,


  3、参数说明

  :标志指令的条件域是否更新CPSR 

  :指示第一源操作数寄存器

  :指示目的寄存器

  :指示第二源操作数


  4、操作码

  5、的寻址方式

二、数据传送指令

  1、MOV指令

    1.1、作用

      把一个数N送到目标寄存器Rd,其中N可以是寄存器,也可以是立即数

    1.2、语法格式(注:{}符号中的参数表示可选,<>符号加字母表示一个参数)

      MOV{}{S} ,

    1.3、参数说明(注:符号相同的参数在后面也有相同的含义)

      1.3.1、为指令编码中的条件域,它指示MOV指令在什么条件下执行

      1.3.2、S是用来更新CPSR中条件标志位的值,当更新状态寄存器CPSR中的条件标志位时,有两种情况:

          A、如果指令中的目标寄存器不是R15,指令根据传送的数值设置CPSR中的N位(负数位)和Z位(零位)(如果数据在传送钱需要移位,则需要根据移位后的数值设置),并根据移位器的进位值设置CPSR的C位。标志位V和其他位不受影响。          

          B、如果指令中的目标寄存器为R15,则当前处理器模式对应的SPSR的值复制到CPSR寄存器中,对于用户模式和系统模式,由于没有相应的SPSR,指令执行的结果不可预知。       

      1.3.3、确定目标寄存器       

      1.3.4、确定操作数,为目标寄存器传送数据


  2、MVN指令     

    2.1、作用       

      MVN是反相传送指令,它将操作数的反码传送到目的寄存器,并根据操作的结果更新CPSR中相应的条件标志位。     

    2.2、语法格式

      MVN{}{S} ,

    2.3、参数说明同MOV

 

三、算术运算指令

  1、ADD加操作指令

    1.1、作用

      将寄存器的值加上表示的数值,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。

    1.2、语法格式

      ADD{}{S} ,,

    1.3、参数说明

      指定目标寄存器

      指定第一个源操作数寄存器


  2、ADC带进位的加法指令

    2.1、作用

      将两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样做既可以做比32位大的加法。

    2.2、语法格式

      ADC{}{S} ,,

    


  3、SUB减操作指令

    3.1、作用

      从寄存器中减去表示的数值,并将结果保存到目标寄存器中。

    3.2、语法格式

      SUB{}{S} ,,


  4、SBC带进位的减法指令

    4.1、作用

      用于执行操作数大于32位的减法操作,该指令从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码。并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。

    4.2、语法格式

      SBC{}{S} ,,


  5、RSB减翻转指令

    5.1、作用

      从寄存器中减去表示的数值,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。

    5.2、语法格式

      RSB{}{S} ,,


  6、RSC带进位的翻转减指令

    6.1、作用

      从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。

    6.2、语法格式

      RSC{}{S} ,,

 

四、逻辑运算指令

  1、AND逻辑与指令

    1.1、作用

      将表示的数值与寄存器的值按位做逻辑与操作,并将结果保存到目标寄存器中,同时根据操作的结果更新CPSR寄存器

    1.2、语法格式

      AND{}{S} ,,

    1.3、逻辑与值表

  2、EOR逻辑异或指令

    2.1、作用

      将寄存器中的值和的值执行按位“异或”操作,并将执行结果存储到目的寄存器中,同时根据指令的执行结果更新CPSR中相应的条件标志位。

    2.2、语法格式

      EOR{}{S} ,,

    2.3、异或值表

  3、ORR逻辑或指令

    3.1、作用

      将第二个源操作数的值与寄存器Rn的值按位做逻辑或操作,结果保存在Rd中

    3.2、语法格式

      ORR{}{S} ,,


  4、BIC位清零指令

    4.1、作用

      将寄存器Rn的值与第二源操作数的值的反码按位做“逻辑与”操作,结果保存到Rd中

    4.2、语法格式

      BIC{}{S} ,,

    4.3、BIC指令真值表

 

五、比较测试指令

  1、CMP比较指令

    1.1、作用

      使用寄存器Rn的值减去shifter_operand的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行

    1.2、语法格式

      CMP{}{S} ,


  2、CMN负数比较指令

    2.1、作用

      比较指令使用寄存器Rn的值加上shifter_operand,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行

    2.2、语法格式

      CMN{}{S} ,


  3、TST测试指令

    3.1、作用

      将一个寄存器Rn的值和一个shifter_operand表示的数值按位做逻辑与操作。条件标志位根据两个操作数做“逻辑与”后的结果设置。

    3.2、语法格式

      TST{}{S} ,


  4、TEQ测试相等指令

    4.1、作用

      将一个寄存器的值和一个算术值按位做逻辑异或操作,条件标志位根据两个操作数做“逻辑异或”后的结果设置,以便后面的指令根据相应的条件标志来判断是否执行。

    4.2、语法格式

      TEQ{}{S} ,   

推荐阅读

史海拾趣

GardTec Inc公司的发展小趣事

背景:为了满足全球客户的需求,GardTec开始实施全球化战略,在亚洲和美国等地设立全球制造厂和库存地。

发展:通过在全球范围内的战略布局,GardTec不仅提升了产品的供应效率,还更好地服务了世界各地的客户。公司的全球化布局进一步巩固了其在风扇配件市场的领先地位。

影响:全球化战略的实施,使得GardTec的产品能够迅速响应市场变化,满足不同地区客户的多样化需求,从而增强了公司的市场竞争力。

Dongguan City Niuhang Electronics Co.LTD公司的发展小趣事

随着公司业务的不断拓展,Dongguan City Niuhang Electronics Co.LTD意识到技术创新的重要性。公司投入大量资金和技术人员,专注于芯片新技术、封装自动化的研究和开发。经过数年的努力,公司成功研发出一系列高性能的二极管、整流器等产品,其中多项技术获得国家级发明专利。这些创新产品不仅提升了公司的市场竞争力,也为公司赢得了业界的广泛认可。

Bals Elektrotechnik GmbH & Co KG公司的发展小趣事

进入1950年代,随着联邦政府对卡车运输的规范,Günter Bals意识到单一的运输业务已无法满足公司长远发展的需要。于是,他与妻子伊丽莎白共同创立了Bals Elektrotechnik GmbH,开始涉足电气连接器的生产。这一转型对Bals来说既是挑战也是机遇,他们凭借对市场的敏锐洞察和不懈的技术研发,成功推出了第一批铝制连接器,并逐步打开了市场。

ETC公司的发展小趣事

在ETC领域,速通科技积极寻求与行业内其他企业的合作。公司与多家银行、保险公司等金融机构建立了合作关系,共同推广ETC系统的应用。此外,速通科技还积极参与行业标准的制定和修订工作,推动ETC行业的健康发展。通过与行业内其他企业的合作,速通科技实现了共赢发展,共同推动了ETC行业的进步。

Arduino公司的发展小趣事

2005年,意大利Ivrea交互设计学院的副教授Massimo Banzi面临了一个问题:他的学生们无法负担市面上昂贵的微控制器。为了解决这个问题,Banzi与他的同事David Cuartielles开始着手制造一个更便宜、更易于使用的电子平台。他们基于学生Hernando Barragá的Wiring平台,通过拆解和重新设计,最终推出了价格仅为30美元的Arduino电路板。Arduino的名字来源于他们常去的酒吧“di Re Arduino”,以此纪念这个创新的起点。

骏晔科技(DreamLNK)公司的发展小趣事

随着公司业务的不断发展和市场规模的扩大,骏晔科技开始积极布局全球市场。公司通过与全球数十家半导体企业建立战略合作关系,拓展海外市场。同时,公司还积极参加国际电子展会和论坛,与全球同行交流合作,共同推动电子行业的发展。通过这些努力,骏晔科技在国际市场上逐渐崭露头角,成为了备受关注的行业新星。

问答坊 | AI 解惑

nrf905无线模块测试程序

本帖最后由 paulhyde 于 2014-9-15 03:01 编辑 nrf905无线模块测试程序 大赛可能用到,我就卖2个币意思一下!~!~!~    …

查看全部问答>

摄像头编程类+类调用+例子

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 using System; using System.Runtime.InteropServices; using System.Drawing.Imaging; using System.Windows.Forms; using System.Drawing; namespace YHhotel.YHhotelWindows //注意这里要 ...…

查看全部问答>

51单片机=====74hc573(锁存器)

51单片机=====74hc573(锁存器) BY: 飞龙  QQ: 9086074    希望认识更多的单片机开发朋友一起交流   第一次做教程不好多多见谅 BLOG: http://hi.baidu.com/alalmn 1.        烧写程序 2.&n ...…

查看全部问答>

怎样对USB设备的其中一个pipe进行读写操作?谢谢!(VB)

我需要与蓝牙设备通信,通过SetupDiGetClassDevs (Guid由注册表找到),SetupDiEnumDeviceInterfaces ,SetupDiGetDeviceInterfaceDetail 函数查找到DevicePath。但是createfile失败。 我需要对这个设备的其中一个pipe读写。在Path后加上“\\PIPE ...…

查看全部问答>

AfxMessage,在线等

环境是evc++    SP4   afxmessage里面的参数想用1句话加一个变量来做, 例如,我买个5本书,这里的5就是变化的。 用了一下几种方式都不可以,请教高人帮忙来做, AfxMessageBox(\"我买了\"+CString(number)+\"本书\"); ...…

查看全部问答>

SIM300C简单三线串口连接服务器注意事项!

使用简单的三线串口,没有流控,没有数据准备好,也没有终端准备好! 请问怎样解决下面的问题:        SIM300C和服务器同时发送数据,SIM300C串口输出的数据是AT命令反馈数据和服务器发送数据夹杂在一起的     ...…

查看全部问答>

EE_FPGA V1.0 器件代购总表

注意事项: 1. 红外接口芯片TFDU4100没买到 2. 有源晶振提供一个   交易总价:125元 + 20元(快递费) 淘宝地址:   http://item.taobao.com/auction/item_detail.htm?item_num_id=8252057915   详细清单如下:   ...…

查看全部问答>

请教数位滤波功能

各位先进,大家好,能否提供或说明其数位滤波在MSP430G2452上的可行性? 最近老师要我制作这个功能於2452身上,方法为输入一波形进入2452的PIN脚,再由滤波後输出至PC端显示其滤波效果,实在快昏头ㄌ。 希望能有先进能帮帮忙,或是提点开释一下, ...…

查看全部问答>