Это операнд памяти, потому что он использует ds:
. Синтаксис Intel в стиле MASM не требует []
вокруг операндов памяти.
Кроме того, нет единой машинной инструкции, которая будет вычислять линейный адрес в целочисленном регистре. Весь смысл сегментации состоит в том, чтобы иметь дело с линейными адресами, которые слишком велики для одного регистра. Вы можете сделать это вручную, если хотите, если вы находитесь в реальном режиме (где значение регистра сегмента является базой, например mov ax, ds
/ shl ax, 4
), но не так просто, если значение регистра сегмента является просто селектором. Защищенный режим 286/386 или нереальный режим.
lea ax, [es: bx + si + 12]
например только имеет дело с вычислениями смещения, игнорируя базу сегмента.