logo
Методичка (НСиНК) - лабораторные работы

Лабораторная работа № 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;

Определения макросов могут быть расположены в любом месте ассемблерного текста, однако предпочтительнее помещать их вне секций, в начале файла.

Подстановка макроса возможна в любом месте программы, где разрешено использование всех содержащихся в макросе конструкций. Например, макрос, содержащий инструкции, не может быть вызван вне секций.

Внутри тела макроса возможно использование блоков условной компиляции.

Запрещен явный и опосредованный рекурсивный вызов одного и того же макроса.