|
Описание |
Ассемблерная мнемоника |
Обновление флагов |
Действие |
|
Сравнение |
CMP Rn, Rm |
N, Z, С, V |
Обновление флагов CPSR по результатам операции Rn — Rm (производится для Lo — Lo, Lo-Hi, Hi-Hi) |
|
Сравнение с отрицательным числом |
CMN Rn, Rm |
N, Z, С, V |
Обновление флагов CPSR no результатам операции Rn + Rm |
|
Сравнение с непосредственным значением |
CMP Rn, #<8bit_Imm> |
N,Z, C,V |
Обновление флагов CPSR по результатам операции Rn — 8bit_Imm (8-битное непосредственное значение) |
|
Логические |
|||
|
Тестирование битов |
TST Rn, Rm |
N, Z, |
Обновление флагов CPSR по результатам операции Rn AND Rm |
|
Логическое И |
AND Rd, Rm |
N, Z, |
Rd:= Rd AND Rm |
|
Исключающее ИЛИ |
EOR Rd, Rm |
N,Z, |
Rd:= Rd EOR Rm |
|
Логическое ИЛИ |
ORR Rd, Rm |
N,Z, |
Rd:= Rd OR Rm |
|
Очистка битов (маскирование) |
BIC Rd, Rm |
N,Z |
Rd:= Rd AND NOT Rm |
|
Пересылка с побитной инверсией (NOT) |
MVN Rd, Rm |
N, Z, |
Rd:= NOT Rm |
|
Пустая операция |
NOP |
R8:= г8 (флаги не изменяются) |
|
|
Команды сдвига/вращения |
|||
|
Логический сдвиг влево |
LSL Rd, Rm, #<5bit_Imm> |
N,Z,C |
Rd:= Rm « 5bit_Imm (допустимые сдвиги 0...31. Флаг С изменяется, если сдвиг равен 0) |
|
Логический сдвиг влево |
LSL Rd, Rs |
N.Z.C |
Rd:= Rd « Rs[7:0] (флаг С изменяется, если Rs[7:0] = 0) |
|
Логический сдвиг вправо |
LSR Rd, Rm, #<5bit_Imm> |
N, Z,C |
Rd:= Rm » 5bit_Imm (допустимые сдвиги 0...31) |
|
Логический сдвиг вправо |
LSR Rd, Rs |
N, Z, С |
Rd:= Rd » Rs[7:0] (Флаг С изменяется, если Rs[7:0] = 0) |
|
Арифметический сдвиг вправо |
ASR Rd, Rm, #<5bit_Imm> |
N,Z,C |
Rd:= Rm ASR 5bit_Imm (допустимые сдвиги 0...31) |
|
Арифметический сдвиг вправо |
ASR Rd, Rs |
N, Z,C |
Rd:= Rd ASR Rs[7:0] (флаг С изменяется, если Rs[7:0] = 0) |
|
Циклический сдвиг (вращение) вправо |
ROR Rd, Rs |
N, Z,C |
Rd:= Rd ROR Rs[7:0] (флаг С изменяется, если Rs[7:0] = 0) |
|
Команды передачи управления |
|||
|
Условный переход |
Bfcond} label |
R15:= label (метка label должна находиться в пределах — 252...+258 байт от текущей команды. Суффикс AL не используется) |
|
|
Безусловный переход |
В label |
R15:= label (метка label должна находиться в пределах ±2к от текущей команды) |
|
Таблица 1.17. Список команд THUMB (продолжение)
|
Описание |
Ассемблерная мнемоника |
Обновление флагов |
Действие |
|
Переход с сохранением адреса возврата в R14 |
BL label |
R14:= R15 - 2, R15:= label (кодируется двумя командами THUMB. Метка label должна лежать в пределах +4М от текущей команды) |
|
|
Переход с возможностью смены состояния |
ВХ Rm |
R15:= Rm AND OxFFFFFFFE, переход в ARM, если Rm[0]= 0 |
|
|
Команды загрузки из памяти |
|||
|
Загрузка слова с непосредственным смещением |
LDR Rd, [Rn, #<5*4bit_Imm >] |
Rd:= [Rn + 5*4bit_Imm] |
|
|
Загрузка полуслова с непосредственным смещением |
LDRH Rd, [Rn, #<5*2bit_lmm >] |
Rd:= нулевое дополнение ([Rn + 5*2bit_Imm]J15:0]) (биты 31:16 сбрасываются) |
|
|
Загрузка байта с непосредственным смещением |
LDRB Rd, [Rn, #<5bit_Imm >] |
Rd:= нулевое дополнение ([Rn + 5bit_Imm][7:0]) (биты 31:8 сбрасываются) |
|
|
Загрузка слова с регистровым смещением |
LDR Rd, [Rn + Rm] |
Rd:= [Rn + Rm] |
|
|
Загрузка полуслова с регистровым смещением |
LDRH Rd, [Rn + Rm] |
Rd:= нулевое дополнение ([Rn+Rm][15:0]) (биты 31:16 сбрасываются) |
|
|
Загрузка полуслова со знаком с регистровым смещением |
LDRSH Rd, [Rn + Rm] |
Rd:= знаковое дополнение ([Rn+Rm][15:0]) (биты 31:16 и 15 устанавливаются) |
|
|
Загрузка байта с регистровым смещением |
LDRB Rd, [Rn + Rm] |
Rd:= нулевое дополнение ([Rn +Rm][7:0]) (биты 31:8 сбрасываются) |
|
|
Загрузка байта со знаком с регистровым смещением |
LDRSB Rd, [Rn + Rm] |
Rd:= знаковое дополнение ([Rn+Rm][7:0]) (биты 31:8 и 7 устанавливаются) |
|
|
Загрузка относительно PC |
LDR Rd, [PC, #<8*4bit_Imm >] |
Rd:= [(R15 AND OxFFFFFFFC)+ + 8*4bit_Imm] |
|
|
Загрузка относительно SP |
LDR Rd, [SP, #<8*4bit_Imm >] |
Rd:= [R13 + 8*4bit_Imm] |
|
|
Групповая загрузка |
LDMIA Rn!, <reglist> |
Загрузка списка регистров (с изменением базового регистра) |
|
|
Команды сохранения в памяти |
|||
|
Сохранение слова с непосредственным смещением |
STR Rd, [Rn, #<5*4bit_lmm >] |
[Rn + 5*4bit_Imm]:=Rd |
|
|
Сохранение полуслова с непосредственным смещением |
STRH Rd, [Rn, #<5*2bit_lmm >] |
[Rn + 5*2bit Imm][15:0]:= Rd[15:0] (игнорируются Rd[31:16]) |
|
|
Сохранение байта с непосредственным смещением |
STRB Rd, [Rn, #<5bit_Imm >] |
[Rn + 5bit_Imm][7:0]:= Rd[7:0] (игнорируются Rd[31:8]) |
|
|
Сохранение слова с регистровым смещением |
STR Rd, [Rn, Rm] |
[Rn + Rm]:= Rd |
|
|
Сохранение полуслова с регистровым смещением |
STRH Rd, [Rn, Rm] |
[Rn + Rm][15:0]:=Rd[15:0] (игнорируются Rd[31:16]) |
|
Таблица 1.17. Список команд THUMB (продолжение)
| Реклама: |
| Агентство КнязевЪ - организация деловых конференций и промо мероприятий. |