Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Система команд и адресация данных для проектора...doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
435.2 Кб
Скачать

К содержимому регистра a1 прибавляется (add) константа –13. Результат помещается в регистр a6. Операция выполняется в функциональном блоке l1.

ADD . L2X A1, B1, B2;

К содержимому регистра A1 прибавляется содержимое регистра B1. Результат помещается в регистр B2. Символ «X» в обозначении блока .L2X показывает, что при выполнении операции используются перекрёстные связи между каналами обработки данных A и B.

SUB .L1 A1, A2, A3;

Из содержимого регистра A1 вычитается (subtract) содержимое регистра A2. Результат помещается в регистр A3.

7.4.2.2. Умножение и умножение с накоплением

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

Пример команды умножения с накоплением в процессоре ADSP-2181:

IF NOT MV MR = MR+MX0*MY0 (SS);

Если регистр, хранящий результат операции умножения/накопления, не переполнен (MV=0), выполняется операция умножения с накоплением. Символ «SS» означает, что оба сомножителя знаковые.

Примеры команд умножения в процессоре TMS320C64x.

Mpyu .M1 a1, a2, a3;

Команда перемножения (multiply) беззнаковых (unsigned) 16 – шестнадцатиразрядных чисел, хранящихся в 16 младших разрядах регистров A1 и A2, c сохранением результата в 32 разрядах регистра A3.

MPY .M1 A1, A2, A3;

Команда перемножения шестнадцатиразрядных знаковых чисел, хранящихся в младших разрядах регистров A1 и A2 (16LSB x 16LSB), c сохранением результата в 32 разрядах регистра A3.

Cmpy .M1 a0, a1, a3:a2;

Команда перемножения комплексных чисел (complex multiply). Действительные части сомножителей размещаются в 16 старших разрядах регистров A0 и A1, а мнимые – в 16 младших. Действительная часть произведения загружается в регистр A3, а мнимая – в регистр A2

7.4.2.3. Команды арифметического сдвига

При арифметическом сдвиге влево содержимого регистра младшие освободившиеся биты заполняются нулями, а старшие выдвигаемые биты теряются. При арифметическом сдвиге вправо младшие выдвигаемые биты теряются, а старшие освободившиеся заполняются расширением знака. Сказанное иллюстрируется рисунком

Рассмотрим примеры команд арифметического сдвига в процессоре ADSP-2181:

SI = 0xB6A3;

SR = ASHIFT SI BY -5 (HI);

Во входном регистре сдвигателя находится число 0xB6A3. Команда ASHIFT выполняет арифметический сдвиг этого числа на –5 двоичных разрядов, т.е. на 5 разрядов вправо. Модификатор HI означает, что сдвиг осуществляется относительно старшей части SR1 выходного регистра SR. Чтобы найти результат, нужно мысленно поместить входной операнд в SR1, а затем выполнить сдвиг вправо на 5 двоичных разрядов с расширением знака. Результат показан на рисунке.

SR = ASHIFT SI BY 5 (LO);

Команда выполняет арифметический сдвиг на 5 разрядов влево. Модификатор LO означает, что сдвиг выполняется относительно младшей части SR0 выходного регистра SR. Результат выполнения команды показан на рисунке.

Примеры команд арифметического сдвига процессоров TMS320C64x:

SHR .S1 A0, 8, A1

- арифметический сдвиг (Shift Right) содержимого регистра А0 на 8 разрядов вправо с расширением знака и записью результата в регистр A1,

SHL .S1 A0, 4, A1

- арифметический сдвиг (Shift Left) содержимого регистра A0 на 4 разряда влево с заполнением освободившихся младших разрядов нулями и записью результата в регистр A1.

7.4.2.4. Дополнительный набор арифметических команд

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

Рассмотрим некоторые дополнительные команды процессоров TMS320C64x:

ABS .L1 A1, A5;

Команда определяет абсолютное значение (absolute value) числа в A1 и пересылает его в A5.

AVG2 .M1 A0, A1,A2;

По этой команде находятся арифметическое среднее (average) двух знаковых чисел, занимающих 16 старших разрядов регистров A0 и A1, и арифметическое среднее двух знаковых чисел, находящихся в 16 младших разрядах регистров A0 и A1. Полученные средние значения сохраняются в 16 старших и 16 младших разрядах регистра A2 соответственно.

MAX2 .L2X A2, B8, B12;

