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

Машинная команда – блок данных, на момент выполнения программы размещённый в ОЗУ, и описывающий: какую операцию необходимо выполнить, где взять исходные величины и куда поместить результат.

 

Рассмотрим формат команды (из каких информационных разделов состоит команда и как взаимно - эти информационные разделы в команде расположены).

На рисунке – условно, графически отображена часть ОЗУ, в которой располагается машинная команда:

 

Графически ОЗУ представлено как массив ячеек, стрелкой – показано направление, в котором возрастают адреса ячеек ОЗУ. Фигурными скобками слева от массива ячеек – выделены отдельные части, или говорят "информационные поля команды" или Проше "поля команды": КОП, A1, A2, .. An

 

КОП (код операции) – это набор бит, указывающий какую операцию надо выполнить;

A1, A2, .An – атрибуты. Наборы данных, каждый из которых указывает – где (в каких ячейках памяти) взять элемент обрабатываемых командой данных, либо – куда поместить результаты. На каждый из элементов данных, что должна обрабатывать команда – свой атрибут. В простейшем случае атрибут содержит одно число – адрес ячейки ОЗУ, в которой хранится элемент данных. Возможны и другие варианты того как атрибут может указывать размещение данных (говорят - "другие методы адресации"). Вопрос о том какие ещё "методы адресации" могут быть использованы в тех или иных командах – будет рассмотрен чуть позднее;

 

n – число атрибутов в команде. Число атрибутов - может отличаться для разных команд. Имеются команды и без атрибутов.

LКОП – длина кода операции (число ячеек памяти занимаемое КОП-ом)

LA1, LA2, … – длины атрибутов (число ячеек памяти занимаемое соответствующим атрибутом);

LK – длина команды (число ячеек памяти занимаемое данной командой);

AK – адрес команды (адрес ячейки с наименьшим адресом из числа тех, что занимают команда)

 

.

Необходимо понимать - как соотносятся между собой "машинный язык" и "язык ассемблера" и - не путать эти понятия.

Любая программа на машинном языке - набор двоичных кодов, легко разбираемых устройством управления процессора, но, увы – очень трудных для чтения человеком. "Машинная команда" - последовательность двоичных чисел. Сначала – двоичное число (двоичный код) КОП, затем – двоичные числа атрибутов.

В языке Ассемблера двоичные коды: коды команд, адреса данных - заменены на словесные, "мнемонические обозначения" - более удобные для восприятия человеком. Программист может написать программу на языке ассемблера, и такая программа – будет очень близка к машинной программе. Отличаться будет – только формой записи.

На машинном языке –На Assembler’е запись команд выглядит так:

КОП A1 A2 A3

Пример: ADD mem3 mem2 mem1

ADD – мнемоническое имя для операции сложения

mem1, mem2 – мнемонические имена ячеек памяти, где находятся исходные данные.

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

В разговорном языке программистов на ассемблере, мнемонические имена иногда называют, не совсем по смыслу точно, но зато проще и короче: то просто "именами", а то и "адресами".

 

Программа транслятора на машинный язык – выполнит очень простую операцию: заменит в программе "мнемонические имена" на двоичные числовые коды. Мнемоническое имя ADD – будет заменено на двоичный код команды сложения. Мнемонические имена ячеек памяти – на двоичные коды адресов. В результате – из программы на Ассемблере будет получена "машинная программа", пригодная для выполнения на ЭВМ.