Assembly-programming-assembly-numbers
アセンブリ-番号
数値データは通常、バイナリシステムで表されます。 算術命令はバイナリデータを操作します。 数字が画面に表示されるか、キーボードから入力されると、それらはASCII形式になります。
これまで、算術計算のためにこの入力データをASCII形式のバイナリに変換し、結果をバイナリに変換しました。 次のコードはこれを示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
ただし、このような変換にはオーバーヘッドがあり、アセンブリ言語プログラミングにより、バイナリ形式でより効率的な方法で数値を処理できます。 10進数は2つの形式で表すことができます-
- ASCII形式
- BCDまたはバイナリコード10進数形式
ASCII表現
ASCII表現では、10進数はASCII文字の文字列として保存されます。 たとえば、10進数値1234は次のように保存されます-
ここで、31Hは1のASCII値、32Hは2のASCII値などです。 ASCII表現の数字を処理するための4つの命令があります-
- AAA -追加後のASCII調整
- AAS -減算後のASCII調整
- AAM -乗算後のASCII調整
- AAD -除算前のASCII調整
これらの命令はオペランドを使用せず、必要なオペランドがALレジスタにあると想定します。
次の例では、AAS命令を使用して概念を示します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
BCD表現
BCD表現の2種類があります-
- アンパックBCD表現
- パックされたBCD表現
パックされていないBCD表現では、各バイトに10進数に相当するバイナリが格納されます。 たとえば、番号1234は次のように保存されます-
これらの番号を処理するための2つの指示があります-
- AAM -乗算後のASCII調整
- AAD -除算前のASCII調整
4つのASCII調整命令、AAA、AAS、AAM、およびAADは、アンパックBCD表現でも使用できます。 パックBCD表現では、各桁は4ビットを使用して格納されます。 2つの10進数が1バイトにパックされます。 たとえば、番号1234は次のように保存されます-
これらの番号を処理するための2つの指示があります-
- DAA -追加後の10進数調整
- DAS -減算後の小数調整
パックBCD表現では、乗算と除算はサポートされていません。
例
次のプログラムは、2つの5桁の10進数を加算し、合計を表示します。 それは上記の概念を使用します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-