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

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

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

LDR{<cond>}B <Rd>, <addressing mode>

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

Описание

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

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

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

Команда LDRB (Load Register Byte) загружает байт из памяти по адресу, вычисленному с помощью <addressing mode>, дополняет байт нулями до 32-ух разрядного слова и записывает это слово в регистр <Rd>.

Примеры

LDRBR5, [R9]

в регистр R5 записывается байт хранящийся по адресу R9.

(старшие 3 байта нули)

LDRBR8, [R3, #4]

в регистр R8 записывается байт хранящийся по адресу R3 + 4.

(старшие 3 байта нули)

LDRBTHUMB

Загрузка байта в регистр из памяти (Load register byte value from memory)

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

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

LDRB <Rd>, [<Rn>, #<immed_5>]

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

Описание

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

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

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

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

Команда LDRB выполняет чтение байта из памяти.

Действие

Вычисляет адрес ячейки памяти посредством сложения содержимого регистров Rn и Rm (регистровое смещение) или #<ະmmed_5> (непосредственное смещение). Читает данные из ячейки памяти по этому адресу и загружает в младший байт регистра Rd, а остальная часть регистра заполняется нулями. Флаги не формируются.

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

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

Примеры

LDRB R2, [R0,R7]

Прочитать байт из памяти по адресу R0+R7, записать его в младшую часть R2 и обнулить старшую часть.

LDRB R3, [R5,#13]

Прочитать байт, расположенный по адресу, полученному после сложения содержимого R5 и числа 13, записать его в младшую часть R3 и обнулить старшую часть.

LDRDARM

Загрузка двойного слова со знаком (Load Reister Doubleword)

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

LDR{<cond>}D <Rd>, <addressing_mode>

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

Описание

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

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

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

Команда LDRD загружает пару регистров <Rd> и <Rd+1> двойным словом (64 бита). В качестве <Rd> использует только регистры R0, R2, R4, R6, R8, R10, R12.

Команда доступна только в ARM9E.

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

Задает способ адресации, позволяет загрузить 64-битное значение со знаком из памяти в регистр, для дальнейших манипуляций.

Примеры

LDRD R6,[R11] //загрузка R6 и R7 из памяти по адресу [R11]

LDRD R3,[R8,#3] // Прочесть из памяти двойное слово со знаком по адресу [R8+3] и записать его в R3 и R4

LDRD R3,[R8] // Прочесть из памяти двойное слово со знаком по адресу [R8] и записать его в R3 и R4

LDRD R3,[R8,#-1]! // Прочесть из памяти двойное слово со знаком по адресу [R8-1], записать его в R3 и R4, затем R8 = R8-1

LDRD R3,[R8],#8 // Прочесть из памяти двойное слово со знаком по адресу R8, записать его в R3 и R4, затем R8 = R8 + 3

LDRHARM