2012-04-09 17 views
-1

10進整数(ユーザーが入力したもの)をメモリ内の2の補数表現に変換するコードはなんですか?2の補数のアセンブリコード

例:ユーザーが1234を小数として入力します。私はAXに04D2(2の補数)を格納したいです(私は単語の長さの文字列しか使用できません)

私は80x86アーキテクチャを使用しています。

+1

Um、04d2は2の補数ではありません。 16進表記の数字1234だけです。文字列を整数に解析しようとしていますか? –

+0

私の究極の目標は、ユーザーから16ビットの数値を2の補数に変換してから、その8進表現を見つけることです。 I – cj1098

+1

負の整数も扱う必要がありますか、正の整数だけを扱う必要がありますか? –

答えて

1

数字の文字列を整数に変換するのは、かなり簡単です。一度に1桁を読み、10進数に変換します(通常は '0'を引いて)。あなたは既存の値を取ってそれを10倍し、現在の数字の値を加えます。

負の数値を扱うことはちょっと難しいことを追加します。ほとんどの人は、「 - 」で始まる数字が負であることを示すフラグを保持することでそれを行います。次に、数値を変換したら、フラグがセットされているかどうかを否定します。

しかし、最も負の数を変換するには、(2の補数で)負の数が正の数で表すことができるより大きい)。たとえば、16ビットの2の補数の範囲は-32768〜+32767ですが、+ 32768を表すには(少なくとも)17ビットまたは符号なし16ビットの数値が必要です。

編集:10進数を整数に変換したら、整数を16進数に変換して16進数で表示する必要があります。その変換は少し簡単です。繰り返し16で除算し、残りは次の16進数になります。通常、 "abcdef"のような表を使用し、残りの部分を使用して表に索引を付けて、表示する数字を取得します。あなたは配当を繰り返し、配当がゼロになるまで残りを使用します。 1つのトリックは、数字がの逆順での順番(最小から最大まで)で生成されるため、通常はバッファの最後から開始して最初に向かって作業します。

+0

私が推測しているのは、ユーザーが数字を入力するときです。それに対する16進値。 – cj1098

+0

@ cj1098:小数点から整数に変換する必要があります。次に、整数から16進数に変換する必要があります。 –

+0

ありがとうございます!@今すぐ入手しました – cj1098