Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
86
Добавлен:
16.04.2013
Размер:
249 Кб
Скачать

Команда movem.

Команда MOVEM, которая используется для сохранения и восстановления набора регистров, может иметь две формы:

MOVEM <список регистров> <эффективный адрес>

MOVEM <эффективный адрес> <список регистров>

Список регистров может быть записан в форме явного списка регистров. Однако, если один и тот же список регистров используется в программе много раз, то для его обозначения в качестве имени может использоваться директива REG (см. описанние директивы REG ниже). Например, имя списка регистров WORKSET может определяется директивой REG следующим образом:

WORKSET REG A0-A4/D1/D2

При этом две следующие команды выполняют одинаковые функции:

MOVEM.L WORKSET,-(SP)

MOVEM.L A0-A4/D1/D2,-(SP)

Если используется имя списка регистров, оно должно быть определено до использования в команде MOVEM.

Команды быстрых вычислений (moveq, addq, subq).

Команды MOVE, ADD и SUB имеют "быстрый" вариант выполнения. Ассемблер использует быстрые варианты автоматически, когда возможно, или они могут быть описаны явно с помощью мнемоник MOVEQ, ADDQ или SUBQ.

Команда MOVEQ может использоваться для перемещения непосредственных данных в диапазоне от -128 до +127 в регистр данных.

Команда ADDQ (SUBQ) складывает (вычитает) непосредственные данные в диапазоне от 1 до 8 с (из) любым приемлимым источником.

Директивы ассемблера. Org Установка начального адреса.

Ассемблер содержит 32-разрядный локальный счетчик, значение которого изначально равно 0 и увеличивается на некоторую величину всякий раз, когда ассемблируется очередная команда или выполняется директива сохранения данных. Содержимое счетчика может быть установлено директивой ORG. Обычно она используется для задания начальных адресов размещения программы в памяти и соответствующих мест внутри нее. Директива имеет следующий формат:

<метка> ORG <выражение>

где результат <выражения> представляет собой начальный адрес блока программы. Сообщение об ошибке будет возникать при попытке установить локальный счетчик на нечетную величину, в этом случае счетчик будет загружен величиной на 1 большей. Поле <метка> необязательно и, в случае наличия, имя метки будет указывать на новую величину локального счетчика.

Equ Определение имени.

Директива используется для определения имени, величина которого не изменяется внутри программы. Директива имеет следующий формат:

<метка> EQU <выражение>

где <выражение> не должно содержать ссылок на последующие имена. <метка> должна быть определена, в противном случае появляется сообщение об ошибке. Сообщение об ошибке также появляется при попытке переопределить имя установленное директивой EQU, как метку или используя любую директиву определения имени.

Set Установка имени.

Директива SET подобна предыдущей директиве, но отличается от нее тем, что имя, определенное с помощью SET может быть позднее переопределено другой директивой SET (но не EQU или REG). Директива имеет следующий формат:

<метка> SET <выражение>

Reg Определение набора регистров.

Набор регистров состоит из списка регистров, разделенных наклонной чертой ("/"). В диапазон регистров включаются либо единичные регистры ("An" или "Dn"), либо группы регистров ("An-Am" или "Dn-Dm"), которые включают в себя все регистры между описанными (могут следовать в любом порядке старшинства). Например, следующая директива определяет имя REGSET как список регистров D0, D1, D2, D3, D7, A1, A2а и A3:

REGSET REG D3-D0/D7/A1-A3

Регистры могут указываться в любой последовательности. Тот же самый формат регистров может использоваться в явном виде командой MOVEM. Желательно не описывать одновременно (в одном наборе) регистры адреса и данных, хотя ассемблер не расценивает это за ошибку.

Соседние файлы в папке Motorola - Описание лаб