登录/注册

arm add指令

更多

ARM 汇编中的 ADD 指令是用于加法运算的核心指令。它的基本功能是将两个操作数相加,并将结果存储到目标寄存器中。以下是关键细节和使用示例(使用 A32/T32 语法):

基本格式

ADD{<cond>}{S} <Rd>, <Rn>, <Operand2>

Operand2 的形式

Operand2 可以是以下形式之一:

  1. 立即数 (Immediate)

    • 一个数值常量(如 #10)。
    • 在 A32 中,必须是8位数值旋转偶数位得到(如 0xFF000000 有效,0x123 可能无效)。
    • 在 T32 中,范围限制更宽松但仍有约束(如 ADD R0, R1, #0xAB)。
      ADD R0, R1, #42     @ R0 = R1 + 42
  2. 寄存器 (Register)

    • 另一个寄存器的值(如 R2)。
      ADD R0, R1, R2    @ R0 = R1 + R2
  3. 移位的寄存器 (Shifted Register)

    • 一个寄存器经过移位或循环移位后的值。移位类型包括:
      • LSL:逻辑左移
      • LSR:逻辑右移
      • ASR:算术右移
      • ROR:循环右移
      • RRX:带扩展的循环右移1位
    • 移位量可以是立即数或另一个寄存器的值。
      ADD R0, R1, R2, LSL #3   @ R0 = R1 + (R2 * 8)  相当于逻辑左移3位
      ADD R0, R1, R2, LSR R3   @ R0 = R1 + (R2 逻辑右移 R3 指定的位数)

主要功能与作用

  1. 寄存器加法:将两个寄存器的值相加。
  2. 寄存器加立即数:将寄存器值与立即数常量相加。
  3. 地址计算:常用于计算内存地址(结合基址寄存器 Rn 和偏移量 Operand2)。
  4. 修改栈指针:常用 ADD SP, SP, #size 释放栈空间。
  5. 影响标志位 (加 S后缀)
    • N (Negative):结果为负时置1
    • Z (Zero):结果为零时置1
    • C (Carry):加法产生进位时置1
    • V (oVerflow):有符号加法溢出时置1

示例代码

  1. 基础加法:
    ADD R0, R1, R2   @ R0 = R1 + R2 (不改变CPSR)
  2. 立即数加法并设置标志:
    ADDS R3, R3, #10 @ R3 = R3 + 10, 结果影响标志位(CPSR)。
  3. 带移位的加法:
    ADD R0, R1, R2, LSL #2 @ R0 = R1 + (R2 * 4)
  4. 栈操作:
    ADD SP, SP, #16  @ 栈指针SP向上移动16字节(释放空间)

ARM64 (A64) 的区别

在 ARMv8-A 的64位模式中,ADD 指令遵循类似逻辑,但有显著变化:

总结

ARM ADD 是一个高度灵活的加法指令,通过可选的 条件执行标志设置复杂的第二操作数(立即数/寄存器/移位寄存器),实现了强大的数学和寻址能力。它是ARM汇编编程中最常用的指令之一。具体支持的格式取决于所使用的ARM指令集(A32, T32, A64)。

讲讲ARM指令集格式以及常用的ARM汇编指令

对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的

2023-11-08 12:34:22

ARM汇编中ADD可以替换为ADDS吗

在ARM汇编中,ADD可以替换为ADDS吗,SUB可以替换为SUBS吗?为什么?懂ARM汇编的请进,谢谢。

2022-11-09 15:14:58

一文详解Arm Cortex-M处理器指令

Arm处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单,具有32位

2022-05-17 09:31:25

ARM汇编指令(6)——批量数据加载/存储指令资料下载

电子发烧友网为你提供ARM汇编指令(6)——批量数据加载/存储指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文

资料下载 h1654155275.3301 2021-04-23 08:46:23

一文读懂ARM微处理器指令系统

一文叫你如何读懂ARM微处理器指令系统。

资料下载 姚小熊27 2021-03-26 14:30:58

ARM处理器的寻址方式和指令集介绍

ARM处理器是基于精简指令集计算机(RISC原理设计的,指令集和相关峄码机制较为简单。

资料下载 佚名 2020-11-24 17:24:00

C8051F系列51单片机的指令详解

 一、 加法指令 1、不带进位Cy加法指令 ADD A,Rn(寄存器加到累加器) AD

资料下载 佚名 2019-09-05 17:27:00

ARM MOV和LDR的指令关系是怎么样的

ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令比如想把数据从内存中某处读取到寄存器中,只能

资料下载 佚名 2019-05-16 18:05:00

ARM指令分类与汇编指令格式简析

条件码的指令才可以执行,否则被忽略(相当于一条空操作NOP指令)每一条ARM指令

2022-04-14 09:25:07

介绍一些MOV与ADD指令的简单例子

因为嵌入式系统学习需要,开始学习汇编语言学习资料是B站的视频:汇编语言程序 P9目录一、一些简单的指令例子二、一个练习一、一些简单的指令例子下图是一些简单的MOV 与

2022-01-07 06:39:11

ADD加法指令相关资料分享

ADD 指令将< shifter_operand > 表示的数据与寄存器< Rn >中的值相加,并把结果保存到目标寄存器< Rd > 中,同时根据操作的结果更新

2021-12-22 08:02:44

汇编ARM指令集分为哪几种

ARM文件类型*.c,C语言*.s,汇编ARM指令集分为16位thumb指令

2021-12-14 08:58:23

ARM与X862.ARM指令的执行

文章目录零.预备知识1.ARM与X862.ARM中指令的执行3.ARM的

2021-12-14 06:32:45

【工程源码】ARM汇编指令 连载一

快很多。我现在看一些执行起来很奇怪的代码,就直接看看对应的汇编部分,很多C语言中不易发现的问题,汇编一目了然。相信了解过arm汇编的都听说过ARM指令

2020-02-29 19:35:33

ARM架构及ARM指令集 Thumb指令集你了解多少?

ARM架构及ARM指令集、Thumb指令集你了解多少?

2020-02-26 16:09:01

7天热门专题 换一换
相关标签