Главная > Схемотехника > Искусство схемотехники, Т.3
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

11.02. Система команд и способы адресации

В табл. 11.1 приведен полный набор команд МП 68000. Чтобы образовать правильный оператор (команду) языка ассемблера, следует указать операнды (с помощью одного из 12 режимов адресации) и тип данных (байтов, слово или длинное слово). На языке ассемблера фирмы Motorola оператор выглядит следующим образом:

источник, приемник

Здесь ОПЕРАЦИЯ берется из табл. 11.1, размер есть В, W или L (байт, слово или длинное слово соответственно), а источник и приемник могут представлять регистры, непосредственные константы или ячейки памяти. Ниже приведено несколько примеров с указанием способов адресации.

Таблица 11.1. Набор команд МП 68000/8

Продолжение табл. 11.1

В первом примере устанавливаются в 1 все 16 бит регистра (символ обозначает «шестнадцатеричное», а указывает на «непосредственную» константу); вторая команда копирует байт из ячейки памяти, адрес которой находится в АО, в ячейку памяти, адрес которой находится в третья прибавляет -разрядное знаковое целое к -байтовому («длинному») целому, которое начинается в памяти с байта, адресуемого через , после чего содержимое увеличивается на 4; последняя команда проверяет бит 2 в ячейке памяти , устанавливая соответствующим образом флаг нуля Z (для последующей команды условного перехода). Заметьте, что операнды следуют в порядке - источник, приемник, что противоположно нотации МП 8086.

МП 68000 позволяет использовать почти все режимы адресации и размеры операндов с любой командой («Справочное пособие программиста МП 68000» исчерпывающе описывает все допустимые сочетания; наиболее полезная информация собрана в табл. 11.2). В результате написание изящных и эффективных программ на языке ассемблера оказывается относительно простой задачей. Например, работая с МП 8086 и желая проанализировать состояние флага порта ввода-вывода, вы должны будете сохранить и восстановить содержимое регистра AL и в сумме использовать 5 команд (PUSH, IN, TEST, ). МП 68000 позволяет выполнить ту же операцию с помощью всего двух команд: BTST и никакие регистры не нужны, потому что бит памяти , следовательно, регистры порта) можно проанализировать непосредственно. Более того, «автоинкрементный» режим адресации вроде дает возможность работать с массивами. Хотя мы еще не описали все режимы адресации и команды, вы вполне сможете выполнить следующее упражнение.

Упражнение 11.1. Скопировать массив длиной байт из таблицы, начинающейся в ячейке в таблицу, начинающуюся в ячейке . При решении этой задачи будет полезна команд WGT метка (переход если больше нуля).

Режимы адресации. В приведенных выше примерах команд операции выполнялись над константами, содержимым регистров и содержимым ячеек памяти (или портов). Архитектура МП 68000 предусматривает богатый набор «режимов адресации» для определения этих операндов. В табл. 11.3 перечислены 12 режимов адресации, которые рассматриваются фирмой Motorola как 14. Вот что они значат:

Таблица 11.2. Разрешенные режимы адресации

(см. оригинал)

Таблица 11.3. Режимы адресации МП 68000/8 рядного знакового смещения и содержимого .

Несколько пояснений: в первых двух режимах не адресуется память; адресуются регистры или непосредственные константы (т. е. константы, включенные в поток команд; они могут быть только источниками, но никогда не приемниками). Все остальные режимы служат для адресации памяти. Абсолютная адресация удобна для обращения к портам ввода-вывода или к отдельным ячейкам памяти. Косвенная (особенно с постинкрементом или предекрементом) хороша для работы с массивами или стеком; кроме того, если адрес уже находится в адресном регистре, такая адресация быстрее абсолютной, так как при выполнении команды адрес (абсолютный) не требуется извлекать из памяти. -относительные режимы адресации особенно удобны при написании «позиционно-независимых» программ, поскольку все адреса определяются относительно самих программных строк; заметьте, что 8- и -разрядные смещения представляют собой знаковые целочисленные дополнения до 2, позволяя описывать ячейки, отстоящие от точки отсчета на или байт соответственно. Обратите еще внимание на то, что непосредственные или РС-относительные операнды нельзя модифицировать (они «неизменяемы»).

<< Предыдущий параграф Следующий параграф >>
Оглавление