Разное / АВС. Работа с массивами
.pdf_____________________ |
___________________________ |
||||
I |
|
I |
I |
|
I |
I |
REG |
I <-----------> |
I |
MEM |
I |
I____________________I |
I__________________________I |
Назначим регистр R0 базовым для считывания данных с тумблеров. Адрес – 0xff200040
1.LDR R0, ADR_SW
-------
-------
ADR_SW: .word 0xff200040
2.LDR R0, =0xff200040 // компилятор создает ячейку в памяти данных и сохраняет в ней записанный в тексте команды адрес.
MOVW R0,#0x40
MOVT R0,#0xff20 // R0 получает данные из служебных регистров, в которые скопированы непосредственные операнды из текста команд.
Работа с массивами.
Заполнение массива
Устанавливаем базовый адрес. В качестве базового возьмем регистр R1. Массив начинается с адреса метки ARR.
LDR R1,=ARR
1. Заполняем массив через содержимое одного регистра в цикле.
STR R2, [R1],#4 // копируем содержимое R2 в ячейки памяти с базовым адресом в R1 с увеличением адреса на 4 единицы после каждого обращения
2. Заполняем массив цепочкой. Копируем в память содержимое нескольких регистров.
STMIA R1!,{R3-R7} // заполняем массив содержимым регистров R3,R4,R5,R6,R7 с последующим увеличением содержимого базового регистра R1 после каждой загрузки ячейки. После выполнения команды содержимое R1 = ARR + 4x5
Задание:
Набрать массив из 6 элементов, считываемых последовательно с тумблеров. Содержимое массива скопировать в регистры R6 – R11.