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

Практическая часть.

Команды передачи управления можно разделить на 4 группы:

1. Команды безусловной передачи управления;

2. Bcc <label> - условный переход по метке;

3. DBcc Dn,<label> -условный переход по метке с декрементом регистра Dn;

4. Команды работы с подпрограммами.

Замечание.

В приведенных ниже примерах будут использованы ранее не рассматривавшиеся команды:

CMP Dn,Dm Сравнение содержимого регистров

* Dm(приемника) и Dn (источника). Выполняет

* операцию вычитания (Dm)-(Dn) и по результату

* выставляет флаги N , Z , V èC (результат по ме

* сту приемника не записывается)

ADDA.L #I,An Прибавляет к содержимому регистра Аn длинное

слово I.

Команды безусловной передачи управления .

В набор команд МС68000 входят две команды безусловной передачи управления: BRA и JMP. Ниже мы расмотрим несколько примеров передачи управления.

JMP $900 Переход по адресу $900 с использованиемабсолютной

короткой адресации

При ассемблировании этой команды получается два слова-операционное слово команды и дополнительное слово, содержащее адрес $0900. При выполнении этой команды процессор расширяет знаковый бит дополнительного слова до 32-х битов и записывает в РС. На шину адреса выдается 24 бита программного счетчика PC.

JMP $900(PC) Переход по адресу $900 с использованием

относительной адресацииFEFE

BRA $900 Переход по адресу $900 с использованием

относительной адресации

Введите эти две команды, начиная с адреса $1000. Обратите внимание на вторые слова этих команд. Они оба содержат вычисленное ассемблером относительное смещение, равное $FEFE. Если сложить шестнадцатеричные числа $1002 и $FEFE, то получим адрес перехода $900. Здесь $1002 - содержимое счетчика команд РС после выборки команды перехода из оперативной памяти.

В команде BRA можно указать суффикс .S, но тогда длина перехода от текущей команды не может превышать -128...+127. Выгода использования такой команды состоит в том, что она занимает одно машинное слово.

Команды условного перехода.

Следующий пример демонстрирует реализацию структуры управления

IF <условие> THEN <действие1> ELSE <действие2>:

1000 MOVEQ #-1,D0 Записать константу -1 в регистр D0

MOVEQ #12,D1 Записать константу 12 в регистр D1

CMP.L D0,D1 Сравнение содержимого регистров

BHI $100E Если D1 больше по модулю, чем D0 , то идти к $100E,

MOVEQ #6,D0 иначе записать в D0 число 6

BRA $1010 Переход на $1010

100E MOVEQ #8,D0 Записать в D0 число 8

1010 NOP Точка останова

Выполните программу начиная с адреса $1000 в пошаговом режиме, обращая особое внимание на изменение содержимого регистра состояния CCR и адреса переходов. Поменяйте начальные данные в регистрах D0 и D1 между собой, и повторите эксперимент. Замените беззнаковую команду перехода BHI на команду BGT и проследите, как будет работать программа.

Приведем пример реализации управляющей структуры типа WHILE...DO. Пусть нам нужно переместить N длинных слов из области памяти, начинающейся с адреса, записанного в регистре A0, в область памяти, начинающуюся с адреса, хранящегося в регистре A1. Концом последовательности служит нулевое длинное слово, находящееся в конце ее. Программа, выполняющая эти действия, приведена ниже:

1000 LEA $1100,A0 Загрузить адрес в А0

LEA $1200,A1 Загрузить адрес в А1

1008 MOVE.L (A0)+,(A1)+ Перемещение длинного слова

BNE $1008 Повторять до тех пор , пока не встретится

нулевое длинное слово

NOP Точка останова

Перед выполнением программы необходимо создать в памяти начиная с адреса $1100 массив из длинных слов, оканчивающийся на нулевое длинное слово. Используйте для этого команду TUTORa MM 1000;L.

Запустите программу с адреса $1000, предварительно установив точку останова на команду NOP. После выполнения программы просмотрите область памяти начиная с адреса $1200 и убедитесь в том, что исходный массив данных был правильно перемещен в эту область.

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