Категории
Самые читаемые
ChitatKnigi.com » 🟢Справочная литература » Справочники » Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа

Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа

Читать онлайн Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа
1 ... 25 26 27 28 29 30 31 32 33 ... 52
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

Набор команд ADSP-2181 совместим вверх с набором команд ADSP-21XX, поэтому, программы, написанные для ADSP-21XX, могут выполняться на ADSP-2181 с минимальными изменениями. Процессор ADSP-2181 имеет ряд дополнительных команд. Каждая команда может быть выполнена отдельно в своем такте. Кроме того, система команд позволяет выполнять за один такт процессора многофункциональные команды.

Язык ассемблера позволяет использовать в командах арифметические или логические выражения. Список этих выражений и выполняемых с их помощью действий приведен в табл. 13.2.

Таблица 13.2 Список арифметических или логических выражений и выполняемых с их помощью действий

Выражение Действие = Присвоение + Сложение - Вычитание * Умножение AND Логическое «И» OR Логическое «ИЛИ» NOT Логическое отрицание XOR Исключающее «ИЛИ» PASS Пересылка ABS Абсолютное значение

Ниже приведены примеры записи некоторых команд языка ассемблера ADSP-21XX с объяснением их назначения.

DM(var1) = AX0;

Эта команда, знакомая читателям из предыдущих примеров программ, присваивает (записывает) значение регистра AX0 переменной var1, хранящейся в памяти данных.

MR = MR + MX1*MY1;

Данная команда выполняет операцию умножения и сложения. Он умножает входные значения из регистров MX1 и MY1, складывает результат умножения с текущим содержимым регистра MR (результат предыдущего умножения), а затем записывает результат в регистр MR.

При рассмотрении системы команд мы будем пользоваться условными обозначениями, приведенными в табл. 13.3. Эти обозначения позволяют сделать описание команд компактным.

Таблица 13.3 Условные обозначения системы команд

Обозначение Описание I0–I7 Индексные регистры DAG для косвенной адресации M0–M7 Регистры модификации DAG для косвенной адресации L0–L7 Регистры длины DAG для циклических буферов <data> Непосредственное значение данных <addr> Непосредственное значение адреса (абсолютный адрес или программная метка) <exp> Порядок (значение сдвига) в командах непосредственного сдвига (8-разрядное знаковое число) cond Код условия в условных командах term Код условия выхода из цикла DO UNTIL dreg Регистры данных (АЛУ, умножителя-накопителя или устройства сдвига) reg Любой регистр (включая регистры данных «dreg») ; Точка с запятой, разделитель команд , Запятая, разделитель нескольких операций в одной команде [] Квадратные скобки, содержащие дополнительные, необязательные части команд [, …] Запись нескольких операций или команд в любом порядке, разделенных запятыми |опция1| |опция2| |опция3| Список опций (в команде выбирается одна из опций) xop Операнд «x» yop Операнд «y» constant Операнд-константа

В табл. 13.4 приведен список регистров, допустимых к использованию в командах пересылки и многофункциональных командах.

Таблица 13.4 Список регистров допустимых к использованию в командах пересылки и многофункциональных командах

Регистр Примечание Регистры данных <dreg> AX0, АХ1, AY0, AY1 – AR – MX0, МХ1, MY0, MY1 – MR0, MR1, MR2 – SI, SE, SR0, SR1 – Остальные регистры <reg> I0, I1, I2, I3, I4, I5, I6, I7 – M0, M1, M2, M3, M4, M5, M6, M7 – L0, L1, L2, L3, L4, L5, L6, L7 – TX0, TX1, RX0, RX1 – SB, PX – ASTAT, MSTAT – SSTAT Только чтение IMASK, ICNTL – IFC Только запись CNTR – OWRCNTR Только запись

Следует обратить внимание на то, что регистры <dreg> являются подмножеством регистров <reg>, поэтому их можно применять в командах, где используется условное сокращение <reg>.

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

[IF cond] |AR| = xop + | yop      |;

          |AF|         | C        |

                       | yop + C  |

                       | constant |

Она означает, что если условие cond предыдущей команды выполняется, то в регистр AR или AF будет занесен результат сложения операнда xop с операндом yop или с переносом или с константой. Разрешенные операнды xop, yop и константы constant указываются для группы команд индивидуально, поскольку они не всегда могут быть произвольными. Например, для команд АЛУ разрешено использовать в качестве операнда xop регистры; AX0, АХ1, AR, MR0, MR1, MR2, SR0, SR1. В качестве операнда yop допускается использование регистров: AY0, AY1 и AF. Причем команда DIVS не может использовать регистр AY0.

Коды условий cond с описанием их назначения приведены в табл. 13.5.

Таблица 13.5 Коды условий cond с описанием их назначения

Код условия cond оператора IF Описание EQ Равно нулю NE He равно нулю LT Меньше нуля GE Больше или равно нулю LE Меньше или равно нулю GT Больше нуля AC Перенос АЛУ NOT AC Нет переноса АЛУ AV Переполнение АЛУ NOT AV Нет переполнения АЛУ MV Переполнение умножителя NOT MV Нет переполнения умножителя NEG Входной операнд xop отрицателен POS Входной операнд xop положителен NOT CE Счетчик циклов не пуст FLAG_IN* Вывод FI = 1 NOT FLAG_IN* Вывод FI = 0

* Только для команд JUMP и CALL.

1 ... 25 26 27 28 29 30 31 32 33 ... 52
Перейти на страницу:
Открыть боковую панель
Комментарии
Настя
Настя 08.12.2024 - 03:18
Прочла с удовольствием. Необычный сюжет с замечательной концовкой
Марина
Марина 08.12.2024 - 02:13
Не могу понять, где продолжение... Очень интересная история, хочется прочесть далее
Мприна
Мприна 08.12.2024 - 01:05
Эх, а где же продолжение?
Анна
Анна 07.12.2024 - 00:27
Какая прелестная история! Кратко, ярко, захватывающе.
Любава
Любава 25.11.2024 - 01:44
Редко встретишь большое количество эротических сцен в одной истории. Здесь достаточно 🔥 Прочла с огромным удовольствием 😈