МИРЭА кафедра МОВС


Машинно-зависимые характеристики ассемблера

В этом разделе на примере ассемблера для УУМ/ДС мы рассмотрим, как расширение аппаратных возможностей ЭВМ влияет на структуру и функции ассемблера. Архитектура многих реальных ЭВМ похожа на структуру УУМ/ДС. Поэтому в значительной степени наше обсуждение применимо не только к УУМ/ДС, но и к реальным машинам. На рисунке Пример программы на языке ассемблера УУМ/ДС показано, как предыдущая программа (смотреть рисунок Пример программы на языке ассемблера УУМ) может быть записана с использованием дополнительных возможностей системы команд УУМ/ДС. Косвенная адресация в нашем языке ассемблера задается добавлением к операнду префикса @ (строка 70). Непосредственный операнд обозначается префиксом # (строки 25, 55, 133). Для команд, в которых есть ссылка на оперативную память, обычно используется либо адресация относительно счетчика команд, либо адресация относительно базы. Директива ассемблера BASE (строка 13) используется в связи со способом адресации относительно базы. (Подробности и примеры см. в разделе Формы команд и способы адресации В не которых командах величина смещения в относительном способе адресации может быть очень большой и для ее размещения будет недостаточно поля 3-байтового командного формата. Для таких команд необходимо использовать 4-байтовый расширенный командный формат. На языке ассемблера этот формат задается добавлением к коду операции префикса + (см. строки 15, 35, 65). Ответственность за правильность спецификации команд расширенного формата возлагается на программиста. Основное отличие новой версии программы от программы для УУМ заключается в том, что в ней всюду, где это возможно, используются команды вида регистр - регистр (вместо команд вида регистр-память). Например, в строке 150 вместо предложения СОМР ZERO использовано COMPR А, S, а в строке 165 вместо TIХ MAXLEN использовано TIXR Т. Кроме того, всюду, где это возможно, используются непосредственные операнды и косвенная адресация (например, строки 25, 55, 70). Эти изменения внесены для того, чтобы использовать преимущества архитектуры УУМ/ДС с целью увеличения скорости выполнения программы. Операции вида регистр - регистр быстрее, чем соответствующие операции вида регистр - память. Это связано с тем, что, во-первых, они занимают меньше места в памяти и, во-вторых, что более важно, не требуют дополнительных ссылок в память для выборки операндов. (Выборка операнда из регистра происходит намного быстрее, чем из оперативной памяти.) Точно так же, когда используется непосредственный операнд, то при обработке команды он уже присутствует как ее составная часть, и, следовательнонет необходимости в его выборке откуда-либо еще. Использование косвенной адресации часто позволяет экономить команду (см. строку 70). Вы можете заметить, что в то же время некоторые изменения требуют внесения в программу дополнительных команд. Например, замена команды СОМР на COMPR в строке 150 вынудила нас добавить команду CLEAR в строку 132. Тем не менее в целом скорость выполнения программы возрастет, так как команда CLEAR выполняется только один раз для каждой читаемой записи, а команда COMPR (более быстрая, чем СОМР) выполняется для каждого байта. В разделеФормы команд и способы адресации рассматривается процесс трансляции программы для УУМ/ДС. При этом основное внимание обращено на те отличия ассемблера УУМ/ДС, которые продиктованы новыми способами адресации. (Вам следует взглянуть на форматы команд и способы вычисления целевого адреса, описанные в разделе Структура УММ/ДС. Эти отличия являются прямым следствием расширения аппаратных возможностей. В разделе перемещение программ обсуждаются отличия версии ассемблера УУМ/ДС, имеющие косвенную связь с новыми аппаратными возможностями. Например, расширенный объем оперативной памяти УУМ/ДС позволяет предположить, что мы будем иметь достаточно места для одновременной загрузки и исполнения нескольких программ. Такое разделение машины между несколькими программами называется мультипрограммным режимом обработки. Этот режим позволяет более эффективно использовать аппаратуру ЭВМ. (Мы вернемся к этому вопросу в связи с операционными системами в главе Операционные системы. Однако для того, чтобы полностью использовать преимущества мультипрограммного режима, мы должны иметь возможность загружать программу в любое свободное место оперативной памяти (а не в фиксированное место, определенное во время трансляции). При этом возникает необходимость перемещения программ в оперативной памяти.