ТЕСЕЙ (архитектура микроконтроллера)/Команды

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:12, 28 февраля 2016.

Ядро ТЕСЕЙ способно выполнить 52 инструкции.

  1. Управляющие (управляют процессом ветвления и циклами);
  2. Литеральные (выполняют действия с константами);
  3. Бинарные (выполняются над двумя операндами, соответственно, называются еще двухоперандными);
  4. Унарные (выполняются над одним операндом);
  5. Служебные (сброс, остановка процессора);

Бинарные команды

Команда MOV (бинарная операция) выполняет перенос данных:

MOV "куда","откуда"
MOV dst, src - то есть в dst записали scr значение.

Команда MOV в двоичном виде:

000001 sssss ddddd

Команда ADD (бинарная операция) выполняет сложение:

ADD dst,src - то есть dst=dst+src.

Команда ADD в двоичном виде:

000100 sssss ddddd

В RISC архитектуре фиксированная длина команд - 16 бит, поэтому команда делится на:

команда(6 бит) переменная(5 бит) переменная(5 бит)

На примере двоичного представления: sssss - первые две "ss" слева указывают на номер сегмента (A,B,C,D), а три "sss" справа указывают на номер регистра в сегменте (от 000 до 111 или от 0 до 7).

Компилятор генерит код команды 000001 01000 00111 в 0507h - код команды.

Система декодирования команд точно знает к чему относится каждый бит.

Замечание: в двухоперандных командах старшие три бита в двоичном представлениии всегда равны 0.

Литерные команды

Команада MOVL заносит константу в регистр:

MOVL dst, const

Команада MOVL в двоичном виде:

010 cccccccc ddddd,
где:
  • 010 - команда
  • cccccccc - значение константы
  • ddddd - пункт занесения константы

Команада ADDL (сложение значения в dst с константой):

ADDL dst, sconst

или в двоичном представлении:

001100 ccccc ddddd

Команада BIS (установка разрядов):

BIS dst, tconst

или в двоичном представлении:

0011 iopcccc ddddd

В примерах выше использовано несколько типов констант. Такое разделение появилось из-за того, что, с одной стороны, необходимо было различать команды в двоичном виде, а с другой - 8-битная система должна предполагать возможность сложения с 8-битными константами. Итого, существует три разных вида констант:

  • const - 5 бит
  • long const - 8 бит
  • short const - 5 бит

Команда BIS выставляет бит по заданной маске:

dst <-- dst OR tconst

tconst - задает 4 бита в зависимости от значения бита p:

  • p=0 - задаем биты в младшей тетраде
  • p=1 - задаем биты в старшей тетраде
TemplateExampleIcon.svg Пример Пример
BIS %a0, 0F0h
BIS %a0, 32h
32h - не представить в виде tconst. Последняя команда выполняется так (делится еща на две команды):
BIS %a0, 30h
BIS %a0, 02h.


Команды безусловного перехода (передачи управления)

JMP addr - передача управления по указанному адресу.

Комадна JMP в двоичном коде:

1000 00 aa aaaa aaaa

Команда JSR - переход в подпрограмму:

JSR addr

Команда JSR в двоичном коде:

1001 00 aa aaaa aaaa

Команда IJMP - косвенная передача управления:

0000 0000 0000 0011

Команды условного перехода

NOP:

0000 0000 0000 0000

DB (define byte) - распознает код программы, написанной в двоичном виде.


Более подробно с данным материалом можно ознакомиться здесь:

Подробное описание - Система команд - стр. 15-38 [1]

Подробное описание - Компилятор ассемблера TESSA 0.1 - стр. 63-78 [2]

Краткое описание системы команд - "шпаргалка" [3]