Читать «Искусство схемотехники. Том 3 (Изд.4-е)» онлайн - страница 6
Пауль Хоровиц
Пример: ADD.W D0JB000.W
Адрес операнда указан как непосредственная константа
Синтаксис: (An)
Пример: SUB.W D0, (А0)
Указанный регистр содержит адрес операнда
Синтаксис: (Аn) +
Пример: MOVE.B (А0) +, (А1) +
Аналогична косвенной, но после выполнения операции An инкрементируется на величину размера
Синтаксис: — 1Аn)
Пример: MOVE.W D0,-(A7)
An сначала декрементируется на величину размера, затем выполняется косвенная адресация
Синтаксис: d16(An)
Пример: MOVE.L (А0),100(А0)
Адрес операнда определяется как (An) плюс 16-разрядное знаковое смещение d16
Синтаксис: d8(An,Xn.W [или. L]) (Хn может быть либо Dn, либо An)
Пример: MOVE.L 100(A0),100(A0,D7)
Адрес операнда определяется как (An) плюс (Хп) плюс 8-разрядное знаковое смещение d8
Синтаксис: d16(PC)
Пример: LEA 100(РС), АЗ
Адрес операнда отличается от адреса этой команды на величину 16-разрядного знакового смещения
Синтаксис: d8(PC,Xn.W или. L)
Пример:
Адрес операнда отличается от адреса этой команды на величину суммы 8-разрядного знакового смещения и содержимого Хn.
Несколько пояснений: в первых двух режимах не адресуется память; адресуются
Косвенная (особенно с постинкрементом или предекрементом) хороша для работы с массивами или стеком; кроме того, если адрес уже находится в адресном регистре, такая адресация быстрее абсолютной, так как при выполнении команды адрес (абсолютный) не требуется извлекать из памяти. PC-относительные режимы адресации особенно удобны при написании «позиционно-независимых» программ, поскольку все адреса определяются относительно самих программных строк; заметьте, что 8- и 16-разрядные смещения представляют собой знаковые целочисленные дополнения до 2, позволяя описывать ячейки, отстоящие от точки отсчета на ±127 или ±32767 байт соответственно. Обратите еще внимание на то, что непосредственные или РС-относительные операнды нельзя модифицировать (они «неизменяемы»).
11.03. Представление команд на машинном языке
Как уже упоминалось выше, язык ассемблера, использованный нами в примерах, не является «объектным кодом», фактически выполняемым микропроцессором. Скорее это мнемоническое представление, удобное для написания программ. Последовательность команд языка ассемблера, составляющая программу, должна быть преобразована в последовательность двоичных байт, выполняемых процессором. Как и в случае МП 8086, каждая команда языка ассемблера МП 68000 преобразуется (ассемблируется) в несколько байт машинного кода. Код операции (коп) всегда занимает 2 байт, но в тех случаях, когда требуется определить режимы адресации, к нему могут добавляться дополнительные слова (двухбайтовые). В зависимости от вида операции и режимов адресации команда может иметь длину от 2 до 10 байт. Например, команда