Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_TMS.doc
Скачиваний:
75
Добавлен:
10.06.2015
Размер:
776.7 Кб
Скачать

4. Ветвление с простым условием

Ветвления позволяют реализовать альтернативные вычисления в зависимости от каких-либо условий. Наиболее просто ветвление организуется для одного условия с одним отношением, например a<b.

Подготовка к работе

1. По указанной выше литературе изучить форматы и особенности выполнения логических и сервисных команд ассемблераTMS320C6x.

2. Выполнить пункты 3 и 4 отчета (см. стр. 3 – 4) в соответствии с первым заданием работы. При этом требования пункта 4 отчета ограничить программой и прогнозами результатов выполнения ее команд.

Задания и методические указания к их выполнению

1. На языке ассемблера TMS320C6x подготовить программу, реализующую ветвление (рис. 4) с одним простым условием. При этом:

операция 1 заключается в вычислении абсолютной величины числа, взятого из табл. 1 работы 2 по номеру варианта V = 33-N, а операции 2 и 3 – соответственно операциям 1 и 2 работы 3 по номеру варианта V = 31-N;

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

Раздел 1. Ввод исходных данных для выполнения операций 1-3.

Раздел 2. Ввод в используемые вусловии РОН исходных данных, обеспечивающих выполнение операции 1.

Раздел 3. Реализация операции ветви «Да» рис. 4.

Раздел 4. Ввод в используемые вусловии РОН исходных данных, обеспечивающих выполнение операций 2 и 3.

Раздел 5. Реализация операций ветви «Нет» рис. 4.

  • условие и способ формирования содержимого регистра условия R (назначить из РОН по своему усмотрению) выбрать из таблицы при V = N:

V

Условие ветвления

Способ (команда) формирования содержимого регистра условия R

1

2

3

1

(A8)  (A9)

CMPLTU

2

0 в пяти старших разрядах В8

Сброс области бит с 0-го по 26-й (CLR)

3

(A8)  0

SHR

4

(В8) четное

AND

5

(A8) < (A9)

CMPLT

6

(B8) = (B9)

XOR

7

(A8)  0

EXTU

8

0 в пяти старших разрядах В8

Сдвиг вправо на 27 разрядов (SHRU)

9

(A8) > (A9)

CMPGTU

10

(В8) нечетное

CLR

11

(A8)0

CMPGT

12

(B8)  (B9)

XOR

13

(A8)  (A9)

CMPLT

14

0 в пяти старших разрядах В8

Выделение области бит с 27-го по 31-й (EXT)

15

(A8)  0

CLR

16

(B8) четное

SHL

17

(A8)  (A9)

CMPLT

1

2

3

18

В пяти старших разрядах В8 хотя бы одна 1

Выделение области бит с 27-го по 31-й (EXTU)

19

(A8)0

EXT

20

0 в пяти старших разрядах В8

Конъюнкция с числом F8000000h(AND)

21

(A8) < (A9)

CMPLTU

22

(В8) нечетное

EXTU

23

(A8)0

SHRU

24

(B8) = (B9)

CMPEQ

25

(A8) > (A9)

CMPGT

26

1 в пяти старших разрядах В8

Сравнение (В8) с числом F7FFFFFFh(CMPLT)

27

(A8)0

AND

28

(B8) четное

EXT

29

(A8)  (A9)

CMPGTU

30

(B8)  (B9)

CMPEQ

где (Z) – содержимое регистра Z.

Алгоритмическая структура, приведенная на рис. 4, используется при программировании на языках высокого уровня. Однако в языке ассемблера, во-первых, возможны только два признака ветвления – содержимое регистра условия Rнулевое (выполняются операции одной ветви) или ненулевое (выполняются операции другой ветви). Для формирования этих признаков требуются дополнительные логические и/или сервисные операции, что должно быть отражено в алгоритмической структуре (рис. 5). При этом для одного и того же исходного условия признаки ветвления могут быть получены разными способами. Например:

1. В случае сравнения с 0 помимо команд сравнения (обсуждаются ниже) можно использовать знак числа (значение 31-го двоичного разряда). Для его выделения пригодны конъюнкция (команда AND) с числом 80000000h, выделение области из одного старшего бита (командаEXTилиEXTU), сдвиг вправо на 31 разряд (командаSHRилиSHRU), обнуление 31 младших разрядов (командаCLR).

2.Для определения четности числа можно использовать его конъюнкцию с числом 00000001h, выделение области из одного младшего бита, сдвиг влево на 31 разряд, обнуление 31 старших разрядов.

Эта множественность решений отражена в разделе «Способ формирования содержимого регистра условия R» таблицы задания, где для одного и того же условия в зависимости от варианта предлагаются различные команды его реализации.

Во-вторых, команды сравнения реализуют только строгие отношения: а < b,a>bиa=b. Поэтому в случае условийab,abиabследует использовать альтернативные условия –a>b, а <bиa=b, соответственно. При этом признаки выполнения ветвей «Да» и «Нет» блока ветвления меняются местами. Например, некоторая операция должна выполняться, только еслиab(признак «Да»). При использовании условияa>bзаданная операция должна выполняться только в случае его нарушения, то есть признак «Да» заменяется признаком «Нет».

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

Таким образом, в соответствии с заданием пример обобщенных алгоритма и программы (без указания конкретных чисел,имен регистров РОН, команд по формированию содержимого регистра условияR), соответствующих операциям 1 – 3, приведен на рис. 6.

Однако структуры рис. 6 не предъявляются к практическому использованию, то есть с этой точки зрения не являются реальными. Они удобны лишь для отладки – правильность реализации ветвления проверяется за один прогон программы. Если пренебречь этим удобством, отладку можно выполнить и на реальных в указанном смысле структурах (рис. 7). Правда, при этом потребуется два прогона программы.

2. Получить исполняемый программный модуль (см. стр. 6 – 7).

3. Загрузить исполняемый модуль в симулятор (см. стр. 8).

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

5. Предъявить результаты выполнения работы преподавателю, после чего завершить работу с симулятором (см. стр. 9).

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