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

Операция сложения без учета флага переноса (Addition)

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

ADD <Rd>, <Rm>, #<immed_3>

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

Описание

<Rd> - Регистр, в который записывается результат операции (см. таблицу 1)

<Rn> - Регистр, содержащий первый операнд команды сложения (см. таблицу 1)

<immed_3> - Второй операнд команды. 3-х битная константа (см. таблицу 1)

Команда добавляет 3-х битную константу к значению одного из регистров и сохраняет результат в другом регистре.

Регистр флагов модифицируется в зависимости от результата операции.

(Rd) = (Rn) + immed_3

N flag = Rd[31]

Z flag = if (Rd) == 0 then 1 else 0

C flag = CarryFrom( (Rn) + immed_3 )

V flag = OverflowFrom( (Rn) + immed_3 )

Пример

ADD R1, R0, #7

ADD(2) – THUMB

Операция сложения без учета флага переноса (Addition)

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

ADD <Rd>, <Rm>

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

Описание

<Rd>-Содержит первый операнд команды, сюда же записывается результат операции (см. таблицу 1). В поле команды номер регистра кодируется полем H1 (старший бит) и полем Rd (младшие три бита).

<Rm> - Регистр, содержащий второй операнд команды сложения (см. таблицу 1). В поле команды номер регистра кодируется полем H2 (старший бит) и полем Rm (младшие три бита).

Команда добавляет содержимое одного из регистров к другому.

Эта команда не модифицирует регистр флагов.

Если оба из регистров принадлежат нижнему ряду (H1 == 0 и H2 == 0), то результат не определен (UNPREDICTABLE).

Пример

ADD R0, R1

ADD(3) – THUMB

Операция сложения без учета флага переноса (Addition)

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

ADD <Rd>, PC, #<immed_8> * 4

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

Описание

<Rd> – Регистр, в который записывается результат операции (см. таблицу 1).

PC – счетчик команд (см. таблицу 1).

<immed_8> – Второй операнд команды. 8-битная константа (см. таблицу 1).

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

Пример

ADD R0, PC, #17

ADD(4) – THUMB

Операция сложения без учета флага переноса (Addition)

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

ADD <Rd>, SP, #<immed_8> * 4

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

Описание

<Rd> – Регистр, в который записывается результат операции (см. таблицу 1).

SP – указатель стека.

<immed_8> – Второй операнд команды. 8-битная константа (см. таблицу 1).

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

Пример

ADD R0, SP, #17

ADD(5) – THUMB

Операция сложения без учета флага переноса (Addition)

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

ADD SP, #<immed_7> * 4

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

Описание

SP - Регистр SP (указатель стека).

<immed_8> – Второй операнд команды. 8-битная константа (см. таблицу 1).

Команда добавляет учетверенное значение 7-битной константы к значению регистра SP.

Пример

ADD SP, #17

ANDARM

Команда логического и (And)

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

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

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

Описание

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

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

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

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

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

Команда ANDпроизводит операцию логического «И» со значениями регистров <Rn> и <shifter_operand> и записывает результат в регистре <Rd>. В зависимости от результата иS-бита происходит обновление флагов полей условия (см. таблицу 4).

Действие

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

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

Команда AND чаще всего используется для распознания одного из битов регистра путем проведения операции «И» с маской, в которой 1 стоит в распознаваемом бите, а 0 во всех остальных битах.

Примеры

AND R7, R4, R12

В регистр R7 записывается значение операции «И» над регистрами R4 и R12.

ANDEQ R2,R4,R5

Если Z = 1, то (R2) = (R4) AND (R5).

ANDTHUMB