Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р. №1-6-ЦОС.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
962.56 Кб
Скачать

5.1.3 Непосредственная адресация

В случае непосредственной адресации операнд содержится непосредственно в слове команды. В процессорах семейства `C5x имеются однословные команды с непосредственной адресацией (8-битовые, 9-битовые и 13-битовые константы) и двухсловные (16-битные константы) длинные команды с непосредственной адресацией. В коротких командах непосредственный операнд находится прямо в слове. В длинных командах непосредственный операнд содержится во втором слове.

Примеры команд с непосредственной адресацией:

1) RPT #99; повторение команды следующей за RPT 100 раз, непосредственный операнд расположен непосредственно в командном слове;

2) RPT #0FFFh ; повторение команды, следующей за RPT 1000h раз, в этом случае 16-битовая константа, задающая адрес, содержится в отдельном слове следующем за словом команды.

5.1.4 Циклическая адресация

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

На рисунке 5.1 приведен алгоритм циклической адресации. Из рисунка 5.1 видно, как будет распределяться последовательность отсчетов входного сигнала в буфере длиной 6 ячеек. В таком буфере, например, можно организовать линию задержки на 5T, где T – интервал дискретизации. Для этого надо последовательно считывать отсчеты x(0) и x(5), x(1) и x(6) и т.д.

Рисунок 5.1 - Алгоритм циклической адресации

В процессорах семейства `C5x имеется аппаратный механизм реализации циклических буферов, которые позволяют организовать два одновременно действующих циклических буфера, управляемых с помощью вспомогательных регистров. Существует 5 регистров, с помощью которых осуществляется управление циклическими буферами:

  • CBSR1 - регистр начального адреса первого циклического буфера;

  • CBSR2 - регистр начального адреса второго циклического буфера;

  • CBER1 - регистр конечного адреса первого циклического буфера;

  • CBER2 - регистр конечного адреса второго циклического буфера;

  • CBCR - регистр управления циклическими буферами.

Регистр управления (CBCR) определяет, какие вспомогательные регистры работают с данным буфером, разрешает/запрещает использование циклических буферов. Назначение отдельных битов этого регистра приведено в таблице 5.1.

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

Т а б л и ц а 5.1

Бит

Наименование

Функция

0 -2

CAR1

Указывает, какой вспомогательный регистр работает с циклическим буфером 1

3

CENB1

Циклический буфер 1, разрешено=1, запрещено=0.

При сбросе устанавливается в 0

4-6

CAR2

Указывает, какой вспомогательный регистр работает с циклическим буфером 2

7

CENB2

Циклический буфер 2, разрешено=1, запрещено=0.

При сбросе устанавливается в 0

Алгоритм изменения адреса для циклического буфера следующий:

Если (ARn = CBER) и (любая модификация AR),

то ARn = CBSR;

иначе ARn = ARn + шаг.

В добавление заметим следующее.

- если ARn = CBER и не производится модификация AR, текущий AR не модифицируется и остаётся равным CBER;

- когда текущий вспомогательный регистр = CBER, и производится любая модификация AR (инкремент или декремент), текущий AR будет установлен = CBSR;

- процесс изменения адреса входа в циклический буфер показан на рисунке 5.1.

Пример циклической адресации:

splk #200h, CBSR1; задание начального адреса циклического буфера1

splk #203h, CBER1; задание конечного адреса циклического буфера1

splk #0Eh, CBCR; указание на адресацию буфера с помощью регистра AR6 и ;разрешение использования циклического буфера 1

;Вариант 1

lar ar6, #200h

lacc * ;Загрузить в аккумулятор содержимое ячейки, указываемое AR6 = ;200h (начало циклического буфера), содержимое AR6 не меняется

;Вариант 2

lar ar6, #203h

lacc * + ; Загрузить в аккумулятор содержимое ячейки, указываемое AR6 ;= 203h (конец циклического буфера), увеличить AR6 на 1, но AR6 = CBER1, поэтому ;выполняется переход на начало буфера и будет AR6=200h

;Вариант 3

lar ar6, #203h

lacc * - ; AR6 указывает на конец буфера, в результате попытки ;модификации в AR6 будет занесён не адрес 202h, а адрес начала буфера AR6 = 200h