Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
617
Добавлен:
22.05.2015
Размер:
2.56 Mб
Скачать

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

2.3.1 Классификация команд

Современные микропроцессоры содержат богатый набор команд для обработки данных. Этот набор команд образует язык Ассемблер. Ассемблеры для современных микропроцессоров содержат сотни команд. Здесь надо иметь в виду, что Ассемблером называют не только язык программирования микропроцессоров и микроконтроллеров, но и средство программирования, то есть компилятор. На рисунке 2.2 представлена классификация команд микропроцессоров.

Система команд МП IA-32 делится на следующие основные группы команд:

  • пересылки;

  • арифметические;

  • логические;

  • передачи управления;

  • цепочечные;

  • ввода-вывода;

  • коррекции и преобразования данных;

  • команды для обработки чисел с плавающей точкой (FPU-расширение);

  • MMX-команды мультимедийного расширения;

  • XMM-команды векторного расширения.

В приложении Б методических указаний к лабораторным работам приведена система команд процессоров Intel.

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

Обобщённый формат машинной команды МП IA-32 представлен на рисунке 2.3, а описание её полей приведено в таблице 2.5 и 2.6. Значение в поле кода операции (opcode) определяет общий формат команды, то есть какие поля расположены следом, а также размер команды. При декодировании этого поля дешифратор команд определяет операцию, количество и тип операндов. Все остальные байты не являются обязательными. Поле Mod R/M (mode register/memory) определяет режим адресации и операнды команды. Поля immed-low и immed-high используются тогда, когда в команде присутствует непосредственно заданный операнд (константа). Поля disp-low и disp-high задают величину смещения, которая добавляется к базовому и индексному регистрам при использовании сложных режимов адресации типа [BX+SI+2]. Только некоторые команды содержат все перечисленные выше поля. Большая же часть команд имеет длину всего 2-3 байта.

Таблица 2.5. Значение поля mod команд процессоров Intel

Значение mod

Описание

00

Байты смещения disp‑low и disp‑high отсутствуют, кроме случая, когда поле r/m = 110

01

Присутствует один байт смещения disp‑low, значение которого расширяется со знаком до 16 бит. Поле disp‑highотсутствует

10

Присутствуют оба байта смещения disp‑low и disp‑high.

11

В поле r/m закодирован один из восьми РОНов

Таблица 2.6. Значение поля r/m команд процессоров Intel

Значение r/m

Операнд

000

[BX+SI] + смещение

001

[BX+DI] + смещение

010

[BP+SI] + смещение

011

[BP+DI] + смещение

100

SI + смещение

101

DI + смещение

110

[BP] + смещение, либо только смещение, если поле mod=00

111

[BP] + смещение

2.3.3 Однобайтовые команды

К этому типу относятся команды, у которых либо нет операндов, либо используется подразумеваемый операнд. Такие команды содержат только поле кода операции, значение которого и определяет выполняемые процессором действия. Часто используемые однобайтовые команды приведены в таблице 2.7.

На первый взгляд кажется, что команда с явно указанным операндом случайно причислена к однобайтовым командам. Однако на самом деле это не так. Разработчики системы команд процессоров Intel постарались присвоить уникальные коды операций некоторым часто используемым командам. В результате удалось достичь оптимизации размера кода и времени выполнения.

Таблица 2.7. Некоторые однобайтовые команды процессоров Intel

Команда

16-ричный код операции

Команда

16-ричный код операции

AAA

37

LODSB

AC

AAS

3F

XLAT

D7

CBW

98

INC DX

42