Упражнение. Форматы команд машинного языка

Команда центрального процессора состоит из кода операции и одного или нескольких операндов (объектов, над которыми совершается операция). В зависимости от числа операндов, команды подразделяются на:

- безадресные команды – команды, не имеющие операндов или имеющие неявно указанные операнды;

- одноадресные команды – команды производящие операцию над одним объектом или одним явно и одним или несколькими неявно указанными;

- двух- и трехадресные команды (встречаются архитектуры, в которых есть команды и с большим числом операндов).

1.Примеры безадресных команд без операнда:

NOPNo OPeration, отсутствие операции;

HALT – остановка процессора.

2.Примеры безадресных команд с неявно указанными операндами:

RETURN – возврат из подпрограммы (выталкивает из стека адрес возврата и помещает его в счетчик команд);

WDRWatchDog Reset, сброс сторожевого таймера микроконтроллера;

ADD – вытолкнуть из стека два значения, сложить их и протолкнуть результат в стек;

SCSSkip if Carry Set, пропустить следующую команду, если бит переноса в слове состояния установлен;

3.Примеры одноадресных команд с одним операндом:

INC xINCrement, добавить к операнду 1 и сохранить результат по тому же адресу;

TST х TeST – установить в слове состояния флаги знака и равенства нулю в соответствии со значением операнда;

4.Примеры одноадресных команд с неявным операндом:

ADD x [, Асс] – сложить операнд с аккумулятором и сохранить результат в аккумуляторе;

PUSH х – протолкнуть значение операнда в стек;

CALL x – вызов подпрограммы, сохраняет адрес следующей команды в стеке и передает управление по указанному адресу;

BNEQ х – передает управление по указанному адресу, если в слове состояния установлен флаг равенства нулю;

5.Примеры двух- и трехадресных команд:

MOVE x, у – присвоить значение объекта х объекту у;

ADD x, у – сложить х и у, поместить результат в у.

ADD x, у, z - сложить х и у и поместить результат в z;

6.Пример четырехадресной команды:

DIV х, у, z, w – выполняет деление х на у, помещает частное в z, а остаток – в w;

7.Пример шестиадресной команды:

INDEX b, I, h, s, i, a – вычисляет адрес элемента массива, расположенного по адресу b, с нижней и верхней границами индекса I и b соответственно и размером элемента s.

где: операнд i – индекс элемента; операнд а – место, куда следует поместить вычисленный адрес.

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

Одноадресные системы команд обычно используют в качестве неявно заданного операнда выделенный регистр (аккумулятор), или стек. Такие архитектуры называют, соответственно, аккумуляторными и стековыми. Одноадресную аккумуляторную архитектуру имеют микроконтроллеры семейства PIC фирмы Microchip. Большинство современных процессоров имеют двух- и трехадресные системы команд.

На примере стековой команды ADD видно, что многие из команд стековой архитектуры могут обойтись без явно указанных операндов, однако команды проталкивания значений переменных в стек и выталкивания их оттуда все-таки необходимы, поэтому все стековые архитектуры одноадресные, а не безадресные.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: