Таблица 1.7. Список команд ARM
Описание |
Ассемблерная мнемоника |
Обновление флагов |
Действие |
Команды пересылки |
|||
Пересылка |
MOV{cond)S Rd, <0prnd2> |
N, Z,C |
Rd:= Oprnd2 |
Пересылка с побитной инверсией (NOT) |
MVN{cond}S Rd, <0prnd2> |
N, Z,C |
Rd:= OxFFFFFFFF EOR <Oprnd2> |
Пересылка SPSR в регистр |
MRS{cond} Rd, SPSR |
Rd:= SPSR |
|
Пересылка CPSR в регистр |
MRS(cond) Rd, CPSR |
Rd:= CPSR |
|
Пересылка из регистра в SPSR |
MSR{cond} SPSR{field}, Rm |
SPSR:= Rm |
|
Пересылка из регистра в CPSR |
MSR{cond) CPSR{field}, Rm |
CPSR:= Rm |
|
Пересылка непосредственного значения во флаги SPSR |
MSR(cond) SPSR{field},#32bit_Imm |
SPSR:= #32bit_Imm (только выбранные байты) |
|
Пересылка непосредственного значения во флаги CPSR |
MSR{cond} CPSR{field},#32bit_Imm |
CPSR:= #32bit_Imm (только выбранные байты) |
|
Арифметические команды |
|||
Сложение |
ADD(cond)S Rd, Rn <0prnd2> |
N, Z, C,V |
Rd:= Rn + Oprnd2 |
Сложение с учетом переноса |
ADC{cond}S Rd, Rn <0prnd2> |
N, Z, С, V |
Rd.= Rn + Opmd2 + Cany |
Вычитание |
SUB{cond}S Rd, Rn <0prnd2> |
N, Z, С, V |
Rd:= Rn - Oprnd2 |
Вычитание с учетом заема |
SBC{cond)S Rd, Rn <0prnd2> |
N,Z, C,V |
Rd:= Rn + Oprnd2 -- NOT(Cany) |
Обратное вычитание |
RSB{cond}S Rd, Rn <0prnd2> |
N, Z, C,V |
Rd:= Oprnd2 - Rn |
Обратное вычитание с учетом заема |
RSC{cond}S Rd, Rn <0prnd2> |
N,Z,C,V |
Rd:= Oprnd2 - Rn --NOT(Carry) |
Короткое умножение |
MUL{cond}S Rd, Rm, Rs |
N, Z,C |
Rd:= (RmxRs)[31:0] |
Короткое умножение с накоплением |
MLA{cond}S Rd, Rm, Rs, Rn |
N, Z, C, |
Rd:=((RmxRs) + Rn)[31:0] |
Длинное умножение беззнаковых чисел |
UMULL{cond}S RdLo, RdHi, Rm, Rs |
N, Z, С, V |
RdHi, RdLo:= беззнаковое (Rm x Rs) |
Длинное умножение беззнаковых чисел с накоплением |
UMLAL{cond}S RdLo, RdHi, Rm, Rs |
N, Z, С, V |
RdHi, RdLo:= беззнаковое (RdHi, RdLo + Rm x Rs) |
Длинное умножение чисел со знаком |
SMULL{cond}S RdLo, RdHi, Rm, Rs |
N,Z, C,V |
RdHi, RdLo:= знаковое (Rm x Rs) |
Длинное умножение чисел со знаком с накоплением |
SMLAL{cond}S RdLo, RdHi, Rm, Rs |
N, Z, C,V |
RdHi, RdLo:= знаковое (RdHi, RdLo + Rm x Rs) |
Сравнение |
CMP{cond) Rd, <Oprnd2> |
N, Z, С, V |
Обновление флагов CPSR по результатам операции Rn - Opmd2 |
Сравнение с отрицательным числом |
CMN{cond} Rd, <0prnd2> |
N, Z, C,V |
Обновление флагов CPSR по результатам операции Rn + Oprnd2 |
Таблица 1.7. Список команд ARM (продолжение)
Описание |
Ассемблерная мнемоника |
Обновление флагов |
Действие |
Логичекие команды |
|||
Тестирование битов |
TST{cond} Rd, <0prnd2> |
N,Z,C |
Обновление флагов CPSR по результатам операции RnANDOprnd2 |
Побитное сравнение |
TEQ{cond} Rd, <0prnd2> |
N,Z,C |
Обновление флагов CPSR по результатам операции Rn EOR Oprnd2 |
Логическое И |
AND{cond}S Rd, Rn <0prnd2> |
N,Z,C |
Rd:= Rn AND Oprnd2 |
Исключающее ИЛИ |
EOR{cond}S Rd, Rn <0prnd2> |
N, Z,C |
Rd:= Rn EOR Oprnd2 |
Логическое ИЛИ |
ORR{cond}S Rd, Rn <0prnd2> |
N, Z,C |
Rd:= Rn OR Oprnd2 |
Очистка битов (маскирование) |
BIC{cond}S Rd, Rn <0prnd2> |
N, Z,C |
Rd:= Rn AND NOT Oprnd2 |
Пустая операция |
NOP |
Нет операции |
|
Команды передачи управления |
|||
Переход |
B{cond} label |
R15:= label1' |
|
Переход с сохранением адреса возврата BR14 |
BL{cond} label |
R14:=R15-4, R15:= label1* |
|
Переход с возможностью смены состояния |
BX{cond} Rm |
R15:= Rm, переход в THUMB, если Rm[0] = 1 |
|
Команды загрузки из памяти |
|||
Загрузка слова |
LDR{cond} Rd, <a_mode2> |
Rd:= [адрес]2) |
|
Загрузка слова в привилегированных пользовательских режимах |
LDR{cond}T Rd, <a_mode2P> |
Rd:= [адрес]2' |
|
Загрузка байта |
LDR{cond}B Rd, <a_mode2> |
Rd:= нулевое дополнение [байт из адреса]2) |
|
Загрузка байта в привилегированных пользовательских режимах |
LDR{cond}BT Rd, <a_mode2P> |
Rd:= нулевое дополнение [байт из адреса]2) |
|
Загрузка байта со знаком |
LDR{cond}SB Rd, <a_mode3> |
Rd:= знаковое дополнение [байт из адреса]2) |
|
Загрузка полуслова |
LDR{cond}H Rd, <a_mode3> |
Rd:= нулевое дополнение [полуслово из адреса]2' |
|
Загрузка полуслова со знаком |
LDR{cond}SH Rd, <a_mode3> |
Rd:= знаковое дополнение [полуслово из адреса] |
|
Групповая загрузка в операции со стеком (POP) |
LDM{cond}<a_mode4L> Rd{!}, <reglist-pc> |
Загрузка списка регистров с указателем [Rn] |
|
Групповая загрузка в операции со стеком (POP) с возвратом (и обменом) |
LDM{cond}<a_mode4L> Rd{!}, <reglist+pc> |
Загрузка списка регистров, R15:= [адрес][31:1] |
|
Групповая загрузка в операции со стеком (POP) и сохранением CPSR |
LDM{cond}<a_mode4L> Rd{!}, <reglist+pc>A |
Загрузка списка регистров, CPSR:= SPSR |
Таблица 1.7. Список команд ARM (продолжение)
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |