Скачиваний:
66
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Федеральное агентство по образованию

________________________________________

Санкт-Петербургский государственный

электротехнический университет “ЛЭТИ”

________________________________________

Справочник по системе команд микроконтроллера lpc2000 на базеArm-ядра

Методические указания

к лабораторным работам

по дисциплине “Микропроцессорные системы”

Санкт-Петербург

Издательство СПбГЭТУ “ЛЭТИ”

2007

Введение

Для выполнения лабораторных работ по дисциплине «Микропроцессорные системы» необходимо иметь описание команд для микроконтроллера.

Данные методические указания представляют собой справочник по системе команд микроконтроллера LPC2000 на базе ARM-ядра, архитектура которого описана в методических указаниях “Архитектура микроконтроллера семейства LPC2000”.

Команды представлены для низкоуровневого языка Assembler. Для данного типа микроконтроллера предусмотрено две группы команд: 32-х разрядные команды ARM и 16-ти разрядные (упакованные) команды THUMB.

Методические указания состоят из трех разделов: в первом разделе описана общая часть для всей системы команд, во втором – полный перечень команд и в третьем – их подробное описание.

1. Общие сведения

В этом разделе представлены общие сведения о командах, а именно: обозначения параметров, используемых в описании команд, и общие сведения о форматах команд. Для более подробной информации следует обратиться к разделу 3 данного методического указания и к [4].

Для команд группы ARM и группы THUMB можно выделить ряд параметров, которые встречаються в описании большинства команд. Для удобства эти параметры вынесны в отдельную таблицу (Таблица 1.) В случае, если параметр команды отличается от приведенного в таблице, это будет уточнено непосредственно в описании данной команды.

В отдельную таблицу вынесены перечень условий кодов выполнения для параметра <cond> (Таблица 2) и более подробное описание <shifter_operand> (Таблица 3).

Таблица 1. Обозначения параметров, используемых в описании команд

Обозначение

Описание

<cond>

Содержит условие для выполнения команды. В режиме ARM все команды выполняются в зависимости состоянию регистра CPSR и поля условия самой команды. Это поле (биты 31:28) содержит условие, при которых команда будет выполнена. Если флаги C, N, Z и V установлены (сброшены) согласно коду поля условия, то команда будет выполнена, в противном случае эта команда будет проигнорирована.

Всего существуют 16 различных условий, каждое из которых определяется двухсимвольным суффиксом, добавляемым к мнемонике команды. Практически можно использовать только 15 различных условий, 16-е условие (1111) зарезервировано и не применяется.

При отсутствии в мнемонике команды условия выполнения или установлен суффикс AL, то эта команда будет выполнена безусловно, независимо от состояния флагов условия (регистр CPSR). Перечень условий описан в таблице 2.

<coproc>

Определяет имя сопроцессора и помещает номер сопроцессора в поле cp_num. Стандартное название регистров: R0,R1,….,R15.

<Rd>

Определяет ARM регистр назначения для операции. Если задан регистр R15, то флаги условий будут изменены случайным образом

<Rn>

Определяет адрес регистра процессора, содержащий первый операнд.

<Rm>

Определяет адрес регистра процессора, содержащий второй операнд.

<immed_[i]>

[i]-разрядное непосредственное смещение, которое прибавляется к значению счетчикаPCдля формирования адреса в памяти.

<opcode_[i]>

Код операции специфичный для сопроцессора

PC

Регистр процессора, выполняющий роль программного счетчика (Program counter).

<registers>

Список регистров, в которые ведется загрузка; список разделен запятыми и записывает в {} скобках. Список декодируется в список регистров путем установки i-ого бита в 1, если i-ый регистр включается в список, и 0 - в противном случае; это делается для каждого i.

<CRn>

Определяет регистр сопроцессора, содержащий первый операнд.

<CRm>

Определяет регистр сопроцессора, содержащий второй операнд.

<CRd>

Определяет регистр сопроцессора – получатель результата.

S бит

Устанавливает Sбит (бит[20]) команды в 1 и определяет, что команда изменяет значение битов [31:28] регистраCPSR(см. таблицу 4). ЕслиSопущен, битSустанавливается в 0 и регистрCPSRне меняется командой. Когда битSустановлен, возможны 2 ситуации:

а) Если регистр R15 не задействован как регистр <Rd>, флагиNиZустанавливаются в зависимости от результата сложения, а флаги C и V в зависимости от того, необходим ли перенос разрядов (появилось ли переполнение)

б) Если регистр R15 задействован как регистр <Rd>, значение регистра SPRS (Saved Program Status Register) копируется в CPSR. Этот формат команды непредсказуем если обработка происходит в пользовательском или системном режиме, т.к. эти режимы не используют SPSR.

<shifter_operand>

Может быть регистром со сдвигом (Rm), или 8-битной константой с циклическим сдвигом (Imm) (в зависимости от значения бита "I"[25] в команде). Более подробную информацию см. в таблице 3.

Таблица 2. Поле <cond>: Перечень кодов условий выполнения

Код

Суффикс

Флаги

Значение

0000

EQ

Z установлен

Равно

0001

NE

Z сброшен

Не равно

0010

CS

C установлен

Выше или равно

0011

CC

C сброшен

Ниже

0100

MI

N установлен

Отрицательный результат

0101

PL

N сброшен

Положительный результат либо ноль

0110

VS

V установлен

Переполнение

0111

VC

V сброшен

Нет переполнения

1000

HI

C установлен and Z сброшен

Выше

1001

LS

C сброшен or Z установлен

Ниже или равно

1010

GE

N равно V

Больше или равно

1011

LT

N не равно V

Меньше

1100

GT

Z сброшен AND (N равно V)

Больше

1101

LE

Z установлен OR (N не равно V)

Меньше или равно

1110

AL

(проигнорировано)

Всегда

Таблица 3. Поле <shifter_operand>: Операнд 2

Операнд

Тип

Мнемонический код

Операнд 2 <shifter_operand>

Значение константы

#32bit_Imm

Логический сдвиг влево

RmLSL#5bit_Imm

Логический сдвиг вправо

RmLSR#5bit_Imm

Арифметический сдвиг вправо

RmASR#5bit_Imm

Вращение вправо

RmROR#5bit_Imm

Регистр

Rm

Логический сдвиг влево

RmLSLRs

Логический сдвиг вправо

RmLSRRs

Арифметический сдвиг вправо

RmASRRs

Вращение вправо

Rm ROR Rs

Расширенное вращение вправо

Rm RRX