私はむしろOFFSET演算子の概念に混乱しています。 Kip R. Irvineの「x86プロセッサのアセンブリ言語」によれば、変数の距離を囲むセグメントの先頭から返す演算子としてOffset Operatorを定義しています。また、Offset Operatorは、データラベルのオフセットを返します。これは、データセグメントの先頭からのラベルの距離(バイト単位)を表します。オフセットは何ですか?データセグメントの先頭からラベルの距離がどういう意味ですか? また、彼はこの結果にについて来た:OFFSETプロセッサのアセンブリ言語の演算子
を彼は、3種類の変数を宣言:BVALはに位置していた場合
.data
bVal BYTE ?
wVal WORD ?
dVal DWORD ?
dVal2 DWORD ?
を00404000(16進数)のオフセット、OFFSETオペレータは次の値を返します:
mov esi, OFFSET bVal ;ESI = 00404000h
mov esi, OFFSET wVal ;ESI = 00404001h
mov esi, OFFSET dVal ;ESI = 00404003h
mov esi, OFFSET dVal2 ;ESI = 00404007h
ここで彼はその値に達しましたか?助けてください。どうもありがとうございます!
変数bVal、wVal、dVal、dVal2のそれぞれを構成するバイト数を調べ、それらがすべてメモリ内に順番に配置されていることを想像してください。そして 'ESI ='のそれぞれの値を見てください。オフセットは、「私にラベルのアドレスを教えてください」と言っています。 004040000hのオフセットは任意であり、説明のために使用される。 –