- •Микропроцессор мс68000
- •Команда dBcc
- •Команда Scc
- •Команды nop и stop
- •Управляющие структуры
- •Практическая часть.
- •Команды безусловной передачи управления .
- •Команды условного перехода.
- •Команды условного перехода с декрементом в регистре Dn
- •Команды работы с подпрограммами
- •Контрольные вопросы и задания.
Практическая часть.
Команды передачи управления можно разделить на 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 и убедитесь в том, что исходный массив данных был правильно перемещен в эту область.