В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Обзор системы команд

Список системы команд

Общий формат команд

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

Формат построения системы команд в режиме ARM
Рис. 10. Формат построения системы команд в режиме ARM

Примечание: некоторые коды команд не определены, но в то же время их выполнение не вызывает исключения "неизвестная команда" (Undefined instruction exception), кроме команды умножения с установленным в "1" битом 6. Эти команды не должны применяться, хотя, некоторые из них могут быть реализованы в новых версиях ядра ARM.

Обзор системы команд

Таблица 5. Система команд в режиме ARM

Мнемоника Команда Действие
ADC Сложение с переносом Rd := Rn + Op2 + перенос
ADD Сложение Rd := Rn + Op2
AND Логическое И Rd := Rn AND Op2
B Переход R15 := адрес
BIC Очистить бит Rd := Rn AND NOT Op2
BL Переход со ссылкой R14 := R15, R15 := адрес
BX Переход и переключение режима ядра R15 := Rn, T бит := Rn[0]
CDP Обработать данные сопроцессором (зависит от типа сопроцессора)
CMN Сравнить с отрицательным операндом CPSR флаги := Rn + Op2
CMP Сравнение CPSR флаги:= Rn - Op2
EOR Исключающее ИЛИ Rd := (Rn AND NOT Op2) OR (op2 AND NOT Rn)
LDC Загрузить в сопроцессор из памяти Загрузить в сопроцессор
LDM Загрузить сразу несколько регистров Манипуляции со стеком (Pop)
LDR Загрузить регистр из памяти по указанному адресу Rd := (адрес)
MCR Скопировать регистр CPU в регистр сопроцессора cRn := rRn {<op>cRm}
MLA Умножение со сложением Rd := (Rm * Rs) + Rn
MOV Загрузить в регистр константу Rd : = Op2
MRC Скопировать регистр сопроцессора в регистр CPU Rn := cRn {<op>cRm}
MRS Переместить регистр статуса/флагов PSR в регистр Rn Rn := PSR
MSR Загрузить в PSR статус/флаги указанный регистр PSR := Rm
MUL Умножение Rd := Rm * Rs
MVN Загрузить регистр отрицательной константой Rd := 0xFFFFFFFF EOR Op2
ORR Логическое ИЛИ Rd := Rn OR Op2
RSB Обратное вычитание Rd := Op2 - Rn
RSC Обратное вычитание с переносом Rd := Op2 - Rn - 1 + Перенос
SBC Вычитание с переносом Rd := Rn - Op2 - 1 + Перенос
STC Сохранить регистр сопроцессора в памяти адрес := CRn
STM Сохранить сразу несколько регистров Манипуляции со стеком (Push)
STR Сохранить регистр в памяти <адрес> := Rd
SUB Вычитание Rd := Rn - Op2
SWI Программное прерывание Вызывается операционной системой
SWP Обменять местами содержимое регистра и памяти Rd := [Rn], [Rn] := Rm
TEQ Побитовая проверка на равенство CPSR флаги := Rn EOR Op2
TST Проверка битов CPSR флаги := Rn AND Op2