Мне нужно установить старший бит некоторого адреса / смещения метки.
Я пытался:
test.nasm:
BITS 32
dw mylabel | 0x8000
mylabel:
dd 0
Но при попытке собрать это я получаю:
nasm -f bin test.nasm
test.nasm:3: error: `|' operator may only be applied to scalar values
Почему он не видит mylabel как скалярное значение? Я думал, что метки просто заменяются на их адрес (скалярное значение) ассемблером.
Я использую nasm v 2.09.04, если это имеет значение.
Заранее спасибо за любую помощь.
EDIT:
Я смог использовать + вместо | . Похоже, что побитовые операторы не работают с метками. Как вы думаете, это специально или ошибка?