Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Упражнения / АВС. Упражнение. Команды сдвига

.pdf
Скачиваний:
16
Добавлен:
15.10.2020
Размер:
156.11 Кб
Скачать

Команды сдвига

В Ассемблере процессора Cortex9A есть 4 команды сдвига: LSL – Logical Shift Left , логический сдвиг влево;

LSR – Logical Shift Right, логический сдвиг вправо;

ASR – Arithmetic Shift Right , арифметический сдвиг вправо; ROR – Rotate Right , циклический сдвиг вправо.

Логические сдвиги и арифметический сдвиг производятся на разомкнутом регистре сдвига, циклический сдвиг – на кольцевом регистре.

Сдвиг влево.

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

Циклический сдвиг.

Форма записи – например: LSR R2, R3 ,#4

Операции обмена данными между процессором и внешними устройствами в МПС ARM-процессоров осуществляются с помощью команд LDR и STR, использующих область памяти для подключения внешних устройств. В таких областях памяти нет запоминающих ячеек, их заменяют регистры внутренних портов или структуры FIFO. В свою очередь, эти регистры и структуры связываются с устройствами ввода-вывода и, через них, выходят к внешним устройствам.

Обмен данными всегда может производиться в одном из двух режимов: по готовности и по прерываниям. Внутренний параллельный порт также может работать в одном из этих режимов.

Структура внутреннего параллельного порта процессора Cortex9A

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

Примеры записи символов, выводимых на сегментные индикаторы.

При формировании символа необходимо помнить, что свечение сегмента инициализируется подачей «1».

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

1,25нс (1,25х10**-9с) на коротких циклах коэффициент деления может быть порядка ~2**29 – 2**28

Пример программы для вывода бегущей строки из 2-х символов.

.text

.global _start

_start: LDR R0, ADR LDR R1, CNT MOVW R5, 0x3f76 MET:

STR R5, [R0] LSL R5, #8 LDR R2, DEL

LOOP: SUBS R2, #1 BNE LOOP

SUBS R1, #1 BNE MET fin: B fin

ADR: .word 0xFF200020 CNT: .word 5

DEL: .word 0x70000000

.end

Задание.

1.Записать программу для циклического вывода символа A на 4 индикатора.

2.Записать программу для вывода строкой справа-налево символов HI на 6 индикаторов.