質問

どのように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すべきですか?あなたは「単語」を意味するか、または「バイト」、または「ダブルワード」

:?私は、あなたが「XOR言葉を解読する」と言う意味します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top