[解決済み] アセンブリで負の数を計算する方法
2022-02-12 22:46:34
質問内容
私はアセンブリの初心者ですが、負の数の表現方法について質問があります。 私は3つのDWORDS変数を持っている、例えば。
result DWORD 0
i DWORD 3
j DWORD 5
で、この式を計算したいのですが、result = i - j + 8 です。 しかし、i-jを実行すると、符号の関係で結果が非常に大きな数字になります。 どうすれば、最終的に結果がOKになるのでしょうか?
どのように解決するのですか?
32ビットDWORDの場合、整数の範囲は-2147483648から2147483647、16進数では-0x80000000から0x7FFFFFFFです。
つまり、-1という数字は0xFFFFFFFのように存在することになります。(カウンターのアンダーフローと同じ)
もし、ハイ(31)ビットがセットされていれば、数値はマイナスです。負の数から正の数を作るには(ネゲーション)、数を計算し、1を加えなければなりません。
例
0xFFFFFFFE //-2
xor 0xFFFFFFFF //binary complement
---------------
0x00000001 //result of complement
+ 0x00000001 //add 1
---------------
0x00000002 //Result of negation is 2
関連
-
[解決済み】バイナリーボム - フェーズ4
-
[解決済み] MIPS: スタックポインタ($sp)とスタックの関連した使用法
-
[解決済み] WAWハザードとは?
-
[解決済み] アセンブリ - CMP後のJG/JNLE/JL/JNGE
-
[解決済み] アセンブリでは、`PTR`は何の略ですか?
-
[解決済み] cmovlオペコードの中で何と何が比較されるのですか?
-
[解決済み] MIPSプログラムにおける`lw`と`sw`の実際の働きを理解する。
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】ベースポインタとスタックポインタとは一体何でしょうか?これらは何を指しているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】andiとoriはこのプログラムで何をするのですか?
-
[解決済み] MIPs Assemblyでsllなどを使ってビットをずらすのはなぜですか?
-
[解決済み] callq命令とは何ですか?
-
[解決済み] アセンブリ言語 - Moduloはどのように行うのですか?
-
[解決済み] エラーです。操作サイズが指定されていません - NASm
-
[解決済み] MIPS srlを変数で指定
-
[解決済み] MIPSプログラムの中で`lw`と`sw`が実際にどのように機能するかを理解する
-
[解決済み] テストのポイント %eax %eax [重複]。
-
[解決済み] ワードptrとは何ですか?
-
[解決済み] MIPSの擬似命令 "move "の "addi "と "add "の違い?