「ADD」命令ではレジスタの長さ(80286以下のCPUは16bit、80386以上では32bit)しか計算できないのでは、僕のお小遣いを計算する分には十分ですが、銀行や大企業の場合は困ります。私たちは日常の計算の中で1桁の足し算は暗算でできますが、桁が多くなると、筆算をします。
なんとか、この繰り上がりを用いてもっと大きい数を計算できないか、これを解決するのが、「ADC」命令です。このように私たちは繰り上がりという概念を用いて計算しています。
「ADC」は基本的には「ADD」命令と同じであるが、このキャリーフラグが「0」であれば、
DEST←DEST+SRCを行い、キャリーフラグが「1」であれば、さらに1を足します。つまり、1桁目を足す場合は「ADD」、2桁目より上を足す場合は「ADC」を用いることで、
32bit(80286以下では16bit)よりも桁の多い数の計算が可能となる。
ADC DEST,SRC 動作:DEST←DEST+SRC+CF 影響を受けるフラグ:OF,SF,ZF,AF,CF,PF DEST:レジスタ、メモリー SRC :レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)
mov ax,DATA1 mov bx,DATA2 add al,bl adc ah,bh mov ANS,ax |