1. 程式人生 > >指令序列完成兩個 128 位數的加法

指令序列完成兩個 128 位數的加法

以下指令序列完成兩個 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關心之前是否有進位,關心加了後是否有進位