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

Команда сохранения значения регистра (Store Register Halfword)

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

STRH<Rd>, [<Rn>, <shifter_operand>]

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

Описание

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

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

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

Команда STRHдобавляет значение <shifter_operand> к значению регистра <Rn> и помещает полуслово из регистра <Rd> (биты 0..15) в память по этому адресу.

Примеры

STRH R6, [R1, #56]

В память по адресу R1+56 записывается младшее полуслово R6.

STRH R6, [R1, R12]

В память по адресу R1+R12 записывается младшее полуслово R6.

SUBARM

Вычитание (Subtraction).

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

SUB {<cond>}{S} <Rd>,<Rn>, <shifter_operand>

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

Описание

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

S– устанавливаетS-бит ­– бит условия (см. таблицу 1).

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

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

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

Вычесть содержимое Rn из Rs. Результат поместить в Rd. Вместо Rn может использоваться 3х битная константа.

Эти команды позволяют содержимое регистра Lo или 3-битной константы вычесть из регистра Lo. Все команды этой группы влияют на флаги регистра CPSR.

В зависимости от результата и S-бита происходит обновление флагов полей условия (см. таблицу 4).

Действие

Если условие (<cond>) выполнено, то (Rd) = (Rn) - (shifter_operand). Далее, еслиS= 1 иR15 задействован какRd, тогдаCPSR=SPSR, иначе (S= 1,R15 не задействован какRd) тогда формируются флагиN,Z,C,V.

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

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

Примеры

SUB R6, R2, #6

Записать значение в (R6) = (R2) – 6 и установить флаги условий.

SUBR7,R4,R12

В регистр R7 записывается значение результата вычитания регистраR12 изR4.

SUBTHUMB

Команда вычитания (Subtract)

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

SUB<Rd>, {<Rn>,} <shifter_operand>

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

Описание

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

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

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

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

Действие

Если регистр <Rn> указан, то (Rd) = (Rn) – (shifter_operand). Если как уменьшаемое выступает сам регистр <Rd>, то (Rd) = (Rd) – (shifter_operand). В соответствии с результатом формируются флагиN,Z,C,V.

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

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

Примеры

SUB R6, R2, #6

В регистр R6 записывается разность регистраR2 и константы. Устанавливаются флаги условий.

SUB R6, #6

Из регистра R6 вычитается константа, и разность заносится обратно в регистрR6. Устанавливаются флаги условий.

SUB R6, R2, R5

В регистр R6 записывается разность регистровR2 иR5. Устанавливаются флаги условий.

SUB SP, #56

Команда предназначена для выделения дополнительной памяти на вершине стека.

SWIARM