私は次のようなことをしようとしています:cmp [ecx+5C], 1D59D3BC
。
しかし、私はエラーが発生します。これが失敗する理由
考えられる原因:
- あなたはあなたの命令を受け入れるために、アセンブラ用の六角接頭辞または接尾辞を指定する必要があります。
- 操作のサイズを指定する必要があります。アセンブラはあなたのために推測しません。
は(アセンブラによって異なります)次のいずれかを試してみてください:
cmp dword ptr [ecx + 5Ch], 1D59D3BCh
cmp dword ptr [ecx + 0x5C], 0x1D59D3BC
cmp dword [ecx + 5Ch], 1D59D3BCh
cmp dword [ecx + 0x5C], 0x1D59D3BC
誰も私は、x86アセンブリ内の即時のアドレスにレジスタ+オフセットアドレスを比較することができる方法を知っていますか?
lea eax, [ecx + 5Ch] ;put the address in EAX
cmp eax, 1D59D3BCh ;compare with the immediate
しかし、短いPaulHコメントに示したよう:
cmp ecx, 1D59D3BCh - 0000005Ch
を、あなたはどのようなエラーが出るのですか? – zx485
[** Addressing in Assembler **](https://stackoverflow.com/questions/2364162/addressing-in-assembler)を見て、その答えで参照されている.pdfを入手してください。 (あなたの質問への短い答えは、アドレスを比較するために '[]' s *を削除することです。) –
'cmp ecx、1D59D3BCh - 5Ch'? –