Режим адресации: различать ли абсолютное короткое и абсолютное длинное?
Итак, у меня есть следующая инструкция:
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) может быть абсолютной короткой, в любом другом случае необходимо использовать абсолютную длинную. Если вы не сомневаетесь в скорости и пространстве, вы можете полностью пренебречь этим и позволить своему ассемблеру принять решение. Если он достаточно умен (что часто не так), он решит за вас, если не помечен либо.