Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoda_beta2_8.doc
Скачиваний:
5
Добавлен:
16.11.2019
Размер:
838.66 Кб
Скачать

Rti; nop; nop; nop; /* 0x0008: irql1*/

RTI; NOP; NOP; NOP; /* 0x000C: IRQL0*/

RTI; NOP; NOP; NOP; /* 0x0010: SPORT0 transmit*/

RTI; NOP; NOP; NOP; /* 0x0014: SPORT0 receive*/

RTI; NOP; NOP; NOP; /* 0x0018: IRQE*/

RTI; NOP; NOP; NOP; /* 0x001C: BDMA*/

RTI; NOP; NOP; NOP; /* 0x0020: SPORT1 transmit*/

RTI; NOP; NOP; NOP; /* 0x0024: SPORT1 receive*/

RTI; NOP; NOP; NOP; /* 0x0028: Timer*/

RTI; NOP; NOP; NOP; /* 0x002C: Power down*/

После объявления необходимых переменных и описания таблицы векторов прерываний в .ASM файле должен располагаться раздел кода программы.

Пример раздела кода программы:

.section/code program;

start:

/* тело программы */

end: IDLE;

JUMP end;

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

3.3 Компоновка проекта и создание исполняемого .Dxe файла

При создании исполняемого .DXE файла исходный текст подвергается с помощью собственно ассемблера трансляции, в результате которой получается промежуточная объектная программа. В процессе трансляции ассемблер обнаруживает синтаксические ошибки – нарушения правил языка – и выдает листинг трансляции, содержащий диагностическую информацию и сообщения об ошибках. При наличии ошибок необходимо вернуться к исходному тексту программы для ее коррекции. Объектные программы, полученные в результате трансляции, не привязаны к каким-либо определенным адресам памяти, т.е. они являются перемещаемыми и могут выполняться при размещении в разных местах памяти.

Следующим после трансляции этапом подготовки исполняемого .DXE файла является компоновка одного или, как правило, нескольких оттранслированных исходных файлов. Основным средством компоновки проекта является компоновщик, который решает следующую задачу: привязывает перемещаемые разделы объектной программы к абсолютным адресам памяти. При этом разделы размещаются именно в той памяти, тип которой указан идентификатором тип_памяти.

Компоновку проекта и создание исполняемого .DXE файла рассмотрим на примере. В примере создаются два массива: массив исходных данных и массив, соответствующие элементы которого являются квадратами элементов исходного массива.

Создадим проект, для этого необходимо:

  • создать папку Lab1 для хранения всех файлов, включаемых в проект;

  • из меню Пуск\Программы\VisualDSP запустить 21xx Environment, после чего на экране появится окно, изображенное на рис.1;

  • создать новый файл проекта – меню File\New, далее в окне “Новый документ” выбрать Project и нажать OK;

  • сохранить файл проекта в папке Lab1 под названием Lab1.dpj;

  • в окне Project options, вкладке Project, поле Processor выбрать тип процессора ADSP-2189 и нажать OK;

  • создать новый файл для текста программы на ассемблере – меню File\New, далее в окне “Новый документ” выбрать Editor File и нажать OK;

  • в появившемся окне (рис.1 – окно 2) ввести текст программы:

/* начало файла Lab1.asm */

#define N 19

.section/data data1;

.VAR x[N];

.VAR y[N];

.section/code interrupts;

__reset: JUMP start; NOP; NOP; NOP;/* 0x0000: Reset vector*/

RTI; NOP; NOP; NOP; /* 0x0004: IRQ2*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]