1. ホーム
  2. assembly

[解決済み] cmp命令の理解

2022-03-04 03:11:22

質問

私はアセンブリの初心者ですが、現在、以下の方法を理解しようとしています。 cmp が動作します。ここに書かれているのは ウィキ :

cmp arg2, arg1

arg1 と arg2 の比較演算を行います。比較は は,arg1 から arg2 の(符号付き)減算で実行される。 のうち、Tempを呼び出すことができる。 その後、Tempは破棄される .

その意味するところは その後、Tempは破棄されます。 ? どこに保存されていますか?この比較結果にはどのようにアクセスすればよいのでしょうか?どなたか説明してください。

解決方法は?

cmp arg2, arg1 と同じ操作を行います。 sub arg2, arg1 ただし オペランドが変更されないこと。差分は格納されない どこでも .

ただし、フラグレジスタ が更新され、jump-if-equal のような条件付きジャンプで使用することができます ( JE の次の命令として使用されることが多いようです。 cmp .

他の命令と比較した場合の利点は、2つの値を破壊することなく比較できることです。もし、あなたが sub arg2, arg1 で、たまたま同じになったとしても、その後にどちらかが0になってしまいます。とは cmp は、両方とも残っています。