Команда позволяет определить максимальное из двух знаковых чисел, находящихся в 16 старших разрядах регистров A2 и B8, и максимальное из двух знаковых чисел из 16 младших разрядов регистров A2 и B8. Полученные максимальные значения помещаются в 16 старших и 16 младших разрядов регистра B12 соответственно.

SAT .L2 B1:B0, B5;

Команда насыщения (saturation) работает следующим образом. Если 40-разрядное содержимое сдвоенного регистра B1:B0, больше 232-1, то в регистр B5 записывается 232-1, т.е. максимальное 32-разрядное положительное число, если содержимое регистра B1:B0 меньше –232, то в регистр B5 записывается минимальное 32-разрядное отрицательное число -232. В противном случае содержимое B1:B0 пересылается в B5.

7.4.3. Команды логических операций

К командам логических операций относятся AND –“И” (логическое умножение), OR-“ИЛИ” (логическое сложение), XOR- “ИСКЛЮЧАЮЩЕЕ ИЛИ”, NOT – “НЕ” (отрицание). Указанные операции выполняются побитно.

Приведём примеры команд логических операций процессоров ADSP-21xx:

AR = AX0 AND AY0 ;

AF = NOT AY1;

AR = AF OR AX0.

Логический сдвиг отличается от арифметического тем, что отсутствует расширение знака, которое имеет место при арифметическом сдвиге. При логическом сдвиге все свободные биты заполняются нулями.

SI = 0xB6A3;

SR = LSHIFT SI BY –5 (HI);

Команда выполняется подобно команде арифметического сдвига, рассмотренной в предыдущем разделе.

Рассмотрим примеры команд логических операций в процессорах TMS320C64x.

AND .L1 15, A1, A3; ;

В функциональном блоке L1 выполняется операция поразрядного логического умножения (bitwise and –поразрядное «и») константы 15 и содержимого регистра A1 с записью результата операции в регистр A3.

NOT .L1 A1, A2;

Выполняется операция поразрядного логического отрицания (bitwise not-поразрядное «не») содержимого регистра A1 с записью результата в регистр A2.

OR .S1 A3, A4, A5;

В функциональном блоке S1 выполняется операция поразрядного логического сложения (bitwise or –поразрядное «или») содержимого регистров A3 и A4 с сохранением результата в регистре A5.

7.4.4. Команды бит-манипуляций

Бит-манипуляцией называется выполнение операции над отдельным, указываемым в команде битом или группой битов. Это может быть: обнуление бита, установка бита, проверка бита, инверсия бита. Указанные операции используются обычно для изменения содержимого управляющих регистров процессора.

В процессорах ADSP-21xx к командам бит-манипуляций относятся: TEST BIT- проверка бита, SET BIT-установка бита, CLEAR BIT – стирание бита (установка «0»), TOGGLE BIT – переключение бита – замена “1” на “0” и наоборот.

Приведём пример команд бит-манипуляций.

AF=TSTBIT 5 OF AR;

Команда выполняет тестирование 5-го бита регистра АЛУ AR с записью результата в регистр AF. Тестирование осуществляется с помощью операции логического «И» содержимого регистра AR и операнда, содержащего «1» только в тестируемом разряде.

AR=CLEAR 13 OF AX0;

Команда записывает в регистр АЛУ AR значение операнда AX0 с нулевым битом №13. Для этого используется операция «и» (AND) содержимого регистра AX0 и операнда, содержащего «0» только в разряде №13.

Рассмотрим примеры команд бит-манипуляций в процессорах семейства TMS320C64x.

SET .S1 A0, 7, 21, A1;

Команда выполняется в функциональном блоке S1. Она устанавливает биты «1» в операнде, хранящемся в регистре A0, начиная с 7 и заканчивая 21 битом, c записью результата в регистр A1.

SET .S2 B0, B1, B2;

В данной команде в отличие от предыдущей значения пограничных битов определяются содержимым регистра B1: минимальное значение определяется битами 9..5, максимальное – битами 4..0.

7.4.5. Команды управления

Команды управления в целом обеспечивают программное управление работой процессора. К ним относятся:

  • команды безусловного перехода,

  • команды условного перехода,

  • команды цикла,

  • команды обращения к подпрограммам.

Команды безусловного перехода передают управление ячейке памяти программ, адрес которой указывается в команде. Например, команда JUMP(I4) в процессорах ADSP-21xx означает переход к ячейке памяти программ, адрес которой содержится в индексном регистре I4.