- •Справочник по системе команд микроконтроллера lpc2000 на базеArm-ядра
- •Введение
- •1. Общие сведения
- •Обработка данных
- •Региcтры cpsr/sprs
- •2. Перечень команд микроконтроллера lpc2000 на базе arm-ядра
- •3. Подробное описание команд микроконтроллера lpc2000 на базе arm-ядра
- •Команда сложения с переносом (Addition with carry)
- •Команда сложения с переносом (Addition with carry)
- •Команда сложения (Addition)
- •Операция сложения без учета флага переноса (Addition)
- •Операция сложения без учета флага переноса (Addition)
- •Операция сложения без учета флага переноса (Addition)
- •Операция сложения без учета флага переноса (Addition)
- •Операция сложения без учета флага переноса (Addition)
- •Команда логического и (And)
- •Команда логического и (and)
- •Команда арифметического сдвига вправо (Arithmetic Shift Right)
- •Команда арифметического сдвига вправо (Arithmetic Shift Right)
- •Переход (Branch)
- •Команда перехода по условию (Branch)
- •Команда безусловного перехода (Branch)
- •Команда сброса битов (Bit Clear)
- •Команда сброса битов (Bit Clear)
- •Контрольные точки (breakpoints)
- •Команда перехода со ссылкой (Branch and Link)
- •Команда перехода со ссылкой (Branch with Link)
- •Команда перехода со ссылкой и сменой режима (Branch with Link and Exchange)
- •Команда перехода со ссылкой и сменой режима (Branch with Link and Exchange)
- •Команда перехода со ссылкой и сменой режима (Branch with Link and Exchange)
- •Переход и переключение режима ядра (Branch and Exchange)
- •Переход и переключение режима ядра
- •Сообщение сопроцессору (Coprocessor Data Processing)
- •Подсчет нулевых битов (Count Leading Zeros)
- •Сравнение с отрицанием (Compare Negative)
- •Сравнение (Compare)
- •Установить флаги регистра cpsr для Rd – Rs.
- •Логическое побитовое «исключающее или» (Exclusive or)
- •Логическое побитовое «исключающее или» (Exclusive or)
- •Загрузить в сопроцессор из памяти (Load Coprocessor)
- •Загрузить в сопроцессор из памяти (Load Coprocessor)
- •Загрузить сразу несколько регистров (Load Multiple)
- •Загрузить сразу несколько регистров (Load Multiple)
- •Загрузить сразу несколько регистров (Load Multiple)
- •Команды множественной загрузки
- •Команда множественной загрузки( Load Multiple Increment)
- •Команда записи слова в регистр (Load Register)
- •Команда однократной передачи данных (Load Register)
- •Команда однократной передачи данных (Load Registr)
- •Команда однократной передачи данных (Load Registr)
- •Команда однократной передачи данных (Load Registr)
- •Команда записи байта в регистр (Load Register Byte)
- •Загрузка байта в регистр из памяти (Load register byte value from memory)
- •Загрузка двойного слова со знаком (Load Reister Doubleword)
- •Команда записи полуслова в регистр (Load Register Halfword)
- •Команда записи полуслова в регистр (Load Register Halfword)
- •Загрузка байта со знаком (Load Register Signed Byte)
- •Команда загрузки знакового байта (Load Register Signed Byte)
- •Загрузка полуслова со знаком (Load Register Signed Halfword)
- •Загрузка регистра полусловом со знаком (Load Register Signed Halfword)
- •Логический сдвиг влево (Logical Shift Left)
- •Логический сдвиг влево (Logical Shift Left)
- •Логический сдвиг вправо (Logical Shift Right)
- •Логический сдвиг вправо (Logical Shift Right)
- •Команда регистрового обмена с сопроцессором
- •Команда регистрового обмена с сопроцессором
- •Команда регистрового обмена с сопроцессором
- •Команда умножения, накопления
- •Загрузить в регистр константу
- •Пересылка (Move)
- •Пересылка (Move)
- •Пересылка (Move)
- •Команда перемещения данных из сопроцессора в arm регистр (Move to arm Register from Coprocessor)
- •Команда перемещения данных из сопроцессора в два регистра arm одновременно
- •Запись psr в регистр общего назначения (Move psr to General-purpose Register)
- •Запись в регистр состояния (Move to Status Register from arm Register)
- •Умножение (Multiply)
- •Умножение (Multiply)
- •Пересылка инверсии (Move Not)
- •Пересылка с инверсией (Move not)
- •Команда инвертирования (Negate)
- •Нет операции (No oPeration)
- •Логическое или (or)
- •Команда логического или (Or)
- •Команда перезагрузки кэша (a cache preload instruction)
- •Команда презагрузки кэша
- •Команда извлечения из стека (pop)
- •Размещение регистров в вершине стека
- •Команда добавление сразу нескольких операндов
- •Команда добавление сразу нескольких операндов с удвоением одного из них
- •Команда приведённого вычитания с удвоением второго операнда (double saturated substraction)
- •Команда приведённого вычитания (saturated substraction)
- •Циклический сдвиг вправо (Rotate Right Register)
- •Команда обратного вычитания (reverse substract)
- •Команда обратного вычитания с заемом (Reverse substract with carry)
- •Команда вычитания с заемом (Substract with carry)
- •Вычитание с переносом (Subtract with Carry)
- •Команда умножения числа со знаком и с накоплением
- •Команда умножения числа со знаком и накоплением
- •Знаковая операция умножения и сложения
- •Команда знакового умножения двух 16-ти битных операндов (Signed multyply)
- •Знаковая операция умножения
- •Команда обмена данными с сопроцесcором
- •Команда обмена данными с сопроцессором
- •Команда обмена данными с сопроцесcором
- •Команда обмена данными с сопроцессором
- •Команда группового хранения (Store Multiple )
- •Соответствия между мнемониками и состояниями битов команд
- •Сохранение не пустого подмножества рон (Store Multiple Increment After)
- •Команда сохранения регистра в памяти(Store Register )
- •Сохранение в памяти 32-х разрядных данных из рон (Store Register)
- •Сохранение в памяти 32-х разрядных данных из рон (Store Register)
- •Сохранение в памяти 32-х разрядных данных из рон (Store Register)
- •Команда сохранения регистра в памяти(Store Register Byte ) (байта)
- •Сохранение в памяти 8-ми разрядных данных из рон (Store Register)
- •Запоминание 2х слов (Stores two words).
- •Команда передачи полуслова между Lo регистром и памятью.
- •Команда сохранения значения регистра (Store Register Halfword)
- •Вычитание (Subtraction).
- •Команда вычитания (Subtract)
- •Команда программного прерывания (Software Interrupt)
- •Команда программного прерывания (Software Interrupt)
- •Команда обмена (Swap)
- •Команда обмена (Swap Byte)
- •Побитовая проверка на равенство (Test Equivalence)
- •Проверка битов (test)
- •Команда сравнения (Test)
- •Список литературы
Команда обмена (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.
TEQ – ARM
Побитовая проверка на равенство (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:="."
TST – ARM
Проверка битов (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 содержит ноль
TST – THUMB
Команда сравнения (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.