Лабораторная работа № 3
Программирование нейромикропроцессора NeuroMatrix® NM6403 с использованием макросов
Цель работы: ознакомление с языком ассемблера нейромикропроцессора NeuroMatrix® NM6403 (Л18789 ВМ1) и правилами описания и использования макросов в программе.
1. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
По материалам разделов 2 и 3 изучить структуру, формат ассемблерных инструкций, структуру микрокоманд (МК), порядок ввода данных, кодирование и выполнение МК.
Ознакомиться с порядком ввода микропрограмм и исходными данными.
Выполнить упражнения по указанию преподавателя.
2. ИСПОЛЬЗОВАНИЕ МАКРОСОВ В ЯЗЫКЕ АССЕМБЛЕРА
2.1. Синтаксис
Определение макроса:
macro имя_макроса ( [параметр1 [, параметр2 ...]] )
последовательность_элементов
end имя_макроса;
Вызов макроса:
имя_макроса( [параметр1 [, параметр2 ...]] );
Объявление внешних макросов, импорт из макробиблиотек:
import [имя_макроса1 [, имя_макроса2 ...]] from
имя_библиотеки;
2.2. Описание
Здесь имя_макроса - произвольный идентификатор. Формальные параметры макроса (если макрос имеет параметры) также должны быть идентификаторами.
Текст внутри макроса должен быть последовательностью синтаксически полных элементов программы на языке ассемблера: объявлений, определений, инструкций, директив, вызовов макросов и пр. (за исключением секций). Полная синтаксическая и семантическая проверка тела макроса производится только при подстановке, с учётом контекста подстановки и фактических параметров вызова.
В качестве аргументов вызова макроса могут быть использованы:
регистры,
неопределённые идентификаторы,
константные выражения.
При этом регистры и идентификаторы передаются по имени, а константные выражения предварительно вычисляются, фактическим параметром подстановки в последнем случае является числовое либо адресное значение - результат вычисления.
Примечание: передать в макрос известную программную сущность не по значению, а по имени невозможно. Нельзя, к примеру, передать в макрос имя переменной времени компиляции для её изменения внутри тела макроса.
Примечание: передача ещё не определённого идентификатора даёт возможность для создания внутри макроса новых программных сущностей, именованных заданным образом:
macro entry_point( name )
<name>
nul 10;
call subroutine;
end entry_point;
Определения макросов могут быть расположены в любом месте ассемблерного текста, однако предпочтительнее помещать их вне секций, в начале файла.
Подстановка макроса возможна в любом месте программы, где разрешено использование всех содержащихся в макросе конструкций. Например, макрос, содержащий инструкции, не может быть вызван вне секций.
Внутри тела макроса возможно использование блоков условной компиляции.
Запрещен явный и опосредованный рекурсивный вызов одного и того же макроса.
- Лабораторная работа № 1 Архитектура нейромикропроцессоров семейства NeuroMatrix® nm640х и их функциональные возможности
- 1. Описание и порядок пользования программой nmcalculator
- 1.1. Формирование векторной команды
- 1.2. Разбиение рабочей матрицы и запись весовых коэффициентов
- 1.3. Установка входных значений
- 1.4. Генератор кода
- 2. Порядок выполнения работы
- Лабораторная работа № 2
- 1. Указания к выполнению работы
- 2. Элементы языка ассемблера процессора nm6403
- 2.1. Формат ассемблерных инструкций
- 2.2. Векторные инструкции процессора
- 2.3. Регистры процессора
- 2.3.1. Основные регистры
- 3. Порядок выполнения работы
- 4. Контрольные вопросы
- Лабораторная работа № 3
- 2.3. Использование меток в макросах
- 2.4. Импорт макросов из макробиблиотек
- 3. Пример простейшей программы
- 4. Порядок выполнения работы
- Лабораторная работа № 4
- 1.2. Реализация алгоритма шифрования на процессоре nm6403
- Практическая часть
- 2.1. Реализация алгоритма гост 28147-89 на нейропроцессоре nm6403/6404
- 2.2. Реализация алгоритма гост 28147-89 на эмуляторе вектора векторных команд
- 2.3. Варианты заданий
- 2.4. Удаленный доступ к плате NeuroMatrix
- Библиографический список