これは初めてのものです。アセンブリーでの算術演算の登録
私はPCアセンブリ言語を読み終えました。私はAssemblyでRC4暗号化の実装に取り掛かっていました。
mov eax, [edx+ecx]
作品が、
mov eax, [edx-ecx]
がない理由私が理解することができないことです。インラインアセンブラは私に
それは何を意味し、このエラーメッセージ、「第二のオペランド」で
非定数式を与えますか?前もって感謝します。
これは初めてのものです。アセンブリーでの算術演算の登録
私はPCアセンブリ言語を読み終えました。私はAssemblyでRC4暗号化の実装に取り掛かっていました。
mov eax, [edx+ecx]
作品が、
mov eax, [edx-ecx]
がない理由私が理解することができないことです。インラインアセンブラは私に
それは何を意味し、このエラーメッセージ、「第二のオペランド」で
非定数式を与えますか?前もって感謝します。
次に、x86アドレッシングモードの概要を示します。 「レジスタマイナスレジスタ」の形式はありません。Wikipediaです。
回避策として、ecx
の内容を無効にしてから、[edx+ecx]
を使用してください(後で元の値が必要な場合は、元に戻す必要があります)。
あなたはそのようなオフセットで減算することはできません。その目的は、メモリバッファの底を指すようにしてから、にオフセットをに追加することです。減算のオペコードあり
...指定されたメモリ・バッファのあなたを引っ張っにつながる:
mov eax, [edx+ecx]
をしてから組み立てることができるオペコードがあります:
mov eax, [edx-CONSTANT]
は、アセンブラは通常のオペコードを使用しますが、アセンブリ時に定数を否定するためです:
mov eax, [edx+(-CONSTANT)]
しかし、オペコードはありません。
したがって、基本的に存在しない命令を実行しようとしています。
またはmov eax、edx;サブeax、ecx、mov eax、[eax]。これにより余分な否定が省けます –