Режим адресации: различать абсолютную короткую и абсолютную длинную?

Итак, у меня есть следующая инструкция:

MOVE.W $1234, $8000

Теперь я запутался, является ли режим адресации для $1234 и $8000 абсолютно коротким или абсолютно длинным.

Я также был бы очень признателен, если бы кто-нибудь мог объяснить, как отличить абсолютное короткое и абсолютное длинное. Спасибо.


person Sid    schedule 26.10.2015    source источник
comment
Обратите внимание, что если вы используете абсолютную короткую адресацию для $8000, вы получите адрес $FFFF8000, так как адрес расширен знаком. Это может быть то, что вы хотите, а может и не быть.   -  person Michael    schedule 26.10.2015
comment
@Michael Итак, если бы я хотел, чтобы адрес был $ 00008000, я бы использовал абсолютную длину? А как насчет 1234 долларов?   -  person Sid    schedule 26.10.2015


Ответы (2)


Используйте суффикс .L или .W, чтобы указать длинный или короткий. В ассемблере, который я использовал, по умолчанию было значение absolute long. Другие ассемблеры могут использовать абсолютный шорт, если адрес умещается в 16 бит.

E.g.

# Move word from memory location 00001234 to 00008000.
MOVE.W $1234.W, $8000.L

# From 00001234 to FFFF8000.
MOVE.W $1234.L, $8000.W
person Lars Brinkhoff    schedule 27.10.2015

Абсолютный короткий/длинный относится к адресам регистров адресов. Абсолютные короткие адреса всегда расширяются по знаку от 16-битных до 32-битных значений (например, 0xEDCB.w -> 0xFFFFEDCB), когда 68k читает инструкции. Использование абсолютно короткой адресации вместо абсолютно длинной занимает меньше времени и места, однако только -0x8000-0x7FFF (0xFFFF8000-0x00007FFFF) может быть абсолютно короткой, в любом другом случае должен использоваться абсолютный длинный. Однако, если вы не беспокоитесь о пространстве и скорости, вы можете полностью пренебречь этим и позволить вашему ассемблеру решать. Если он достаточно умен (что часто бывает не так), он решит за вас, не отмечен ли он.

person Green Snake    schedule 30.12.2015