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

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

Аналогичные команды используется в процессорах TMS320C6xx:

B .S1 loop, b .S2 b10.

В первой из этих команд переход осуществляется к адресу метки LOOP, а во второй – к адресу, указанному в регистре B10.

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

Команда процессора TMS320C64x [B0] B .S1 LOOP выполняет переход к адресу метки “LOOP”, если содержимое регистра B0 не равно нулю.

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

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

Рассмотрим пример организации цикла в процессорах ADSP-21xx.

CNTR = 10 ; Загружается счетчик цикла.

DO LOOP UNTIL CE ; Команда выполнять цикл «LOOP», пока

CNTR>0.

. . . . . . . . . . ; Команды тела цикла.

LOOP: . . . . . . . ; Последняя команда цикла и проверка счет

чика цикла

Команда DO LOOP UNTIL CE задает условия организации цикла. Во время ее выполнения в стек счетчика команд помещается адрес следующей за ней команды.

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

Рассмотрим программную организацию цикла в процессоре tms320c64xx.

MVK .S1 100, A1

LOOP:

. . . . . . . . . . .

SUB .S1 A1, 1, A1

[A1] B .S1 LOOP

. . . . . . . . . . . . .

Команда MVK загружает в регистр A1 количество повторений цикла 100. После каждого выполнения тела цикла команда SUB уменьшает содержимое A1 на 1. Последняя команда цикла осуществляет переход к началу цикла, если содержимое A1 больше нуля. В противном случае выполняется команда, следующая за командой условного перехода.

Использование подпрограмм требует наличия в системе команд команды вызова подпрограммы и команды возврата из подпрограммы.

Рассмотрим пример вызова подпрограмм в процессорах ADSP-21xx:

IF FLAG_IN CALL FILTR; В этой команде вызов (CALL) подпрограммы осуществляется по условию IF FLAG_IN. Это условие выполняется, если на выводе FI (вход) действует сигнал логической «1». В этом случае осуществляется переход к первой команде подпрограммы с меткой FILTR. Подпрограмма начинается с метки FILTR и заканчивается командой возврата из подпрограммы RTS (return from a subroutine):