单片机的加法指令中ADD与ADDS的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机的加法指令中ADD与ADDS的区别相关的知识,希望对你有一定的参考价值。

  ADD不带进位加法指令;
  指令名称:寄存器加法指令
  指令代码:28H~2FH
  指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn), n=0~7 字节数: 1
  机器周期:1
  影响标志位:C,AC,OV
  ADDS是32位数的加法运算,影响进位标志位C而不影响运算结果的值,ADCS是大于32位数的加法,低32位数相加的结果影响标志位C的值(作为进位值)就得加到高32位数的相加运算里去,以此类推,可做高32数的加法。
  例: 加两个 128 位的数
  128 位结果:寄存器 0,1,2, 3
  第一个 128 位数: 寄存器 4,5,6,7
  第二个 128 位数: 寄存器 8,9,10,11
  ADDS R0, R4, R8 ; 加低端的字,影响C
  ADCS R1, R5, R9 ; 加下一个字, +C
  ADCS R2, R6, R10 ; 加第三个字, +C
  ADCS R3, R7, R11 ; 加高端的字, +C
参考技术A ADDC吧?
ADD是不带进位加
ADDC是带进位加。

加法指令复习

ADD加法指令

汇编格式:ADD 目的操作数 源操作数

执行操作:目的操作数 目的操作数+源操作数

ADC带进位加法指令

汇编格式:ADC 目的操作数,源操作数

执行功能:将目的操作数与源操作数、进位的和送目的操作数

INC增量指令

汇编格式:INC操作数

执行操作:操作数 操作数

操作数的值增1

加法指令

ADD AX,CX   ADC DX,BX

加法指令都可作字或字节运算,除INC指令不影响CF标志位外,其他标志位都受加法指令操作结果的影响

SUB减法指令

汇编格式:SUB目的操作数 源操作数

执行操作:目的操作数  目的操作数减源操作数

SBB带错位减法指令

执行的操作:目的操作数 目的操作数减源操作数-CF

指令功能:将目的操作数减去源操作数与进位的差值送目的操作数

DEC减量指令

汇编格式:DEC 操作数

执行操作:操作数 操作数-1

NEG求补指令

汇编格式:NEG操作数

执行操作:操作数<-0-操作数

指令功能:对操作数进行求补

在微机中,带符号的二进制数值数据都采用补码,因此,此处的操作数是补码,所以求-操作数实质上是求补操作

只有当操作数为0时求补运算的结果使CF=0,其他情况则均为1;只有当操作数为-128或-32768时使OF=1,其他情况则均为0

CMP  目的操作数-源操作数

指令功能:相减结果不保存,只是根据结果设置标志位

以上是关于单片机的加法指令中ADD与ADDS的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

DSP,ARM和单片机的区别

C语言与单片机C语言的区别 急求

单片机低功耗和休眠模式的区别是啥呀?十分感谢!

51单片机,使用keil软件,4字节加法或减法子程序

瑞萨单片机RL78G13和RL78G14的区别?