私はに対処ダイレクトメモリでは、このhttps://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture#General-purpose_registers_.2864-bit_naming_conventions.29ダイレクトメモリと[]
を読んでいることは言う:
.data
my_var dw 0abcdh ; my_var = 0xabcd
.code
mov ax, [my_var] ; copy my_var content into ax (ax=0xabcd)
かしら、もし[]せずに、それは斧に何をコピーしますその値は0xabcdではありませんか?
なぜそれが最初のコンテンツですか? 0xabcdをメモリアドレスとして扱い、アドレス0xabcdに格納されているものを代わりに見てください。
'メモリ参照を使用しない場合は、シンボルmy_varの値、つまりその変数のアドレスがコピーされます。 ' - これはアセンブリでは、HLLとは異なり、変数がデフォルトでポインタであることを意味しますか? – Kotaa
また、 'mov bx、[myvar]'はmy_varの内容を取得します。しかし、それはこの答えに反するhttp://stackoverflow.com/questions/42050480/storing-a-value-in-a-register-and-when-is-it-address-and-when-pure-value/42050785# 42050785 --- ** .... espの内容をeaxに移動しません。** – Kotaa
@Kotaa(static)変数はメモリです。シンボルはアドレスを参照するため、変数のシンボルは常にその変数のアドレスを参照します。プログラムが開始される前にシンボルが解決されるため、実行時にシンボルの値を変更することはできません。あなたのリンクに: 'esp'はシンボルではなくレジスタです。レジスタには値を含めることができ、これらの値は変更できます。説明は完全に正しいです。 – fuz