2016-12-16 10 views
0

アセンブリでは、FFFFhから正の値を差し引いてから負の値を得ることができます。レジスタの最大正数

2つの数値を乗算した結果が1つのレジスタには大きすぎる場合、残りはdxに渡されます。

私は、異なる正方形のペアを掛け合わせるときに、axとdxのどちらも同じではないので、正の最大値をレジスタに格納することができます。

+1

私は2 ^(n-1)-1と言うつもりでしたが、あなたの最後の段落が私を混乱させました。 –

+0

2の補数では2 ^(n-1)-1になりますが、16の補数と仮定します。 – Bolololo321

+0

私はこれの単純な複製を見つけることができないのに驚いています...中程度の回答を追加することを考えています...しかし、最後の文も私を見逃します。 – Ped7g

答えて

0

と同じレジスタの内容は、符号付き番号または符号なし番号として解釈できます。最初のケースで最大値(16ビット用32767)0x7F*** = 2^(regsize-1)-1である、第二の場合に最大値は(16ビット用65535)0xFF** = 2^regsize-1ある

(徴候の最初のアカウント、乗算imulmulコマンドがあることに注意してください)。

Hex byte example 
80 imul 2 = FF:00 
80 mul 2 = 01:00 
+0

私は理解していると思いますが、私が" neg "コマンドを使うと、数字は署名されたものとして設定されますか? – Bolololo321

+0

レジスタはちょうどビットのセットです。たとえば、バイトレジスタ11000000b = 0xC0は符号付き-20、符号なし224、charÀとみなされます。もちろん、negコマンドの適用は、署名された番号で作業することを前提としています。しかし結果をunsignedとして使うことができます。 – MBo

+0

ありがとう、^^ – Bolololo321