Скачиваний:
78
Добавлен:
16.04.2013
Размер:
79.36 Кб
Скачать

Адресация

Адресацией называется обращение к операнду, указание на который содержится в инструкции. Операнды, в зависимости от места своего хранения и типа, могут указываться разными способами, которым соответствуют разные типы адресации. Это разнообразие можно классифицировать только примерно. В данной главе рассматриваются только основные виды адресации.

В зависимости от места хранения, операнды могут указываться:

  • Константами,- если они хранятся непосредственно в коде инструкции.

  • Именами регистров, - если они хранятся в регистрах.

  • Адресами ячеек памяти, - если они хранятся в памяти. Номер ячейки, в которой хранится операнд, называется егоадресом.

    • Если адрес отсчитывается от начала адресного пространства, то он называется абсолютным;

    • а если адрес отсчитывается от некоторой базы (начала сегмента или секции), то он называется относительным.

Строго говоря, поскольку ячейка памяти характеризуется еще и типом памяти, то при обращении к ячейке должен быть указан и тип памяти, но реально тип памяти обычно задается видом инструкции. Например, инструкции МП ix86IN AL,1000 иMOV AL,1000задают пересылку в регистрALзначения из ячейки 1000, но в первом случае эта ячейка относится к пространству портов, а во втором случае к пространству основной памяти.

Собственно все многообразие видов адресации связанно именно с обращениями к памяти, поскольку для констант всегда используется только непосредственнаяадресация, а для имен регистров – толькопрямая.

Непосредственная адресация

Непосредственная (immediate) адресация может использоваться только для указания исходных данных. При непосредственной адресации операнд указывается константой. Признаком непосредственной адресации, как правило, служит символ#стоящий непосредственно перед константой. В некоторых МП, константа не имеет предшествующего символа#.

Например, инструкция процессора MC68000

ADD#54,D2

увеличивает значение регистра D2 на 54, в то время как инструкция

ADD54,D2

увеличивает значение регистра D2 навеличину, содержащуюся в ячейке54. А вот в процессорахix86 инструкция

ADDAL,54

увеличивает значение регистра ALна 54, а чтобы увеличитьALна величину, содержащуюся в ячейке54, нужна инструкция

ADDAL,[54]

Прямая адресация

Адресация называется прямой, если в инструкции прямо указывается имя регистра, где находится операнд, либо адрес (метка) памяти. Во многих МП прямая адресация, указывающая на регистр, называется прямой регистровой адресацией, либо просторегистровой адресацией. С другой стороны, прямая адресация, указывающая на адрес памяти, может иногда называтьсяабсолютнойадресацией. Это делается тогда, когда, во-первых, адрес задается абсолютным физическим значением памяти (а не относительным по отношению к программе), а во вторых, если в данном МП есть еще и относительная адресация. Например, в инструкцииMC68000:

MOVE.W1000,D7

слово данных из абсолютного адреса памяти 1000 (абсолютная адресация) пересылаются в регистр D7 (прямая регистровая адресация).

Часто, в МП, прямая адресация данных фигурирует в виде двух способов адресации: короткая адресацияидлинная адресация. Это разделение обусловлено тем, что для хранения короткого адреса в теле инструкции, используется меньшее количество байтов, чем для хранения длинного адреса. Например, в МПMC68000 фирмыMotorola, инструкцияCLR.W 3300имеет короткую абсолютную адресацию (для хранения адреса достаточно одного слова), а инструкцияCLR.W 443300имеет длинную абсолютную адресацию (для хранения адреса нужно два слова). Заметим, что у той же фирмы, в 8-разрядном микроконтроллере МС68НС705С8, прямая 8-разрядная адресация называетсяпрямой, а прямая 16-разрядная адресация называетсярасширенной.