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

Команда однократной передачи данных (Load Register)

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

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

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

Описание

<Rd> – регистр результата (см. таблицу 1).

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

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

Эта разновидность команды LDR поддерживает загрузку 32 разрядного слова в регистр общего назначения. Режим адресации полезен для достуа к полям структуры. При нулевом смещении адрес равен значению в базовом регистре <Rn>.

Действие

(Rd)<-(Rn)+(immed_5)*4

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

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

Примеры

LDR R1,[R2,#7]

В регистр R1 загружается слово, взятое из памяти по адресу (R2+7*4),т.е. происходит следующее: R1<-(R2+7*4).

LDR R0,[R3,#20]

Происзодит следующее: R0<-(R3+20*4).

LDR(2) – THUMB

Команда однократной передачи данных (Load Registr)

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

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

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

Описание

<Rd> – регистр результата (см. таблицу 1).

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

<Rm> – регистр сопроцессора, содержащий второй операнд (см. таблицу 1).

Эта разновидность команды LDR поддерживает загрузку 32 разрядного слова в регистр общего назначения. Режим адресации полезен для арифметики, содержащей указатель с большим смещением, и для доступа к отдельному элементу массива.

Действие

Rd<-(Rn+Rm)

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

Команда LDR(2) используется, когда необходимо загрузить слово в регистр общего назначения. Особенно эта команда полезна для арифметики, содержащей указатель с большим смещением, и для доступа к отдельному элементу массива.

Примеры

LDR R1,[R2,R3]

Происходит следующее: R1<-(R2+R3),прочитать слово по адресу(R2+R3) и записать его в R1.

LDR(3) – THUMB

Команда однократной передачи данных (Load Registr)

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

LDR <Rd>, [<PC>,#<immed_8>*4]

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

Описание

<Rd> – регистр результата (см. таблицу 1).

<PC> – программный счетчик (см. таблицу 1).

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

Эта разновидность команды LDR поддерживает загрузку 32 разрядного слова в регистр общего назначения. Режим адресации полезен для доступа к данным, зависимым от счетчика PC.

Действие

(Rd)<-((PC)+immed_8*4)

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

Команда LDR(3) используется, когда необходимо загрузить слово в регистр общего назначения. Особенно эта команда полезна для доступа к данным, зависимым от счетчика PC.

Примеры

LDR R1,[PC,#7]

Происходит следующее: R1<-(PC+7*4),в R1 загружается слово, находящееся по адресу (PC+7*4).

LDR R0,[PС,#60]

Происходит следующее:R0<-(PC+60*4).

LDR(4) – THUMB

Команда однократной передачи данных (Load Registr)

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

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

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

Описание

<Rd> – регистр результата (см. таблицу 1).

<PC> – программный счетчик (см. таблицу 1).

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

Эта разновидность команды LDR поддерживает загрузку 32 разрядного слова в регистр общего назначения. Режим адресации полезен для доступа к данным стека.

Действие

(Rd)<-(SP)+(immed_8)*4

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

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

Примеры

LDR R1,[SP,#7]

П роисходит следующее: R1<-(SP+7*4),в R1 загружается слово, находящееся по адресу (SP+7*4).

LDR R0,[SP,#60]

Происходит следующее: R0<-(SP+60*4)

LDRBARM