- •Лабораторная работа n1. Изучение программно-аппаратных средств разработки и отладки систем на базе mc68000. Введение
- •Регистры адреса
- •Программный счетчик рс (Program Counter)
- •Регистр состояния sr (Status Register)
- •1.2. Форматы данных и размещение данных в памяти Форматы данных
- •Форматы команд
- •2. Структура и возможности учебного одноплатного компьютера sbc68k
- •Структура организации памяти модуля sbc68k
- •Порты параллельного ввода/вывода.
- •Программируемые таймеры/счетчики.
- •Контроллер дисковода.
- •3. Встроенный монитор (отладчик)
- •Инициализация системы.
- •Каналы последовательного обмена.
- •Символы управления терминалом.
- •Формат командной строки.
- •Выражение в качестве параметра.
- •Адрес в качестве параметра.
- •Сообщения монитора при выполнении команд.
- •Система команд монитора
- •Заполнение блока памяти (Block of memory Fill)
- •Перемещение блока (Block Move)
- •Ввод точек останова (bReakpoint)
- •Поиск ячеек памяти (Block of memory Search)
- •Преобразование данных (Data Conversion)
- •Отображение состояния регистров процессора.
- •Выполнение программы в реальном времени (go)
- •Непосредственное выполнение программы.
- •Выполнение программы до точки останова (Go unTil breakpoint)
- •Вывод справочной информации (hElp)
- •Загрузка программы в память модуля (lOad)
- •Отображение содержимого памяти (Memory Display)
- •Изменение содержимого памяти (Memory Modify)
- •Запись блока данных в память (Memory Set)
- •Удаление точек останова (nobReakpoint)
- •Отображение/изменение содержимого определенного регистра.
- •"Прозрачный" режим работы последовательных портов (Transparent Mode)
- •Трассировка (tRace)
- •Трассировка до текущей точки останова (Trace to Temporary breakpint)
- •3. Встроенный ассемблер/реассемблер.
- •Формат транслируемой строки.
- •Поле команды
- •Поле операндов
- •Формат реассемблируемой строки
- •Мнемонические обозначения и специальные символы
- •Список символов
- •Директива определения константы dc.W (Define Constant.Word)
- •4. Работа с сервером
- •Запуск и работа ассемблера.
- •Кросс-ассемблер. Формат записи программы.
- •Операторы в выражениях.
- •Определение методов адресации.
- •Особенности записи в ассемблере некоторых команд Команды переходов.
- •Команда movem.
- •Команды быстрых вычислений (moveq, addq, subq).
- •Директивы ассемблера. Org Установка начального адреса.
- •Equ Определение имени.
- •Set Установка имени.
- •Reg Определение набора регистров.
- •Dc Определение константы.
- •44 43 20 45 78 61 6D 70 6c 65 0d 0a 00 (в шестнадцатиричном виде). Dbc Определение блока констант.
- •Ds Резервирование памяти.
- •End Конец транслируемого файла.
- •Формат s-Record
- •Содержимое записи s-record.
- •Типы записей s-record.
- •Практическая часть
- •1. Ввод исходных данных и анализ результатов работы программы с помощью команд просмотра и модификации памяти и регистров.
- •2. Ввод программы с помощью встроенного ассемблера
- •3. Режимы выполнения программы
- •4. Подготовка, ассемблирование и загрузка программы с помощью программных средств сервера.
Команда 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. Желательно не описывать одновременно (в одном наборе) регистры адреса и данных, хотя ассемблер не расценивает это за ошибку.
