Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОС 2.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.92 Mб
Скачать

48.Команды пересылок.

5.3.4.1. Команды пересылок

Команды пересылок предназначены для чтения операндов из памяти в регистр, записи операндов из регистра в память, организации ввода/вывода данных.

Основные типы пересылок:

В регистр:

из ячейки памяти данных, из ячейки памяти программ, из другого регистра, константы;

В ячейку памяти данных:

из другой ячейки памяти данных, из ячейки памяти программ , из регистра, константы;

В ячейку памяти программ:

из ячейки памяти данных, из регистра.

Команды пересылок могут отличаться наличием условия пересылки, указанием сдвига данных перед пересылкой, типом пересылаемых данных (старшее или младшее слово, полуслово, байт)

Рассмотрим примеры команд пересылок.

AX0 = DM(I0,M0); Из ячейки памяти, адрес которой находится в индексном регистре I0, данные пересылаются в регистр АЛУ AX0. После этого адрес, хранящийся в I0, изменяется на величину смещения M0.

DM(I1,M1) = AR; Пересылка осуществляется из регистра АЛУ AR в ячейку памяти, адрес которой находится в индексном регистре I1 с последующей модификацией адреса памяти на величину M1.

В процессорах TMS320C64x:

LDW .D1 *A10, B1; Команда выполняется в функциональном блоке .D1 и обеспечивает загрузку (LD-load-загрузка) слова (W-word-слово) в регистр B1 из ячейки памяти, адрес которой содержится в регистре A10.

LDW .D1 *++A4 [A12], A8; Команда выполняется в .D1 и обеспечивает загрузку слова, адрес которого в ячейке памяти определяется, исходя из содержимого индексного регистра A4 и содержимого регистра модификации A12. Новое значение адреса записывается в регистр A4. При A12>0 эта операция называется преинкрементом, а при A12<0 – предекрементом.

49. Команды арифметических операций.

1) Сложение и вычитание

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

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

AR = AX0 + AY0, AR = AX0 – AY0, AF = AX1+1.

Примеры команд сложения и вычитания в процессоре TMS320C64.

ADD .L1 -13, A1, A6 ; К содержимому регистра 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.

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

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.

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 соответственно.

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