汇编语言中 加法(ADD)与带进位加法(ADC)有什么区别? ADD与ADC的区别

\u6c47\u7f16\u8bed\u8a00\u7684ADC\u548cADD\u600e\u4e48\u7406\u89e3

ADD\u662f\u666e\u901a\u7684\u52a0\u6cd5\u6307\u4ee4\uff0cADC\u662f\u5e26\u8fdb\u4f4d\u7684\u52a0\u6cd5\u6307\u4ee4\u3002

\u4e24\u8005\u7684\u683c\u5f0f\u90fd\u4e3a\uff1a

ADD/ADC source\uff0cdestination
\u5c06\u6e90\u64cd\u4f5c\u6570\u7684\u503c\u4e0e\u76ee\u6807\u64cd\u4f5c\u6570\u7684\u503c\u76f8\u52a0\uff0c\u5e76\u5c06\u8fd0\u7b97\u7ed3\u679c\u653e\u5728\u76ee\u6807\u64cd\u4f5c\u6570\u6307\u793a\u7684\u4f4d\u7f6e\u3002\u5e76\u6839\u636e\u76f8\u52a0\u7ed3\u679c\u8bbe\u7f6e\u6807\u5fd7\u5bc4\u5b58\u5668\u7684CF,PF,AF,ZF,SF,OF\u3002
\u552f\u4e00\u7684\u4e0d\u540c\u662f\uff0cADC\u6267\u884c\u52a0\u6cd5\u8fd0\u7b97\u65f6\uff0c\u4f1a\u5c06CF\u4f4d\u7684\u503c\u4e00\u8d77\u52a0\u5230\u76ee\u6807\u64cd\u4f5c\u6570\u4e2d\u3002\u6240\u4ee5ADC\u5e38\u7528\u4e8e\u5904\u7406\u4ee5\u4e0b\u60c5\u51b5\uff1a
\u5982\u679c\u5fc5\u987b\u5904\u7406\u975e\u5e38\u5927\u7684\u3001\u4e0d\u80fd\u5b58\u653e\u5230\u53cc\u5b57\u6570\u636e\u957f\u5ea6\uff08ADD\u53ef\u4ee5\u4f7f\u7528\u7684\u6700\u5927\u957f\u5ea6\uff09\u4e2d\u7684\u6574\u6570\uff0c\u53ef\u4ee5\u628a\u503c\u5206\u5272\u4e3a\u591a\u4e2a\u53cc\u5b57\u6570\u636e\u5143\u7d20\uff0c\u5e76\u4e14\u5bf9\u6bcf\u4e2a\u5143\u7d20\u6267\u884c\u72ec\u7acb\u7684\u52a0\u6cd5\u64cd\u4f5c\u3002
\u4e3a\u4e86\u6b63\u786e\u5b8c\u6210\u8fd9\u4e2a\u64cd\u4f5c\uff0c\u5fc5\u987b\u68c0\u6d4b\u6bcf\u4e2a\u52a0\u6cd5\u64cd\u4f5c\u7684\u8fdb\u4f4d\u6807\u5fd7\uff0c\u5982\u679c\u8fdb\u4f4d\u6807\u5fd7\u88ab\u8bbe\u7f6e\u4e3a1\uff0c\u5c31\u5fc5\u987b\u8fdb\u4f4d\u5230\u4e0b\u4e00\u5bf9\u76f8\u52a0\u7684\u6570\u636e\u5143\u7d20\u3002
ADC\u6307\u4ee4\u6267\u884c\u4e24\u4e2a\u65e0\u7b26\u53f7\u6216\u8005\u5e26\u7b26\u53f7\u6574\u6570\u503c\u7684\u52a0\u6cd5\uff0c\u5e76\u4e14\u628a\u524d\u4e00\u4e2aADD\u6307\u4ee4\u4ea7\u751f\u7684\u8fdb\u4f4d\u6807\u5fd7\u7684\u503c\u5305\u542b\u5728\u5176\u4e2d\u3002ADC\u6307\u4ee4\u4e5f\u6309\u7167\u64cd\u4f5c\u7ed3\u679c\u6b63\u786e\u5730\u8bbe\u7f6e\u8fdb\u4f4d\u548c\u6ea2\u51fa\u6807\u5fd7\u3002

