2011-12-07 5 views
7

は誰も私にいくつかの情報を与えることができます。どういうわけか私はgoogle経由でそれに関する情報を見つけることができませんでした。x86アセンブリ命令:間接的な機能は、x86のアセンブリに呼び出し、すなわち指示機能ラベルのアドレスはレジスタに格納されて</p> <pre><code>call *Reg </code></pre> <p>だから、のような程度の呼び出し*レッグ

さらに、このような命令を持つx86アセンブリプログラムを実行しているときにトレース/ブレークポイント例外が発生するとはどういう意味ですか?

答えて

6

IntelとAMDは、x86に関する非常に良いドキュメントを公開しています。 ここには、(もちろん)CALLに関するセクションがあるIntels命令セットへのリンクがあります。あなたは例外が、それはほとんど何を意味するかもしれません取得している場合はNASMの文法

lbl_start: 
MOV EAX, lbl_function1 
CALL EAX 
RETN 

lbl_function1: 
MOV EAX, 1 
RET 0 

を使用して http://www.intel.com/design/intarch/manuals/243191.HTM

OP Code: FF /2 
Instruction: CALL r/m32 
Description: Call near, absolute indirect, address given in r/m32 

。ここではいくつかの一般的な問題は、あなたがレジスタの値を設定しているが、それは前に起こっAPIの呼び出しによって変更されていますプログラム

  • 内のアドレスにレジスタを設定していない...

    • ですあなたのCALLのreg32
    • あなたは、ex(、あなたは間違ってOPコードreg32あなたのCALLをコードしている特定のアドレスではなく、アドレス自体
  • にあるデータへのレジスタ値を設定している:FF D0はCALLでありますEAX(16進数)
関連する問題

 関連する問題