MOV si, OFFSET arr
в 32-битном коде защищенного режима предположительно усечет адрес до 16 бит, что даст вам 16 младших битов.
mov esi, OFFSET var
в 16-битном реальном режиме даст вамсмещение увеличено с нуля до 32-битного, я ожидаю.
Это то, что делает NASM для foo: mov esi, foo
в отдельном файле.
Вы получаете 66 BE 00000000 mov esi,0x0
.