2015-10-26 9 views
0

Хорошо, таким образом у меня есть следующие инструкции:Режим адресации: Отличие между абсолютным коротким и абсолютным длинным?

MOVE.W $ 1234, $ 8000

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

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

+0

Обратите внимание, что если вы используете абсолютную короткую адресацию для '$ 8000', вы получите адрес' $ FFFF8000', так как адрес будет расширен. Это может быть то, что вы хотите, или это может быть не так. – Michael

+0

@Michael Итак, если бы я хотел, чтобы адрес был $ 00008000, я бы использовал абсолютный длинный? А как насчет 1234 долларов? – Sid

ответ

3

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

E.g.

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

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

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