Формат команды процессора определяет способ представления команды в памяти и показывает ее постоянные составные части (поля). Несколько типичных форматов команд микропроцессора К1810ВМ86 приведены на рис. 2.9, а полный перечень форматов команд дается в приложении. Длина команд варьируется от одного байта до шести. В первых одном или в двух байтах команды находятся код операции и указание на режим’ адресации. После них могут находиться:
1) двухбайтовый эффективный адрес (при прямой адресации);
2) одно- или двухбайтовое смещение (при относительных способах адресации);
3) одно- или двухбайтовый непосредственный операнд (при непосредственном способе адресации);
4) двухбайтовое смещение с последующим одно- или двухбайтовым непосредственным операндом (при относительных способах адресации с непосредственными данными).
Применение одной из перечисленных возможностей определяется кодом операции и режимом адресации. Если длина смещения или непосредственного операнда составляет два байта, первым всегда следует младший байт (т.е. младший байт располагается по меньшему адресу).
Обычно код операции занимает первый байт команды, но в некоторых командах в первом байте указывается регистр, а в других командах три бита кода операции находятся во втором байте.
В большинстве команд имеются следующие однобитовые поля:
поле W: если команда может оперировать байтом или словом, в коде операции имеется бит W, который определяет операцию с байтом (W = 0) или со словом (W = 1);
поле D: содержится в двухоперандных командах; одним из операндов должен быть регистр, определяемый Полем REG; в таких командах бит D определяет направление передачи данных в результате выполнения операции и показывает, чем является регистр: источником операнда (D = 0) или приемником результата (D = 1);
поле С: 8-битовое число в дополнительном Коде можно расширить до 16-битового в дополнительном коде, если сделать все биты старшего байта числа равными старшему биту младшего байта; например, — 5 в дополнительном коде представляется как 11111011 и 11111111111 ПС-11. Такая операция называется расширением знака (или расширение со знаком); бит С используется вместе с битом W в командах с непосредственным операндом и расшифровывается следующем образом:
8-битовый операнд C:W = 00;
8-битовый операнд с расширением до 16-бит — C:W =11;
16-битовый операнд C:W = 01.
Помимо однобитовых полей в форматах команд процессора встречаются и многобитовые поля:
поле REG: определяет регистр общего назначения, участвующий в операции; длина поля три бита; адреса регистров (т.е. их двоичные обозначения) приведены в приложении; неоднозначности использования, напримгр, 000 для указания регистров АХ и AL не возникает, так как нужный регистр определяется кодом операции или полем W;
поле SR: задает используемый в команде сегментный регистр; длина поля два бита; адреса сегментных регистров (т.е. их двоичные обозначения) приведены в приложении;
поле MOD: используется совместно с R/M и задает модификацию способа адресации операнда в памяти и определяет длину смещения, непосредственно следующего после кода операции; длина поля два бита; способ кодирования поля MOD приведен в приложении;
поле R/M: определяет способ адресации операнда в памяти; длина поля три бита; совместно с полем MOD и DISP позволяет задать любой из описанных способов адресации;
поле DISP: задает смещение для относительных способов адресации и может отсутствовать в команде; поле DATA: задает непосредственные данные для непосредственного способа адресации; поле может отсутствовать в команде; длина поля один или два байта.