Запись любой команды определяется ее форматом. Формат команды – это структура команды, позволяющая распознать назначение отдельных ее полей.
Исходя из определения, команда должна содержать информацию о выполняемой операции, адресах операндов и адресе ячейки ЗУ для записи результата. Этому в наибольшей степени соответствует формат команды, содержащий поле кода операции и три адресных поля. Такая система кодирования команд называется трехадресной (рис.11.1,в).
Схема выполнения трехадресной команды имеет вид:
(А1)*(А2)->А3.
Здесь (А1) и (А2) – адреса ячеек ЗУ, в которых хранятся первый и второй операнды соответственно; * – знак обобщенной операции (например, сложение или умножение), задаваемой полем кода операции (КОп). Знак "->" обозначает передачу результата операции в ячейку памяти с адресом А3.
Для выполнения операции сложения операндов, находящихся по адресам a и b, с записью результата в ячейку c (c = a + b) требуется одна команда такого формата:
КОп | А1 | А2 | А3 |
ADD | a | b | c |
Здесь ADD – код операции сложения.
Формат двухадресной команды представлен на рис.11.1,б. Выполнение операции с помощью такой команды проходит по следующей схеме:
(А1) * (А2) -> А1 или
(А1) * (А2) -> А2
Выполнение того же самого действия c = a + b в двухадресной системе кодирования команд потребует уже двух команд, например:
КОп | А1 | А2 | |
ADD | a | b | a = a + b |
MOV | c | a | c = a |
Одноадресная команда имеет формат, приведенный на рис.11.1,а. Обычно ЭВМ с одноадресной системой команд имеют особую структуру, в состав которой входит специальный регистр (регистр результата – РР). Он служит для хранения результата операции и используется в качестве одного из операндов при выполнении операции (рис. 11.2).
Схема выполнения операции на ЭВМ с одноадресной системой команд имеет вид:
(А) * (РР) -> А или
(А) * (РР) -> РР.
Операцию c = a + b в одноадресной системе команд можно выполнить следующим образом: