Я немного смущен. Я не могу найти точную цель оператора смещения на языке ассемблера, поскольку я новичок в этом языке. Согласно теории оператор 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
я получил результат, который дается в комментариях , что значит этот вывод? Является ли это начальным адресом метки или смещением между начальным и конечным адресом или чем-либо еще, что я не знаю. Я буду благодарен, если кто-нибудь поможет мне в понимании этой концепции.