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

Логический сдвиг влево (Logical Shift Left)

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

LSL <Rd>, <Rm>, <const_5>

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

Описание

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

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

<const_5> – 5-разрядная константа, на которую будет сдвинут влево первый операнд.

Данная форма команды LSLсдвигает содержимое регистра <Rm> на <const_5> разрядов влево и записывает результат в <Rd>. В освободившиеся при сдвиге разряды записывается 0. В зависимости от результата происходит обновление флагов полей условия (см. таблицу 4).

Действие

(Rd) = (Rm) << (const_5). Далее, устанавливаются флаги.

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

Данная форма команды LSLиспользуется либо для получения значения регистра <Rm> напрямую (LSL#0), либо для получения значения этого регистра умноженного на двойку в степени заданной в момент написания программы.

Примеры

LSLR0,R1, #10

Записывает в регистр R0 значение регистраR1 сдвинутое на 10 разрядов влево с заполнением нулями младших разрядов, что равно значению регистраR1 умноженному на 1024.

LSLR3,R2, #0

Записывает в регистр R3 значение регистраR2.

LSL(2) – THUMB

Логический сдвиг влево (Logical Shift Left)

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

LSL<Rd>, <Rs>

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

Описание

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

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

Данная форма команды LSLсдвигает содержимое регистра <Rd> на <Rs> разрядов влево. В освободившиеся при сдвиге разряды записывается 0. В зависимости от результата происходит обновление флагов полей условия (см. таблицу 4).

Действие

(Rd) = (Rd) << (Rs). Далее, устанавливаются флаги.

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

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

Примеры

LSLR0,R1

Сдвигает содержимое регистра R0 наR1 разрядов влево и сохраняет результат вR0, что эквивалентно умножениюR0 на 2R1.

LSR(1) – THUMB

Логический сдвиг вправо (Logical Shift Right)

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

LSR<Rd>, <Rm>, <const_5>

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

Описание

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

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

<const_5> – 5-разрядная константа, на которую будет сдвинут влево первый операнд.

Данная форма команды LSLсдвигает содержимое регистра <Rm> на <const_5> разрядов вправо и записывает результат в <Rd>. В освободившиеся при сдвиге разряды записывается 0. В зависимости от результата происходит обновление флагов полей условия (см. таблицу 4).

Действие

(Rd) = (Rm) >> (const_5). Далее, устанавливаются флаги.

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

Данная форма команды LSRиспользуется для получения без знакового значения отношения регистра и степени двойки, где степень задаётся константой в момент программирования.

Примеры

LSRR0,R1, #10

Записывает в регистр R0 значение регистраR1 сдвинутое на 10 разрядов вправо с заполнением нулями старших разрядов, что равно значению регистраR1 поделённому на 1024.

LSRR3,R2, #0

Записывает в регистр R3 значение регистраR2.

LSR(2) – THUMB