-1
私は2つの数字のユーザ入力があります。num1
とnum2
とnum2
は負です。署名されていない製品を入手するのに助けが必要です
私はこれらの数字の符号なしの製品を表示する必要があるが、私はmul
を使用する場合、それが署名した製品を提供します:
mov eax, [num1]
mov ebx, [num2]
mul ebx
私の入力はnum1 = 2 num2 = -2
で、出力は私が番号を格納しています-4
です。 bss
num1 resd 1
num2 resd 1
私が保存している方法であれば、彼は-2
か何か私がmul
と間違っていることを値する。
どのようにCでそうしますか? –
'mul'は2つの符号なし値の符号なし積を与えます。 unsigned値として扱われたときの符号付き-2の値は '0xFFFFFFFE'(非常に大きい数)で、' edx:eax'の結果が '0x00000001:0xFFFFFFFC'になると、その下位の32ビットの結果部分 '0xFFFFFFFC'を符号付き数値として表示します-4である。 ...あなたが2 * 2をしたいのであれば、何とかまず "abs"をするべきです。例えば、 'eax'が32ビットの値であり、それが符号付きでも符号なしでも、数値でもない場合には、好きなように扱うことができます。したがって、符号なし10進数として扱われる' 0xFFFFFFFC'は '4294967292'です。 '-4'です。 – Ped7g
@MargaretBloom彼はそれで頼むだろうか? ;) – Ped7g