Скачиваний:
66
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Сохранение в памяти 32-х разрядных данных из рон (Store Register)

Синтаксис в ассемблере

STR <Rd>, [<Rn>, #<immed_5> * 4]

Формат команды представлен на рис. 2.

Описание

<Rd> – регистр-источник(см. таблицу 1).

<Rn> – выражение, которое определяет номер регистра общего назначения (см. таблицу 1).

<immed_5> – 5-и разрядное смещение (см. таблицу 1)

Данная разновидность инструкции STR (Store Register) позволяет сохранить в памяти 32-х разрядные данные из регистра общего назначения. Данный режим адресации используется для доступа к полям данных. Если значение смещения – 0, то адресом хранения будет значение базового регистра <Rn>.

Выравнивание

Если адрес в инструкции не выровнен по слову (т.е. два младших бита не равны 0) и не возникло исключения, то записанные в память данные будут непредсказуемы.

Примеры

STR R1,[R2,#20 * 4]

// сохранить слово, хранящееся в регистре R1 по адресу памяти R2 + 20*4

STR(2) – THUMB

Сохранение в памяти 32-х разрядных данных из рон (Store Register)

Синтаксис в ассемблере

STR <Rd>, [<Rn>, <Rm>]

Формат команды представлен на рис. 2.

Описание

<Rd> – регистр-источник(см. таблицу 1).

<Rn> – выражение, которое определяет номер регистра общего назначения (см. таблицу 1).

<Rm> – регистр формирования адреса (см. таблицу 1)

Данная разновидность инструкции STR (Store Register) позволяет сохранить в памяти 32-х разрядные данные из регистра общего назначения. Данный режим адресации используется для вычислений типа «указатель + значительное смещение» и для доступа к отдельному элементу массива.

Выравнивание

Если адрес в инструкции не выровнен по слову (т.е. два младших бита не равны 0) и не возникло исключения, то записанные в память данные будут непредсказуемы.

Примеры

STR R3,[R2,R6]

// сохранить слово, хранящееся в регистре R3 по адресу памяти R2 + R6

STR(3) – THUMB

Сохранение в памяти 32-х разрядных данных из рон (Store Register)

Синтаксис в ассемблере

STR <Rd>, [SP, #<immed_8> * 4]

Формат команды представлен на рис. 2.

Описание

<Rd> – регистр-источник(см. таблицу 1).

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

<immed_8> – 8-и разрядное смещение (см. таблицу 1)

Данная разновидность инструкции STR (Store Register) позволяет сохранить в памяти 32-х разрядные данные из регистра общего назначения. Данный режим адресации используется для доступа к данным из стека.

Выравнивание

Если адрес в инструкции не выровнен по слову (т.е. два младших бита не равны 0) и не возникло исключения, то записанные в память данные будут непредсказуемы.

Примеры

STR R1,[SP,#192 * 4]

// сохранить слово, хранящееся в регистре R1 по адресу памяти SP + 192*4

STRBARM

Команда сохранения регистра в памяти(Store Register Byte ) (байта)

Синтаксис в ассемблере

STR {cond} B <Rd> , <addressing_mode>

Формат команды представлен на рис. 1.

Описание

<cond> – поле условия (см. таблицу 1).

<Rd> – регистр-источник(см. таблицу 1).

<addressing mode> – способ адресации, определяет I, P, U, W, Rn.

{B} – указывает, что осуществляется передача байта (при отсутствии - передача слова).

Команда STRB сохраняет байт из регистра Rd в память по адресу, указанному в <addressing_mode>.

Действие

Команда будет выполнена, если условие (<cond>) истинно. Адрес ячейки памяти, используемой в этой команде, вычисляется посредством сложения или вычитания с некоторым смещением относительно указанного базового регистра. Смещение относительно базового регистра может быть задано либо в виде 12-битной константы, указанной в коде команды, или в виде второго регистра-операнда, а само смещение может быть либо добавлено (U=1), либо вычтено (U=0) из базового регистра Rn. Такие модификации смещения могут быть выполнены либо до выполнения пересылки (пред-индексация, P=1) или после нее (постиндексация, P=0).

Бит W позволяет выбрать режим адресации: инкремент или декремент. Модифицированное значение базового адреса либо записывается обратно в него же (W=1), либо остается без изменений (W=0). В случае постиндексной адресации бит W теряет смысл и поэтому обнуляется.

Недопустимо использование регистра R15 в качестве базового регистра (Rn), если в команде передаче данных бит перезаписи W=1 (write-back). Если W=0 и R15 используется в качестве базового регистра, то необходимо помнить, что этот регистр хранит адрес текущей команды.

Недопустимо использование R15 в качестве регистра, определяющего смещение. Если в команде записи регистра в память (STR) регистр R15 используется вместо регистра-источника (Rd), то сохраненное этой командой значение будет равно адресу команды плюс 12 байт.

Использование

Команда STRBиспользуется, когда необходимо сохранить байт из регистра в память.

Примеры

STRB R4,[R10, #0x100] // Записать байт из регистра R4 в память по                                                       адресу, полученному сложением                                                        содержимого регистра R10 и константы                                                        0x100.

STRB R10,[R7,-R4] // Записать байт из регистра R10 в память по                                                       адресу, полученному вычитанием                                                       содержимого регистра R4 из содержимого                                                       регистра R7.

STRBTHUMB