Представление адресной информации. Источниками и приемниками операндов команд служат регистровая память RSEG, память данных DSEG, а также порты ВВ IOSEG. В дальнейшем для обозначения какого-либо элемента регистровой области будем использовать символ reg, адреса системной памяти—addr, порта ВВ—port. Адрес операнда, считываемого или размещаемого в одном из пространств МС, называется исполнительным.
Исполнительные адреса строятся по сведениям, заложенным в командах. Метод построения исполнительного адреса называется способом адресации (mod). Примером одного из наиболее простых способов адресации служит прямое указание полного исполнительного адреса в команде. Однако такой способ адресации, обычно называемый прямым, оказывается неэффективным во многих случаях. В частности, при прямой адресации манипуляция исполнительными адресами связана с модификацией программы, что не всегда удобно, а иногда и невозможно.
Для повышения эффективности адресации операндов разработан ряд способов задания исполнительного адреса. Каждый способ эффективен только в конкретной ситуации размещения данных. Правильный выбор и использование всего набора позволяет обеспечить эффективный доступ к структурированным данным, таким как массивы, стеки, списки, а также перемещаемость программ и данных на этапе загрузки и выполнения, сократить длину программного кода и число обращений к магистрали, адресовать большую основную память в условиях малой разрядности ЦП.
Необходимость адресовать память большой емкости при коротком слове данных придает проблеме адресации в МС особо острый характер. Поэтому механизмы адресации памяти в МС оказываются наиболее совершенными и требуют минимального числа обращений к магистрали.
Сведения об адресе операнда могут быть заложены в команду в двух формах: явной и неявной. Явная форма предполагает наличие в команде специального поля, называемого адресной частью команды, в котором эти сведения содержатся. Неявная форма обеспечивает передачу адресной информации через именную часть команды или код операции (ОР), т. е. сама операция несет определенные сведения о месте нахождения одного или всех операндов, используемых в ней.
Явная форма представления адресной информации более гибкая. Она позволяет связывать с одной операцией множество адресов, что повышает ее эффективность. Однако эта форма требует увеличения длины машинной команды, что снижает эффективность объектного кода. Неявная форма связывает часть адресной информации с операцией, сужая область ее действия, но длина машинной команды при этом существенно уменьшается. В реальных командах, как правило, применяются обе формы представления адресной информации. Широко распространена и такая форма представления адресных сведений: часть информации о месте нахождения одного и того же операнда передается в неявной форме, остальная информация представляется в адресном поле в явной форме.
В общем случае кодирование адресной информации операнда в команде сводится к указанию способа адресации mod и числовой информации, используемой при этом способе. Способ адресации как часть адресной информации может кодироваться в явной и неявной формах. Общепризнанной является явная форма представления mod, при которой в адресной части машинной команды резервируется специальное поле, а на уровне символьного кодирования—ряд специальных суффиксов, префиксов и указателей в поле операндов: #, @, %, (...), (...)+, –(...) и т. д. Например:
.disp ;oper = (PC + disp)
(reg)+ ;oper = (reg), regreg + 1
@addr ;oper = ((addr))
#data ;oper = data
При неявной форме кодирования способ адресации передается ОР, тогда как дополнительная информация представляется явно. Примерами такого представления служат команды