Скачиваний:
27
Добавлен:
03.06.2014
Размер:
1.45 Mб
Скачать

Формат команд

Формат команд обработки данных группы ARM приведен на рис. 7. Эта команда будет выполнена, если условие Cond истинно, в противном случае команда будет пропущена. Все различные условия перечислены в табл. 2; если суффикс условия опущен, то команда выполняется безусловно.

Рис. 7. Команда обработки данных группы ARM

Команда формирует результат, выполняя указанную арифметическую или логическую операцию с одним или двумя операндами.

Первый операнд – всегда регистр (Rn). Второй операнд (shifter_operand) (табл. 3) может быть регистром со сдвигом (Rm), или 8-битной константой с циклическим сдвигом (#imm8) (в зависимости от значения бита "I" в команде). Следует отметить, что формат команды не позволяет записать константу боле 8 бит и, поэтому недопустимыми являются значения #0x1FF, #0x1FE, #0x1234. Однако, эта записанная в поле команды константа может автоматически циклически сдвигаться на любое четное значение (0, 2, 4, 6, .., 30) и, таким образом, программист может написать константы #0x12, #0xFF, #0x2FC0, #0xC000003F – значение поля сдвига формируется компилятором автоматически. Кроме того, следует знать, что команды, например, ADD и SUB, AND и BIC эквивалентны (комплементарны) за исключением соответственно отрицания и инвертирования операнда 2. Если циклически сдвинутая константа не может быть представлена в 8-битном поле, то используется комплементарная команда, если это не приводит к успеху – выдается сообщение об ошибке.

Флаги CPSR могут оставаться без изменений (S = 0) или выставлены в зависимости от результата выполнения этой команды (S = 1). Некоторые команды (ТSТ, TEQ, CMP, CMN) не записывают результат в регистр Rd. Они используются только для того, чтобы в зависимости от результата установить/сбросить флаги CPSR и, поэтому не включают поле S (предполагается S = 1).

Ниже приведена полная таблица форматов команд набора инструкций ARM

Ниже приведены форматы команда обработки данных группы THUMB

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

Далее приведена таблица 4, которая включает в себя краткое упрощенное описание команд ARM рассматриваемого микроконтроллера. Рассмотрены режим команды, мнемоника в ассемблере, способы адресации, действие команды, число циклов и слов (ЧС). В таблице приведены лишь основные режимы использования команд, она наглядна и понятна для восприятия – в большинстве случаев этого достаточно для использования команд; поле второго операнда Op2 заменяется любым выражением из последней колонки таблицы 3. Для простоты в командах обработки опущены поля {<cond>} (таблица 2, суффикс) и {S} (символ как таковой), если они присутствуют оба. Еще раз напомним, что команда не выполняется, если значение поля <cond> не соответствует полю флагов регистра состояния CPSR, а сгенерированный флаги не запоминаются, если отсутствует символ S. Полное описание каждой команды, включающее все детали и нюансы ее применения, содержится в учебном пособии “Справочник по системе команд”. Кроме того, удобно пользоваться справочной системой, открыв вкладку Books в окне Project Workspace и далее Complete User Guide – здесь Вы найдете информацию и об ассемблере, включая псевдо операторы организации программного кода, и о системе команд – последнее в разделе ARM Instruction Set User’s Guide.

В таблице 4 использованы следующие обозначения:

Rd, Rn, Rm, Rs – угловые скобки в адресах <Rd>, <Rn>, <Rm>, <Rs> этих регистров будут опускаться с целью экономии места в таблице;

cond – условие выполнения команды <cond> из табл. 2 (угловые скобки будут опускаться);

Op2 – один из способов представления операнда 2 <shifter_operand> из табл. 3 (угловые скобки будут опускаться);

* b – число машинных тактов, необходимых для выполнения пустых тактов сопроцессора, а S, I и C зависят от типа машинных тактов (информация взята с сайта http://www.gaw.ru)

Н – Непосредственная адресация

П – Прямая адресация

К – Косвенная адресация

И – Индексная адресация

cad – Command Address – метка, указывающая команду в ассемблерной программе, к выполнению которой следует перейти при определенных условиях. Фактически cad представляет собой 32-х разрядный адрес команды, но этот адрес автоматически преобразуется в относительной смещение со знаком rel и в таком виде храниться в формате команды

rel – относительное смещение со знаком между командой к выполнению которой следует перейти и командой перехода; диапазон возможных переходов зависит от формата команды – для команд B – ±32 Мбайта

#imm, #imm8, … – 8-битная константа (число бит определяется) с автоматическим циклическим сдвигом на любое четное значение (0, 2, 4, 6, .., 30)

РС (= R15) – Program Counter – счетчик команд

НС – непосредственное смещение

РгС – регистровое смещение

Таблица 4. Краткое представление инструкций ARM

Мнемоника

Адр.

Содержание

Число

циклов

ЧС

Примечание

ADD R2, R4, Op2

П, Н

(R2)← (R4) + (Op2)

1S*

1

Сложение

ADC R5, R3,Op2

П, Н

(R5) ← (R3)+(Op2) + (C)

1S*

1

Сложение с переносом

AND R2, R4,Op2

П, Н

(R2) ← (R4) & (Op2)

1S*

1

Логическое «И» , поразр.

B{cond} Rn

B{cond} cad

B{cond} cad

П

Н

Н

(PC) ← (Rn)

(PC) ←rel

Если (cond), то (PC)←rel

2S+1N

1

Команда перехода

BIC Rd,Rn,Op2

П, Н

(Rd) ← (Rn) & (Op2>)

1S

1

Bit Clear поразрядно

BL{cond} cad

Н

(R14) ← (R15);

(R15) ← rel

2

1

Branch with Link

BX{cond} Rm

П

(R15) ← (Rm); еслиRm[0]=0, переключение вARMрежим; еслиRm[0]=1 – то вTHUMB.

2S+1N

1

Перейти и сразу переключить ядро в другой режим

BLX{cond} Rm

П

(R15)← адрес след. истр.

BXRm

1

Запомнить адрес возврата

CDP{cond} <coproc>, <opcode_1>, Rd, Rn, Rm {, <opcode_2>}

П

Сообщение сопроцессору (если он есть) выполнить операции (opcode_1), (opcode_2)

1S+bI

1

Coprocessor Data Processing

CMP Rn, Op2

П, Н

(Rn) – (Op2); установка флагов

1S

1

Rd не меняется

CLZ{cond}Rd,Rm

П

(Rd) ← число нулевых битов до первого единичного бита в регистре (Rm)

1

1

CMN{cond}Rn, Op2

П, Н

(Rn) + (Op2); установка флагов

1

Rd не меняется

EOR Rd, Rn, Op2

П, Н

(Rd) ← (Rn)  (Op2)

1S

1

Исключающее ИЛИ поразрядно

LDC{cond}{L} Coproc, CRd, [Rn]

Передача данных между памятью и сопроцессором

LDM | STM {cond} <mode> Rn{!}, <registers_without_pc>

П.-И

Пр.-И

Загружает подмножество регистров. Поддерживает различные режимы стека. Эффективна для сохранения / восстановления контекста и передачи больших массивов данных

nS+1N+

+11

1

Load Multiple

LDR{cond}Rd, [Rn]

П, К

(Rd) ← ((Rn))

1S + 1N + 1I

1

Load register

LDR{cond}

Rd, [Rn,#imm5]

П, К

(Rd) ←

((Rn)+imm5)

1S + 1N + 1I

1

Load register

LDR{cond}Rd, cad

П

(Rd) ← (R15)+rel

1

Загрузить адрес команды

LDR{cond}B LDR{cond}H LDR{cond}SB LDR{cond}SH

П

Команды аналогичны LDR, но загружают соответственно байт (суффикс “B”), полуслово (суффикс “H”) и с расширением знака (суффикс “S”)

1

MCR{cond} p6,0,R4,c5,c6

П, К

(c6) ← p6 execute (opcode 0) with (R4)

1S+(b+1)*I+1C

1

Регистровый обмен с сопроцессором

MLA Rd, Rm, Rs, Rn

П

(Rd) ← (Rm)*(Rs) + (Rn);

1S+I*

*(m+1)

1

Умножение с накоплением

MOV Rd, Op2

П, Н

(Rd) ← (Op2)

1

1

Move

MRC<cond> <coproc>, <opcode_1>, Rd, <CRn>, <CRm>

{, <opcode_2>

П, К

Передача данных из сопроцессора в ARM регистр

1S+

+(b)I+1C

1

MRS Rd, SPSR

MRS Rd, CPSR

П

(Rd)← (SPSR)

(Rd) ← (CPSR)

1

1

Чтение статусного рег.

MSR{cond} SPSR_<fields>, Rm

MSR{cond} CPSR_<fields>, Rm

MSR{cond} SPSR_<fields>, #imm8

MSR{cond} CPSR_<fields>, #<immed_8r>

П

(SPSR) ← (Rm)

(CPSR) ← (Rm)

(SPSR) ← imm8

(CPSR) ←imm8

1

1

Move to Status Register –Запись в статусный регистр

MUL Rd,Rm,Rs

П

(Rd) ← (Rm)*(Rs)

2

1

Умножение

MVN Rd, Op2

П, Н

(Rd) ← (Op2>)

1

1

Загрузка инверсного значения

NOP

П

Нет операции; не может использоваться с cond

1

1

No OPeration

ORRRd, Rn, Op2

П, Н

(Rd) ← (Rn) OR (Op2)

1

1

Поразрядно

RSB Rd,Rn, Op2

П, Н

(Rd) ← (Op2)– (Rn)

Reverse subtract

RSС Rd Rn Op2

П, Н

(Rd)←(Op2)–(Rn)– (C)

with carry

SBCRd,Rn, Op2

П, Н

(Rd) ← (Rn)–(Op2)– (C)

1

1

Вычитание с учетом переноса

SMULBB{cond}

Rd,Rm,Rs

SMULBT{cond}

Rd,Rm,Rs

SMULTB{cond}

Rd,Rm,Rs

SMULTT{cond}

Rd,Rm,Rs

П

(Rd)←Rm[15:0]*Rs[15:0]

(Rd)←Rm[15:0]*Rs[31:16]

(Rd)←Rm[31:16]*Rs[15:0]

(Rd)←Rm[31:16]*Rs[31:16]

4

1

Умножение знаковых 16-битных операндов с 32-битным знаковым результатом

SMLAL<x><y><cond><RdLo>,<RdH1>, Rm,<Rs>

Пост-И,

пред-И

(RdHi):(RdLo)←

(Rm)*(Rs)+(RdHi):(RdLo)

1S+I*

*(m+2)

1

Умножение знаковых 16-битных операндов с 64-битным аккумулированием

STC{cond}{L} <coproc>, <CRd>, <addressig_mode>

П-И,

Пр-И

Сохранение регистров сопроцессора непосредственно в памяти

(n-1)S+

+2N+bl

1

STR{cond} Rd, [<Rb>, #Imm]

К с НС

((Rb)+Imm)←(Rd)

2N

1

Store register

STR{cond} Rd, [<Rb>,<Ro>]

К с РгС

((Rb)+(Ro)) ←(Rd)

2N

1

STR{cond}Rd,cad

П

(R15)+rel ←(Rd)

2N

1

Сохранить адрес команды

STR{cond}B

Аналогично STR, но сохраняет байт, аRdможет быть только R0, R2, R4, R6, R8, R10, R12

2N

1

STR{cond}H

Аналогично STR, но сохраняет полусловоRd[15:0]

2N

1

SUBR2,R4, Op2

П

(R2) ← (R4) – (Op2)

1

1

Вычитание

SUB Rd,PC,#imm3

П, Н

(Rd)← (PC) – imm3

2S+1N+

+1I

1

Вычесть смещение, заданное в # imm3 из содержимого рег-ра PC

SWI{cond} <imm24>

Н

(PC) ←0x08;

(SPSR_svc) ← (CPSR);

переключение в режим Supervisor

2S+1N*

1

Прогр. прерывание

SWP{cond} Rd, Rm, [Rn]

П, К

(Rd) ← ((Rn));

((Rn)) ← (Rm)

2S+1N+1I*

1

Обмен между регистрами и памятью словами

SWP{cond}BRd,Rm, [Rn]

П, К

Аналогично SWP, но пересылаются байты без знака

2S+1N+1I*

1

TEQ{cond}Rn,Op2

П, К

(Rn)(Op2) ; установка флагов

1

1

Тестирование по исключающему ИЛИ

TST{cond}Rn,Op2

П, К

(Rn) & (Op2), установка флагов

1

1

Список литературы по LPC2000

  1. Интегрированная среда Keil μVision3: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”/ Сост.: М. С. Куприянов, И. С. Зуев, Д.А.Варакин.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  2. Куприянов М. С., Зуев И.С., Варакин Д.А. Порты ввода/вывода микроконтроллеров семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  3. Куприянов М. С., Зуев И.С. Архитектура микроконтроллеров семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  4. Справочник по системе команд микроконтроллера LPC2000 на базе ARM-ядра. Учебное пособие к лабораторным работам по дисциплине “Микропроцессорные системы”/ Сост.: М. С. Куприянов, И. С. Зуев.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  5. Куприянов М. С., Зуев И.С., Варакин Д.А.. Система прерываний микроконтроллеров семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  6. Куприянов М. С., Зуев И.С. Таймеры микроконтроллеров семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  7. Куприянов М. С., Зуев И.С. Модуль ШИМ семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  8. Куприянов М. С., Зуев И.С. Аналого-цифровой преобразователь семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  9. Куприянов М. С., Зуев И.С., Варакин Д.А. Универсальный асинхронный приемопередатчик семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы””.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

  10. Куприянов М. С., Зуев И.С., Варакин Д.А. Интерфейс SPI семейства LPC2000: Методические указания к лабораторным работам по дисциплине “Микропроцессорные системы”””.– СПб.: СПбГЭТУ “ЛЭТИ”, каф. ВТ, в электронном виде, 2008.

27

Соседние файлы в папке Заказные системы