11

ADCたとえば、次のように使用します。

AL = 01 and BL = 02, and CF = 1

私がこれを作るとき:

ADC AL,BL 

または?AL_ _ (添加の有無は?)34CF

4

4 に答える 4

12

8086 ADC命令に関するいくつかのこと:

Syntax: adc dest, src
dest: memory or register
src:  memory, register, or immediate
Action: dest = dest + src + CF

明らかに、アクションは、Carry Flag( CF) が加算に含まれることを示しているため、結果は含まれ4ません3

于 2010-04-22T04:35:12.467 に答える
6

10進数で追加するのと同じです。

99
+11

9+1はゼロです1を運ぶ
9 +1+キャリーは1キャリー1

上記の10進数の計算の結果は、キャリーが1の10であり、そのように考えたい場合は110です。

1ビット加算器を使用したバイナリスタートの場合、真理値表は次のとおりです。

000 0 0
001 0 1
010 0 1
011 1 0
100 0 1
101 1 0
110 1 0
111 1 1

3ビットの左側の列は入力の組み合わせ、2つのオペランドとキャリーイン、2番目の列は実行され、3番目の列は結果です。

したがって、キャリーなしの1 + 1は左の列で110であり、結果は0キャリー1です。

上記の10進数の計算と何ら変わりはなく、10進数の列を合計すると、オペランドa、オペランドb、キャリーがはるかに簡単になります。結果は10を法とする答えであり、キャリーは結果/10です。キャリーを次の列の一番上にコピーして、永遠に繰り返します。99+11または999+111などで示されているように。

キャリーのない単純な2ビット加算の場合、結果は入力のxorになり、キャリーは2つの入力のandになります。キャリー加算器をチェーンせずに2つの加算を使用して、キャリー付き加算を実装することも、直接実行することもできます。結果は、奇数の1回または奇数のパリティ(2つのxors r = a xor b xorキャリーイン)がある場合に設定されます。私が現在苦労している実行は、おそらく誰かが助けることができます。

したがって、キャリーセット付きの8ビット0xFF+0xFFは次のようになります。

        1
 11111111
+11111111

これは、開始する前に「キャリー・ザ・ワン」が入ってくる0xff+0xffを示しています。

小数の数学のように、右から一度に1列ずつ見てください。

1 + 1 + 1=1キャリー1
次の列
1 + 1 + 1=1キャリー1
..。

これは続き、キャリービットが設定された0xFFになります

したがって、キャリー付きの8ビットの加算しかない場合は、メモリの幅と同じ幅の2つの数値を加算できます。

16ビットの追加を見てみましょう。

0x1234
+ 0xABCD

16ビットの加算0xBE01で計算を行うことができます。

または8ビット加算器を使用:

キャリービットをクリアする
キャリー0x34+0xCD結果0x01キャリーセットで追加
キャリー0x12+0xAB結果0xBEキャリークリアで追加

答えは0xBE01です

または、4ビットのアルミしか持っていない場合は4ビットの加算器を使用します

キャリービットをクリアする
キャリー0x4+0xD=0x1キャリービットセットで追加
キャリー0x3+0xC=0x0キャリービットセットで追加
キャリー0x2+0xB=0xEキャリービットクリアで追加
キャリー0x1+0xA=0xBキャリービットクリアで追加

再び結果0xBE01キャリービットクリア

バイナリである限り、シングルビットまたは3ビット加算器でこれを行うことができます。

すべての有用なプロセッサには、aluを広げることができるように、キャリービットを追加する何らかの方法が必要です。個別のaddとadcがある場合もあれば、adcが余分なステップである場合や、最も苦痛なのはキャリーなしのaddであり、キャリーがクリアでそのすぐ下にaddがある場合はブランチを使用します。

これは、シフトまたは回転がキャリービットを介して回転する理由でもあるため、レジスタ/メモリ位置の幅よりも広いビットシフトを実行できます。

2進数の乗算は、10進数に比べて非常に単純ですが、それを割愛して考えさせます。

はい、これを試すためのプログラムを作成することもできますし、作成する必要があります。そして、それでも可能ですが、私は意図的にあなたを誤った情報の道に導く可能性があります。

于 2010-04-22T18:49:34.973 に答える
4

ALは を ADC意味するadd with carryので、もちろんキャリー合計されます。 CFは 0 に戻されます。これは、問題の加算のキャリー アウトがないためです。

于 2010-04-22T04:34:27.413 に答える
4

4 になります。ADC (キャリー付き加算) は、キャリー フラグ (CF) が 1 の場合、さらに 1 を加算します。オペコードの完全な説明については、こちらを参照してください。

于 2010-04-22T04:34:56.867 に答える