Читати книгу Розробка пристроїв на основі цифрових сигнальних процесорів фірми Analog Devices з
ЗМІСТ.
ЗМІСТ
Так, що ініціалізують величини будуть розміщені, починаючи з елемента buf[2]. Тут ініціалізуються другий, третій та четвертий елементи буфера buf величинами 3, 5 та 7 відповідно.
Якщо файл з даними знаходиться в директорії з програмою, необхідно вказати в дужках лише ім'я цього файлу. Якщо файл знаходиться в іншому каталозі, необхідно вказати шлях до цього каталогу та ім'я файлу. Наприклад, якщо файл init.dat для буфера з ім'ям buff розміщений у директорії C:ADSP2181PROG1, тоді директива INIT має бути застосована так:
Змінні дані та буфери можуть бути ініціалізовані за допомогою семирозрядного ASCII коду. Наступний приклад ініціалізує один чотирирозмірний буфер input кодами ASCII для букв A, E, F, Z. ASCII коди розміщуються у семи молодших розрядах 16-розрядної пам'яті даних або 24-розрядної пам'яті програм. Символи необхідно укладати в апострофи.
.INIT input: 'AEFZ';
Спеціальний синтаксис директиви INIT24 дозволяє зберігати 24-х розрядні дані в пам'яті програм. Це дає можливість отримати доступ до молодших 8-розрядів кожного 24-х розрядного слова пам'яті програм при ініціалізації буферів даних або змінних у вихідній програмі.
.INIT var: ^buff + 17;
.INIT24 var: ^buff + 17;
Директива GLOBAL забезпечує доступ до змінних, буферів та портів з інших модулів програми. Для доступу до однієї з цих структур інших модулів необхідно оголосити її директивою GLOBAL. Директива GLOBAL має формат:
.GLOBAL внутрішній_символ 1, внутрішній_символ 2. ;
Після того, як структура оголошена глобальною, інші модулі можутьзвертатися до неї у програмі. Попередньо ця структура повинна бути оголошена як зовнішня за допомогою директиви EXTERNAL.
Директива ENTRY дозволяє звертатися до програмних позначок в інших модулях. Це дозволяє використовувати мітку для виклику підпрограм або міжмодульних переходів. Директива ENTRY має формат:
.ENTRY мітка 1, мітка 2, . ;
З того часу, як мітка оголошена директивою ENTRY, інші модулі можуть звертатися до неї, ідентифікуючи її як зовнішню за допомогою директиви EXTERNAL.
Директива EXTERNAL дозволяє програмному модулю звертатися до глобальних структур даних (змінних, буферів та портів) та програмних міток, оголошених в інших модулях.
Структура повинна бути визначена раніше за допомогою директиви GLOBAL або ENTRY в тих модулях, де вона вперше оголошена. Інші модулі повинні використовувати директиву EXTERNAL, щоб відкрити доступ до зовнішніх структур. Директива має формат:
.EXTERNAL структура 1, структура 2, . ;
Директива INCLUDE використовується для включення інших вихідних файлів до файлу, призначеного для асемблювання. Асемблер відкриває, читає та асемблює вказаний файл, коли він зустрічає рядок оператора INCLUDE. Ассембльований код поєднується у вихідному файлі з розширенням obj. Коли асемблер досягає кінця увімкненого файлу, він повертається в первинний вихідний файл і продовжує обробку. Директива INCLUDE має такий формат:
Якщо файл, який має бути включений директивою INCLUDE, знаходиться в поточній директорії разом із програмою, у кутових дужках потрібно вказати лише ім'я файлу. Якщо файл знаходиться в іншому каталозі, необхідно вказати повний шлях до цього каталогу та ім'я файлу (або використовувати змінне середовище оточення ADII). Наприклад, якщо файл,який має бути включений, називається filter.dsp і розташований у директорії C:ADSP2181PROG2, тоді директива INCLUDE має бути задана таким чином:
Це дозволить асемблеру знайти файл. Існує інший спосіб вказівки шляху до файлу. Так можна вказати шлях, використовуючи змінне середовище оточення ADII за допомогою команди:
Ця команда повинна записуватись у файлі autoexec.bat операційної системи або в командному файлі для трансляції програми. Установка ADII, що дорівнює шляху до каталогу, дозволить асемблеру виявити файл. У цьому випадку можна задавати ім'я файлу без вказівки на повний шлях. Файл, включений директивою INCLUDE, може також містити в собі директиву INCLUDE. Вкладення файлів директивами INCLUDE обмежується лише розміром вільної оперативної пам'яті.
Директива INCLUDE дозволяє використовувати принцип модульного програмування. Наприклад, у багатьох випадках вона використовується для розвитку бібліотеки підпрограм або макросів, які застосовуються в різних програмах. Замість того, щоб щоразу переписувати підпрограми, можна приєднати макробібліотеку до асемблерного модуля, скориставшись директивою INCLUDE.
Директива MACRO створює у програмі макрос (набір інструкцій). Макрос використовується для повторення інструкцій, що часто використовуються, у вихідному тексті програми. Передача аргументів макросу реалізується подібність підпрограми, яка може бути використана в різних програмах. Допускається робити вкладення макросів. Макровкладення обмежені лише розміром вільної оперативної пам'яті. Вкладені макроси повинні бути оголошені у визначеній