2017-06-04 4 views
-1

私はアセンブリを学んでいます、そして、私はこの小さな事についてここでは分かりません。 は、だから私は、ここでのコードのこの部分組立の「inc」はここでどのように正確に機能しますか?

mov DWORD PTR [ebp-4],0X0 
cmp DWORD PTR [ebp-4],0X9 
. 
. 
. 
lea eax,[ebp-4] 
inc DWORD PTR [eax] 
... 

を持っていると私はまさに私がここで「LEA」と「EAX」を使用しなければならないの理由はわかりません。私が正しく理解していれば、[ebp-4]は値0でint(4バイト)を指しています。 "eax"リーグターを使わずに直接インクリメントできますか? もちろん、私は[ebp-4]の値を値 "9"と直接比較することができます。なぜ同じようにインクリメントできないのでしょうか?

すべてのヒントありがとうございます。

+2

はい、 'inc dword ptr [ebp-4]'と書くことができます。後でアドレスの後に 'eax'が必要になるかもしれないので、このように書くのは便利です。 – Jester

+0

ここに比較はありません。後で使用するものを見なければならない –

+1

十分な文脈がないので、全体を投稿する必要があります。 –

答えて

1

シンプル:

あなたが書かれていた場合は
lea eax,[ebp-4]  ; eax = ebp-4 
inc DWORD PTR [eax] ;decrease dword at location ebp-4 by one. 

:それはまったく同じことをやっているだろう

inc DWORD PTR [ebp-4] 


ここではEAXを使用する必要はありません。複雑なアドレッシングを使用することができます。

おそらくコードがeaxをさらに使用して再利用しているか、おそらく最適化されていないコードがあります。

関連する問題