質問
どのようにEAXに格納されている値をXORすることができますか?
問題は、この行にあります:
xor eax, key
EAXは私がXORする値のアドレスが含まれています。私はこれをどのように実現することができますか?
:私はそれはの線に沿って何かだろうけれどもxor [eax], key
しかし、それは動作しません(構文エラー)
decrypt proc startAddress:DWORD , sizeOfSegment:DWORD , key:DWORD
xor ecx, ecx ; clear the ecx register for the counter
mov eax, startAddress ; copy the start address to eax
.while ecx < sizeOfSegment ; loop through the code
xor eax, key ; XOR decrypt the word
inc eax
inc ecx
.endw
ret
decrypt endp
解決
あなたは...
あなたがやっていると述べましたxor eax, key ; XOR decrypt the word
...しかし、私はそれはタイプミスだ推測していると、あなたは実際に...やろうとしている。
xor [eax], key ; XOR decrypt the word
それが動作しません理由はkey
がレジスタではないということである:それはおそらくですが、私は、[ebp+4]
のようなものの同義語を知らない
のx86(すぎないだけMASMが、NASM:x86命令セット)は、メモリ - メモリレジスタレジスタとレジスタに記憶可能で、メモリ・ツー・レジスタオペランドはなく
。だから、あなたには、いくつかの予備のレジスタ、例えばにキーをロードする必要があります。
mov eax, startAddress
mov ebx, key ; move key into a register, which can be XORed with [eax]
.while ecx < sizeOfSegment
xor [eax], ebx
<時間>
別の問題では、あなたは本当にinc eax
をやりたいか、またはそれがadd eax,4
すべきですか?あなたは「単語」を意味するか、または「バイト」、または「ダブルワード」
所属していません StackOverflow