【发布时间】:2014-09-18 08:09:14
【问题描述】:
我有点困惑。我无法在汇编语言中找到偏移运算符的确切用途,因为我是这种语言的新手。根据理论,OFFSET 运算符返回标签与数据段开头的距离,以字节为单位,对应于相对模式(Real/Protected)。但是当我运行以下代码时
.data
bVal BYTE ?
wVal WORD ?
dVal DWORD ?
dVal2 DWORD ?
dValArray DWORD 5 DUP(?)
.code
mov esi,OFFSET bVal ; ESI = 00404000
call DumpRegs
mov esi,OFFSET wVal ; ESI = 00404001
call DumpRegs
mov esi,OFFSET dVal ; ESI = 00404003
call DumpRegs
mov esi,OFFSET dVal2 ; ESI = 00404007
call DumpRegs
mov esi,OFFSET dValArray ; ESI = 0040400B
call DumpRegs
我得到了 cmets 中给出的输出 这个输出是什么意思? 这是标签的起始地址还是起始地址和最终地址之间的位移或其他我不知道的地址。如果有人帮助我理解这个概念,我将不胜感激。
【问题讨论】:
标签: assembly