2010-11-23 7 views
3

に負の数を計算するためにどのように私は、アセンブリ内の初心者だと私は、私は、変数3 DWORDSを持っているとしましょう 負の数を表現する方法について質問があります。アセンブリ

result DWORD 0 
i DWORD 3 
j DWORD 5 

と私がしたいのこの式を計算してください:result = i - j + 8 しかし、私がijを実行すると、符号 のために結果が非常に高い数値になります。

+1

?それを「高い数字」と呼ぶと、適切な結果になります。 –

+1

ブライアンがそうです、あなたの高い数字は、実際には結果の署名されたバージョンです。もしあなたが "非常に高い"と思っているのであれば、 –

答えて

8

32ビットDWORDの整数範囲は、-2147483648〜2147483647または16進数-0x80000000〜0x7FFFFFFFです。

したがって、番号-1は0xFFFFFFFFのように存在します。 (カウンタのアンダーフローのように)

ハイ(31)ビットが設定されている場合、数値は負です。ネガティブ(否定)から正の数を作るために、あなたは数のcompementを作り、1

例追加する必要があります:あなたは、他のジャンプコマンドを使用する2つの整数を比較すると

:お知らせ

0xFFFFFFFE //-2 
xor 0xFFFFFFFF //binary complement 
--------------- 
    0x00000001 //result of complement 
+ 0x00000001 //add 1 
--------------- 
    0x00000002 //Result of negation is 2 
0

を絶対数の比較より:

絶対数の比較:

jg (jump if greater) 
jl (jump if less) 

比較すると、整数(正または負の値となります):あなたは "OK" とはどういう意味ですか

ja (jump if greater) 
jb (jump if less)