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

Команда обмена (Swap Byte)

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

SWP{<cond>}B<Rd>, <Rm>, [<Rn>]

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

Описание

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

B– устанавливает B-бит – бит определяет режим байтовой передачи (см. таблицу 1).

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

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

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

Атомарная команда SWP осуществляет одновременный обмен содержимого двух регистров в виде байта или содержимого регистра в виде байта и памяти. Благодаря такому решению предотвращается прерывание обмена критическими данными при возникновении исключительной ситуации.

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

Благодаря команде SWP обеспечивается поддержка семафоров реального времени.

Примеры

SWPB R2,R3,[R4]

В регистр R2 загружается байт по адресу в R4, а младший байт R3 сохраняется в регистре R4.

TEQARM

Побитовая проверка на равенство (Test Equivalence)

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

TEQ {<cond>} <Rn>, <shifter_operand>

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

Описание

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

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

<shifter_operand> – второй операнд (см. таблицу 3).

TEQ используется, чтобы проверить, если два значения равны, не затрагивая флажок V (поскольку CMP делает). Флаги Sтакже не затронут во многих случаях. TEQ также полезен囶для того, чтобы проверить, имеют ли два значения тот же самый признак.

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

После сравнения, флажок N – логическое Исключительное ИЛИ знаковых разрядов этих двух операндов. Флаги условия обновляются на основании результата логически исключительного осуществления операции ИЛИ двух значений, так, чтобы последующие команды могли условно выполниться.

Примеры

TEQ Rc,#127 ; Частичная проверка,

CMPNE Rc,#" "-1 ; проверка диапазона

MOVLS Rc,#"." ; ЕСЛИ Rc<=" " ИЛИ Rc=ASCII(127)

; ТО Rc:="."

TSTARM

Проверка битов (test)

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

TST{<cond>}<Rn>, <shifter_operand>

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

Описание

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

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

<shifter_operand> – второй операнд (см. таблицу 3).

TST используется, чтобы определить, включает ли специфическое подмножество битов регистра по крайней мере один бит набора.

Команда TST сравнивает значение регистра с другим арифметическим значением. Флаги условия обновляются на основание результата выполнения операции логического "И" два значения, так, чтобы последующие команды могли условно выполниться. TST используется, чтобы определить, включает ли специфическое подмножество битов регистра по крайней мере один бит набора.

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

Общее использование для TST - провека, установлен ли единственный бит или нет.

Примеры

TST R7 ; проверка R7

JN R7NEG ; содержимое R7 отрицательно

JZ R7ZERO ; R7 содержит ноль

TSTTHUMB

Команда сравнения (Test)

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

TST<Rn>, <Rm>

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

Описание

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

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

Команда TST сравнивает значение регистра <Rn> с арифметическим значением хранящимся в <Rm>. В зависимости от результата логического сложения двух значений происходит обновление флагов полей условия (см. таблицу 4).

Действие

alu_out = (Rn) И (shifter_operand). Далее флагN=alu_out[31]. ФлагZ= 1, если alu_out = 0 иZ= 0, в противном случае. Флаги С иVсохраняются.

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

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

Примеры

TSTR7,R2

Сравнивается значение регистра R7cо значением регистра R2.