Предыдущая Следующая

Описание

Ассемблерная мнемоника

Обновление флагов

Действие

Сравнение

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 (продолжение)


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_29.html on line 829

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_29.html on line 829

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_29.html on line 829