Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / motorola / 68LAB1.DOC
Скачиваний:
27
Добавлен:
16.04.2013
Размер:
249.25 Кб
Скачать

Команды быстрых вычислений (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. Желательно не описывать одновременно (в одном наборе) регистры адреса и данных, хотя ассемблер не расценивает это за ошибку.

Dc Определение константы.

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

<метка> DC.<размер> <константа 1>,<константа 1>,...

Метка определяет адрес начала записи последовательности. Параметр <размер> определяет размерность данных, используемых для записи: байт (.B), слово (.W) или длинное слово (.L); по умолчанию выбирается размер слово.

Каждая константа может представлять собой выражение или символьную строку. Если константа является символьной строкой, заключенной в апострофы, то ее запись может происходить при любом указанном размере. При этом, если строка нацело не помещается в соответствующее количество слов или длинных слов, то оставшиеся байты заполняются нулями. Строки и выражения могут одновременно присутствовать в одной и той же директиве DC.

При записи слов (DC.W) или длинных слов (DC.L) запись констант будет производится начиная с границы слова в памяти, увеличивая на 1, если необходимо, содержимое локального счетчика.

Рассмотрим следующий пример:

TEXT DC.B 'DC Example',$0D,$0A,0

Данная директива запишет в память, начиная с ячейки TEXT, следующую последовательность байт:

Соседние файлы в папке motorola