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

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

MOVE.W $1234, $8000

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

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

2 ответа

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

Например

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

# From 00001234 to FFFF8000.
MOVE.W $1234.L, $8000.W

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

Другие вопросы по тегам