以下指令序列完成两个 128 位数的加法,第一个数由高到低存放在寄存器 R7~R4,第二个数由
高到低存放在寄存器 R11~R8,运算结果由高到低存放在寄存器 R3~R0:
ADDS R0,R4,R8 ; 加低端的字
ADCS R1,R5,R9 ; 加第二个字,带进位
ADCS R2,R6,R10 ; 加第三个字,带进位
ADC R3,R7,R11 ; 加第四个字,带进位
注意,这4行,代表一个整体,需要纵向看。
首先加法计算,都是从低位往高位加的,这个需要明白,比如15+14 =29,先计算各位,再计算10位数,这里汇编也是如此.
第一行,可以理解先计算各位,其结果存放再低位寄存器R0中,以此类推,至于进位,这是肯定要考虑的
ADD不关心之前是否有进位,也不关心加了后是否有进位
ADDS不关心之前是否有进位,但关心加了后是否有进位
ADC只关心之前是否有进位,不关心加了后是否有进位
ADCS关心之前是否有进位,关心加了后是否有进位