\u8ddfADD\u7684\u5dee\u522b\u662f\u8fd8\u8981\u52a0\u4e2aCF\uff0c\u8fd9\u4e2aCF\u662f\u8c01\u7684CF\u5462\uff1fXOR AX,AXINC AXNEG AXMOV BX,3FFFHADC AX,BX\u5982\u679c\u4e24\u4e2a4\u5b57\u8282\u7684\u6570\u76f8\u52a0\uff0c\u52a0\u6cd5\u8981\u52062\u6b21\u8fdb\u884c\uff08\u5148\u4f4e\u4e24\u5b57\u8282\u76f8\u52a0\uff0c\u540e\u9ad8\u4e24\u5b57\u8282\u76f8\u52a0\uff09\u3002\u5728\u9ad8\u4e24\u5b57\u8282\u76f8\u52a0\u65f6\uff0c\u8981\u628a\u4f4e\u4e24\u5b57\u8282\u76f8\u52a0\u4ee5\u540e\u53ef\u80fd\u51fa\u73b0\u7684\u8fdb\u4f4d\u8003\u8651\u8fdb\u53bb,\u4f60\u8fd9\u4e2a\u4f8b\u5b50\u4e0d\u6d89\u53ca\u8fdb\u4f4d,\u56e0\u4e3a\u53ea\u6709\u4e24\u4e2a\u5b57\u8282\u76f8\u52a0.\u7ed3\u679c\u662f:AX=3FFDH,BX=3FFFFH,CF=1,\u56e0\u4e3a\u8fd9\u4e2a\u52a0\u6cd5\u6ea2\u51fa\u4e86,\u6240\u4ee5CF=1

加法(ADD)和带进位加法(ADC)最大的区别就是,ADC除了完成ADD加法指令运算,还必须和加进位标志位相加,才能得到最终计算结果。

加法(ADD)功能是实现两个操作数相加,其结果送至目的操作数,源操作数不变。两个操作数不能同时为存储器寻址方式。

带进位加法(ADC)指令主要用于与ADD指令相结合实现多字节数相加。对操作数的要求也与add指令一样。运算结果对PSW(程序状态字)有影响。

共有四种寻址方式:立即寻址、直接寻址、寄存器寻址和寄存器间接寻址。

扩展资料

逻辑运算指令:

这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC;

比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV;

符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算NOT/AND/OR/XOR/TEST等。

参考资料来源:百度百科--加法指令



ADD 是求两个指定整数的和,而 ADC 除了两个指定整数以外,还会加上 C(进位)状态的值。需要 ADC 指令,是因为如果要加的整数长于微处理器每次能加的位元数,就要分开来加,高位字节的结果取决于低位字节相加时有没有进位。 举例:假如有8位元微处理器每次只能加一个字节,如果我们要加两个 16 位元整数:00110101 11001010 + 00010100 01111101 先用 ADD 加 11001010 和 01111101,得 01000111,有进位,状态 C 设为 1再用 ADC 加 00110101 和 00010100 和 状态C(现在是1),得 01001010 所以和是 01001010 01000111

就是考虑不考虑CF的区别,简单说吧ADD是把2个数加起来,ADC是2个数加起来再加CF,CF是溢出标志位
如果你有一定的硬件知识的话,ADD就是半加器,ADC就是全加器

扩展阅读:汇编语言翻译器 ... 文言文翻译转换器 ... 汇编语言入门教程 ... 汇编语言对照表 ... 汇编语言 机器 面向 ... 汇编语言在线转换 ... 汇编语言 $ 符号 ... 加法指令add的用法 ... 汇编add指令用法 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网