0

MASM で小さなプログラムを作成しようとしています。ある行で、ECX を増やしようとすると、このエラーが発生します... オペランドが 1 つしかないため、意味がないようです!

関連するコードは次のとおりです。

mov ecx, eax
lea eax, DWORD PTR [ecx]
lea ecx, BYTE PTR [eax+4]
inc ecx

最初は、EAX は文字列の長さであり、この 0x05 です。

それで、なぜこれが起こっているのか誰にも分かりますか?ありがとう!

4

2 に答える 2

1

(指定した) 最後の 2 行を実際に次のように置き換えることができます。

lea ecx, BYTE PTR [eax+5]

LEAはオペランドのアドレスを取得するため、 forは に格納されるBYTE PTR [eax+4]値になります。後でインクリメントするので、2 つの追加を 1 つに結合するだけで、代わりに使用できます。eax+4ecxBYTE PTR [eax+5]

于 2013-06-30T03:48:29.183 に答える