Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭиСХ_ADSP21xx_1-2ред.doc
Скачиваний:
13
Добавлен:
13.11.2019
Размер:
916 Кб
Скачать
☆
    1. Другие команды

Из других часто используемых команд можно отметить следующие:

  • пустая команда (нет операции) NOP;

  • команды установки, сброса и переключения флага-условия

[IF условие]

SET

RESET

TOGGLE

FLAG.OUT

  • загрузка и извлечение данных из стеков

PUSH

POP

STS или CNTR, PC, LOOP

  • установка и сброс специальных режимов

    ENA

    DIS

    BIT_REV, M_MODE, TIMER

  • модификация индексно-адресных регистров без обращения к памяти

MODIFY (

I0, I1, I2, I3

I4, I5, I6, I7

,

M0, M1, M2, M3

M4, M5, M6, M7

)

Директивы

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

Пример:

.VAR/DM my_array[128]

Директива, объявляющая, что в памяти данных формируется массив из 128 шестнадцатибитовых элементов, с началом по адресу my_array.

.INIT my_array: <filename.dat>

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

.include «def2181.h»

Подключает файл def2181.h, расположенный в той же директории, что и программа, в котором как константы определены имена регистров и их отдельных бит, а также имена адресов векторов прерывания.

  1. Форматы представления чисел

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

Процессоры семейства ADSP-21xx поддерживают знаковые числа, представленные в формате с дополнительным кодом. Двоично-десятичный формат, формат с избыточными битами и величины со знаком не поддерживаются этими процессорами.

Целые числа представляются в прямом коде (рис. 4). Каждому биту соответствует определенная степень двойки, и в сумме они дают необходимое число.

Рис. 4. Представление целых беззнаковых чисел

В процессоре ADSP-2181, как во многих других, память данных разделена на шестнадцатиразрядные слова. Для увеличения количества представляемых чисел необходимо увеличить количество используемых разрядов, т.е. использовать несколько слов.

В знаковых числах, для представления знака отводится один бит, поэтому диапазон представления целых чисел со знаком от –215 − 1 = −32767 до 215 − 1 = = 32767. В качестве знакового выбирается старший бит, что дает возможность представлять положительные числа в прямом коде как числа без знака в меньшем диапазоне. Для представления чисел со знаком можно использовать три системы представления. Каждая из них получается путем модификации модуля числа, представленного в прямом коде.

Прямой код – в старший бит помещается 1, остальные биты остаются прежними (рис. 5).

Рис. 5. Знаковые числа в прямом коде

Обратный код – все биты инвертируются (рис. 6).

Рис. 6. Знаковые числа в обратном коде

Дополнительный код – все биты инвертируются, а к младшему разряду прибавляется 1 (рис. 7).

Рис. 7. Знаковые числа в дополнительном коде

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

В документации на процессор ADSP-2181 данный формат называется 16.0. Это означает что 16 разрядов отведено под целую часть и ноль разрядов отведено под дробную часть числа.

В дробном формате двоичная точка лежит внутри числа, поэтому некоторые или все биты его абсолютного значения имеют вес меньше единицы. На рис. 8 показан формат числа, двоичная точка которого расположена слева от трех самых младших бит, и указан их вес. Такой формат имеет обозначение 13.3.

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

Рис. 8. Дробный формат 13.3 беззнакового и знакового числа

Таблица 10

Дробные форматы и их диапазоны

Формат

Число целых бит

Число дробных бит

Наибольшее положительное значение (0x7FFF) в десятичной системе

Наименьшее отрицательное значение (0x8000) в десятичной системе

Значение наименьшего значащего бита (0x0001) в десятичной системе

1

2

3

4

5

6

1.15

1

15

0.999969482421875

-1.0

0.000030517578125

2.14

2

14

1.999938964843750

-2.0

0.000061035156250

3.13

3

13

3.999877929687500

-4.0

0.000122070312500

4.12

4

12

7.999755859375000

-8.0

0.000244140625000

5.11

5

11

15.999511718750000

-16.0

0.000488281250000

6.10

6

10

31.999023437500000

-32.0

0.000976562500000

7.9

7

9

63.998046875000000

-64.0

0.001953125000000

8.8

8

8

127.996093750000000

-128.0

0.003906250000000

9.7

9

7

255.992187500000000

-256.0

0.007812500000000

10.6

10

6

511.984375000000000

-512.0

0.015625000000000

11.5

11

5

1023.968750000000000

-1024.0

0.031250000000000

Окончание табл. 10

1

2

3

4

5

6

12.4

12

4

2047.937500000000000

-2048.0

0.062500000000000

13.3

13

3

4095.875000000000000

-4096.0

0.125000000000000

14.2

14

2

8191.750000000000000

-8192.0

0.250000000000000

15.1

15

1

16383.500000000000000

-16384.0

0.500000000000000

16.0

15

0

32767.000000000000000

-32768.0

1.000000000000000

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

При умножении входные значения могут иметь различные форматы, от которых будет зависеть результат. Язык ассемблер процессоров семейства ADSP-21xx позволяет описать, являются ли оба входных значения знаковыми, беззнаковыми или и тем и другим. Расположение двоичной точки в результате определяется из ее расположения в каждом из входных значений, что показано на рис. 9. Произведением двух 16-разрядных чисел будет 32-разрядное число. Произведение двух значений с форматами М.N и P.Q будет иметь формат (M+P).(N+Q). Например, произведение двух чисел в формате 13.3 будет иметь формат 26.6, а произведение двух чисел в формате 1.15 будет иметь формат 2.30.

Главное правило

Рис. 9. Формат результата умножения

Произведением двух чисел в формате с дополнительным кодом будет число с двумя знаковыми битами. Так как один из этих битов является избыточным, все биты результата можно сдвинуть на 1 бит влево. Кроме того, если одно входное значение было в формате 1.15, то после сдвига влево формат результата окажется равным формату другого входного значения (с 16 битами дополнительной точности). Например, при умножении числа в формате 1.15 на число в формате 5.11 получается число в формате 6.26. После сдвига влево на 1 бит результат имеет формат 5.27, т.е. представляет собой число в формате 5.11 плюс 16 самых младших бит.

Во всех процессорах семейства, кроме процессора ADSP-2100, целочисленный и дробный режимы управляются битом в регистре MSTAT. При перезапуске по умолчанию для совместимости с ADSP-2100 устанавливается дробный режим.

Дробный режим характеризуется тем, что результат умножения всегда подвергается сдвигу на 1 бит влево перед записью его в регистр результата. Сдвиг влево позволяет удалить один лишний знаковый бит, когда оба операнда были знаковыми числами, и получить в итоге результат в одном из представленных выше форматах. Когда оба операнда имеют формат 1.15, результат получается в формате 2.30. В дробной части 30 бит. После сдвига влево формат результата становится равным 1.31 и может округляться до 1.15. Таким образом, при использовании дробного формата наиболее удобно работать с форматом 1.15.

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

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