add(加法指令)和 addc (通常表示为 adc,即 Add with Carry)是计算机体系结构和汇编语言中的两种基本指令,主要用于处理多精度算术运算(即处理比CPU原生字长更大的数字)。它们的核心区别在于是否将前一次运算产生的进位标志(Carry Flag, CF)纳入当前加法运算中。
以下是详细对比:
| 特性 | add (加法) | adc (带进位加法) |
|---|---|---|
| 中文全称 | 加法 | 带进位加法 |
| 核心功能 | 将两个操作数相加 | 将两个操作数相加 并加上进位标志(CF) |
| 进位处理 | 忽略进位标志CF | 显式使用进位标志CF作为加数的一部分 |
| 运算公式 | 目标操作数 = 操作数1 + 操作数2 |
目标操作数 = 操作数1 + 操作数2 + CF |
| 影响标志位 | 设置进位标志(CF)、溢出标志(OF)、零标志(ZF)等 | 同add,但CF是输入也是输出 |
| 典型应用场景 | 单字长(如32位)加法 | 多精度加法(如64位、128位数的运算) |
关键区别详解:
-
add(普通加法):- 执行标准的二进制加法:
A = B + C - 不关心之前操作留下的进位标志(
CF)。 - 根据本次加法的结果设置新的标志位(包括新的
CF)。 - 用途:计算单个机器字(如32位或64位)内的加法。
- 执行标准的二进制加法:
-
adc(带进位加法):- 执行加法:
A = B + C + CF(其中CF是当前进位标志的值)。 - 显式地将前一次操作(通常是上一次
add或adc)产生的进位(CF)作为第三个操作数加到本次运算中。 - 根据
B + C + CF的结果设置新的标志位(包括新的CF)。 - 核心用途:实现多精度加法。当数字太大,无法用一个机器字(如32位)表示时,需要拆分成多个字(如低位字、高位字)进行运算。
adc用于将低字加法产生的进位传递到高字加法中。
- 执行加法:
实际应用示例(32位CPU上实现64位加法):
假设有两个64位数字:
- 低32位:
Num1_Low,Num2_Low - 高32位:
Num1_High,Num2_High
目标:计算 Result = Num1 + Num2(64位结果)。
; 第一步:使用 add 计算低32位的和,并产生进位(CF)
add eax, Num1_Low ; eax = Num1_Low
add eax, Num2_Low ; eax = Num1_Low + Num2_Low, 结果影响CF
; 此时 CF 记录了低32位相加是否产生了进位 (1表示有进位,0表示无)
; 第二步:使用 adc 计算高32位的和,并加上低32位产生的进位(CF)
mov ebx, Num1_High ; ebx = Num1_High
adc ebx, Num2_High ; ebx = Num1_High + Num2_High + CF
; 最终结果:
; 低32位在 eax 中
; 高32位在 ebx 中
; (ebx:eax 组合形成64位结果)
总结:
| 指令 | 核心作用 | 进位处理 | 关键应用领域 |
|---|---|---|---|
add |
执行标准的二进制加法 | 忽略输入CF,输出新CF | 单字长算术运算 |
adc |
执行加法并显式加入进位标志(CF) | 将输入CF作为加数,输出新CF | 多精度大数运算 |
简单来说:
add是做一次“独立”的加法。adc是做一次“链式”的加法,它把上一次加法可能产生的“进位”也一起加进去,用于连接多个字长的运算。
理解 add 和 adc(尤其是 adc)对于进行底层编程、优化算法(如大数库、加密算法)和理解CPU如何工作至关重要。
单片机ADD与ADDC有哪些不同之处呢
单片机基础之ADD与ADDC的区别详解ADD 两数相加,不加进位位。ADDC 两数相加,加进位位。进位当时为1就加1,进位为0就加0。一般在多字节数相加时,低字节相加用ADD ,高字节相加就用
yu1004402274
2022-02-16 06:00:08
PCB的Add layer和Plane有什么区别
1、Add layer:添加中间层。中间层可以作为走线来用,和普通的信号层没有什么区别,只是走线在内部了。是正片腐蚀。
weierda
2019-07-22 07:41:02
UVM中add_typewide_sequence和add_sequence的区别
第2和第3种方式类似,第3种是一下子添加多个sequence,它内部原理就是调用第2种的函数,因此在本质上,只有第1和第2种这两类区别。
2023-05-24 15:21:25
ADDC02805SAKV
ADDC02805SAKV - 28 V/66 W/100 W DC/DC Converters with Integral EMI Filter - Analog Devices
2022-11-04 17:22:44
ADDC02805SA
ADDC02805SA - 28 V/66 W/100 W DC/DC Converters with Integral EMI Filter - Analog Devices
2022-11-04 17:22:44
ADDC02812DA
ADDC02812DA - 28 V/100 W DC/DC Converters with Integral EMI Filter - Analog Devices
2022-11-04 17:22:44
ADDC02815DATV
ADDC02815DATV - 28 V/100 W DC/DC Converters with Integral EMI Filter - Analog Devices
2022-11-04 17:22:44
NT90H1ADDC3V
NT90H1ADDC3V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90N1ADDC5V
NT90N1ADDC5V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
ADD加法指令相关资料分享
ADD 指令将< shifter_operand > 表示的数据与寄存器< Rn >中的值相加,并把结果保存到目标寄存器< Rd > 中,同时根据操作的结果更新
ROSE1017
2021-12-22 08:02:44
NT90N1ADDC15V
NT90N1ADDC15V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90N1ADDC18V
NT90N1ADDC18V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90RN1ADDC3V
NT90RN1ADDC3V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
ID7S210ADD h桥MOSFET驱动自举二极管
2021-12-22 11:41:10
55W双输出电池充电器(USP功能)ADD - 55系列技术解析
55W双输出电池充电器(USP功能)ADD - 55系列技术解析 一、产品概述 ADD - 55系列是一款具备55W双输出且带有电池充电器(USP功能)的电源产品。它拥有多项实用特性,适用于多种
2026-04-04 14:30:03
NT90N1ADDC24V
NT90N1ADDC24V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90RN1ADDC5V
NT90RN1ADDC5V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90RN1ADDC6V
NT90RN1ADDC6V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
AD解决ADD Component Classes出错的解决方法
解决ADD Component Classes出错的问题。提示是Failed to add class member:xxx 和 Unknown Pin
du21590
2019-07-05 08:30:08
NT90H1ADDC15V
NT90H1ADDC15V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
NT90RH1ADDC9V
NT90RH1ADDC9V - Suitable for automobile, machine, electronic equipment, air conditioner and household appliances applications - DB Lectro Inc
2022-11-04 17:22:44
ADD597监测和测向一体化天线系统的关键特性
近日,罗德与施瓦茨(以下简称“R&S”公司)宣布推出全新高性能ADD597 监测和测向一体化天线系统。该系统是固定、移动和可搬移式频谱监测站的关键组件。ADD597可结合单通道测向机,组成
2022-06-22 16:25:32