Что определяется форматом команды компьютера. Машинная команда. Представление данных в ЭВМ

Обработка чисел, символьной информации, логическая обработка, обработка сигналов — ϶ᴛᴏ все частные случаи общего понятия под названием «обработка информации ». Стоит сказать, для ЭВМ характерен признак: информация представляется с помощью двоичных целых чисел. Существует три этапа обработки информации:

  • хранение двоичной информации;
  • передача от одного хранилища к другому;
  • преобразование.

ЭВМ можно представить как совокупность узлов, соединенных каналом связи. Узлы соединяют в себе функции хранения и преобразования. По каналам связи передается информация от узла к узлу. Мы будем говорить о потоках информации в каналах связи (рис. 5.5) Некᴏᴛᴏᴩые узлы могут иметь специальную функцию ввода информации в систему и вывода из нее.

Рисунок № 5.5 Информационная модель ЭВМ: У — узлы

Показанная на рис. 5.5 модель не имеет ограничений на связи между отдельными узлами. Реализовать такую систему весьма сложно. Реально существующие системы имеют ряд ограничений на связи и четкое функциональное назначение отдельных узлов. Функции отдельного узла могут зависеть от его состояния. Состояние узла описывается значениями его внутренних полей (регистров) и может определяться процессом его функционирования или задаваться извне. Состояние узла будем называть его режимом . Физически режим может определяться значением регистра узла. Тогда установить режим узла означает приϲʙᴏить регистру определенное значение.

По каналам связи узлы могут обмениваться либо значащей информацией (сообщениями), либо управляющей. Под сообщениями будем понимать последовательности двоичных цифр, сохраняемые или обрабатываемые узлом. Управляющая информация определяет режимы узлов и каналов связи.

Информационная модель позволяет определить основные характеристики ЭВМ:

1. Узлы хранения имеют:

  • вместимость — максимальную, среднюю или минимальную;
  • скорость выборки;
  • разрядность выборки.

2. Преобразующие узлы имеют скорость преобразования.

3. Каналы определяются:

  • скоростью передачи информации (пропускная способность);
  • разрядностью передачи.

Рисунок № 5.6. Различные схемы организации ЭВМ:

ЭВМ с шинной организацией (а); канальная ЭВМ (б); ЭВМ с перекрестной коммутацией (в); конвейерная ЭВМ (г); КМ — коммутирующая матрица; КВВ — канал ввода-вывода

Из множества возможных соединений отбираются несколько типовых схем, обеспечивающих простоту, возможность реконфигурации (расширения), надежность, стандартизацию и т.д. Можно отметить следующие схемы (рис. 5.6):

  • с шинной организацией;
  • специализированные процессоры (каналы);
  • схемы с коммутацией;
  • архитектуры с распределенными функциями (распределенный интеллект);
  • с конвейерной организацией.

Изучим некᴏᴛᴏᴩые частные модели ЭВМ, имеющие широкое распространение или представляющие теоретический интерес.

Шинная организация. В ϶ᴛᴏй схеме все устройства симметрично подсоединяются к одному каналу, называемому общей шиной. Симметрия подключения гарантирует ϲʙᴏбодное подключение новых устройств, т.е. система имеет теоретически неограниченное развитие. Некᴏᴛᴏᴩые узлы могут иметь специфические ϲʙᴏйства, например процессор, оперативная память, внешние накопители данных. Между ними организуется обмен информации. Так как потоки информации ограничены возможностями одного канала, эта схема имеет принципиальные ограничения скорости работ.

Канальная организация. В ϶ᴛᴏй схеме операции обмена данными с внешними устройствами организуются через специализированный узел — канал ввода-вывода. Благодаря ϶ᴛᴏму можно организовывать обработку информации параллельно с вводом-выводом.

Организация с перекрестной коммутацией . Идея структурной организации таких ЭВМ состоит по сути в том, что все связи между узлами осуществляются с помощью специального устройства — коммутирующей матрицы. Коммутирующая матрица может связывать между собой любую пару узлов, причем таких пар может быть сколько угодно - связи не зависят друг от друга. В такой схеме нет конфликтов из-за связей, есть конфликты только из-за ресурсов. Возможность одновременной связи нескольких пар устройств позволяет достичь очень высокой производительности комплекса.

Архитектура с распределенными функциями. Это являлось основной идеей японского проекта ЭВМ пятого поколения. Сегодня эта идея осталась не реализованной. Суть идеи состоит по сути в том, что обработка информации распределяется по «интеллектуальным» периферийным устройствам. Переход от ЭВМ четвертого поколения к ЭВМ пятого поколения намечалось осуществить не за счет существенного изменения элементной базы (как было ранее), а за счет резкого качественного изменения сложности и интеллектуальности различных компонент ЭВМ.

Конвейерная организация. Здесь обрабатывающее устройство разделяется на последовательно включенные операционные блоки, каждый из кᴏᴛᴏᴩых специализирован на выполнение строго определенной части операции. При ϶ᴛᴏм работа осуществляется следующим образом: когда i -й операционный блок реализует i -ую часть j -й операции, (i -1)-й операционный блок реализует (i -1)-ую часть (j +1)-й операции, а (i +1)-й операционный блок реализует (i +1)-ую часть (j -1)-й операции. В результате образуется ϲʙᴏего рода конвейер обработки и за счет ϶ᴛᴏго повышается производительность системы.

Основные команды ЭВМ

Важно знать, что большое изумление у человека, не знакомого с вычислительной техникой, вызывает тот факт, что все разнообразие решаемых на ЭВМ задач реализуется с помощью небольшого набора очень простых команд. Система команд у типичной ЭВМ содержит в себе всего 60 — 150 базовых команд. Все команды в основном служат для выполнения очень простых действий, таких, как прочитать, запомнить, сложить, сдвинуть, сравнить и т.д. Интеллектуальность ЭВМ достигается за счет того, что она способна выполнять программы, состоящие из большого числа таких простых действий с огромной, не достижимой для человека скоростью. В данном разделе кратко рассмотрим набор команд, используемых в типичных ЭВМ, и действия, реализуемые данными командами.

При описании системы команд ЭВМ обычно принято классифицировать команды по функциональному назначению, длине, способу адресации и другим признакам. Классификации команд по различным признакам показаны на рис. 5.7. Изучим основные группы команд, придерживаясь классификации команд на группы по функциональному назначению.

Рисунок № 5.7. Классификация команд ЭВМ

Команды передачи данных. Данная группа команд содержит в себе подгруппы команд передачи кодов между регистрами внутри процессора, из регистров процессора в память, из памяти в регистры процессора, из одних ячеек памяти в другие и передачи данных между процессором и портами внешних устройств. Отдельную подгруппу составляют команды работы со стеком. Стоит заметить, что они позволяют включать данные в стек для временного хранения и извлекать данные из стека при необходимости их использования. Подробное назначение и принципы использования стеков в ЭВМ рассмотрим ниже при обсуждении работы с подпрограммами и прерываниями.

Команды обработки данных. Данную группу команд с позиции выполняемых над данными операций можно подразделить на арифметические (сложить, вычесть, умножить и т.д.), логические (операции И, ИЛИ, НЕ и т.д.) и команды сдвига. Команды ϶ᴛᴏго типа могут иметь один или два операнда. Уместно отметить, что операнды могут храниться в регистрах центрального процессора, в памяти или в самой команде. Результат операции формируется в регистре-приемнике или в специализированном регистре-аккумуляторе. Команды данной группы формируют признаки результатов, устанавливаемые в регистре флагов процессора, перенос из старшего разряда, переполнение, нулевой результат и др. К арифметическим командам ᴏᴛʜᴏϲᴙт также и команды сравнения. Обычно для сравнения двух чисел процессор реализует операцию вычитания. По результату вычитания устанавливаются флаги во флаговом регистре процессора. Вполне понятно, что если сравниваемые величины равны, результат вычитания будет нулевым, и во флаговом регистре установится флаг нулевого результата. В случае если первая из сравниваемых величин больше — результат вычитания будет отрицательным и установится флаг отрицательного результата и т.д. Результат вычитания не сохраняется в памяти, по состоянию флагового регистра можно судить о результатах сравнения двух величин. Многие процессоры имеют команды сравнения операнда с нулем. В некᴏᴛᴏᴩых процессорах имеются команды проверки или установки состояния отдельных битов в операнде.

Команды передачи управления. Стоит отметить - они имеют важное значение, так как могут быть использованы для изменения естественного порядка следования команд и организации циклических участков в программах.

Простейшей командой передачи управления будет команда безусловного перехода JMP <адрес> , кᴏᴛᴏᴩая загружает адрес перехода, указанный в команде, в программный счетчик. Команды условного перехода проверяют указанное в команде условие и модифицируют программный счетчик, если условие истинно. Обычно команды условного перехода могут быть использованы после команд, изменяющих состояние флагового регистра (например, команд сравнения) При проверке условия производится сравнение состояния одного или нескольких флагов из флагового регистра с комбинацией, указанной в коде команды условного перехода. Модификация программного счетчика может производиться либо загрузкой в него нового значения, либо сложением его со смещением, указанным в команде.

Команды для работы с подпрограммами . Стеки . В практике программирования широко используется такой прием, как организация подпрограмм. Подпрограмма описывается один раз, а использоваться (вызываться) может из различных мест программы. При ϶ᴛᴏм, после того как подпрограмма закончила ϲʙᴏю работу, управление должно быть передано туда, откуда подпрограмма была вызвана на команду, следующую в памяти сразу за командой обращения к подпрограмме. Адрес команды, на кᴏᴛᴏᴩую управление передается после окончания работы подпрограмм, называется адресом возврата. Очевидно, для того, ɥᴛᴏбы начать выполнять подпрограмму, в программный счетчик крайне важно загрузить адрес первой команды подпрограммы. Стоит сказать, для осуществления возврата из подпрограммы крайне важно запомнить в каком-то месте адрес возврата. Можно, например, сохранить адрес возврата в одном из регистров процессора. Такой способ сохранения адреса возврата очень прост и легко реализуется. При этом он обладает одним существенным недостатком. Достаточно часто встречаются подпрограммы, кᴏᴛᴏᴩые вызывают другие подпрограммы. Пусть основная программа вызвала подпрограмму А. Стоит заметить, что она в ϲʙᴏю очередь обратилась к подпрограмме В. В случае если адрес возврата для подпрограммы А хранится в регистре процессора, то куда девать адрес возврата при вызове подпрограммы В?

Для организации подпрограмм большинство ЭВМ используют аппаратно поддерживаемую структуру данных, называемую стеком. Стек - ϶ᴛᴏ структура данных, организованная по принципу: последним вошел — первым вышел, т.е. последние записанные в стек данные извлекаются из него первыми. В переводе с англ., stack — стопка. Аналогом стека может служить стопка тарелок. Стоит сказать - положить тарелку в стопку можно только сверху, извлечь опять-таки только верхнюю тарелку. В ЭВМ для организации стека выделяется область оперативной памяти, а для ее адресации и доступа к стеку используется упоминавшийся выше регистр — указатель стека. Указатель стека хранит адрес ячейки памяти, содержащей последнее помещенное в стек значение.

Для возврата из подпрограммы в основную программу служат команды возврата RETURN. Команды возврата из подпрограммы извлекают из стека верхний элемент и помещают его в программный счетчик. В случае если имели место несколько вложенных вызовов подпрограмм, то возврат произойдет по адресу возврата, сохраненному после последнего вызова, так как для хранения адресов возврата используется стек, и последний сохраненный адрес возврата будет использован первым.

Прочие команды. В ЭВМ могут быть дополнительные (специальные) команды. К их числу можно отнести команды остановки центрального процессора, сброса внешних устройств, установки или сброса отдельных признаков и т.д.

^

2.8 Типы и форматы команд


Несмотря на различие в системах команд разных ЭВМ, некоторые основные типы операций могут быть найдены в любой из них. Для описания этих типов примем следующую классификацию:

    • команды пересылки данных;

    • команды арифметической и логической обработки;

    • команды работы со строками;

    • команды SIMD;

    • команды преобразования;

    • команды ввода/вывода;

    • команды управления потоком команд.
^

2.8.1 Команды пересылки данных


Это наиболее распространенный тип машинных команд. В таких командах должна содержаться следующая информация:

  • адреса источника и получателя операндов – адреса ячеек памяти, номера регистров процессора или информация о том, что операнды расположены в стеке;

  • длина подлежащих пересылке данных (обычно в байтах или словах), заданная явно или косвенно;

  • способ адресации каждого из операндов, с помощью которого содержимое адресной части команды может быть пересчитано в физический адрес операнда.
Рассматриваемая группа команд обеспечивает передачу информации между процессором и ОП, внутри процессора и между ячейками памяти. Пересылочные операции внутри процессора имеют тип «регистр-регистр». Передачи между процессором и памятью относятся к типу «регистр-память», а пересылки в памяти - к типу «память-память».
^

2.8.2 Команды арифметической и логической обработки


В данную группу входят команды, обеспечивающие арифметическую и логическую обработку информации в различных формах ее представления. Для каждой формы представления чисел в АСК обычно предусматривается некий стандартный набор операций.

Помимо вычисления результата выполнение арифметических и логических операций сопровождается формированием в АЛУ признаков (флагов), характеризующих этот результат. Наиболее часто фиксируются такие признаки, как:


  • Z (Zero) - нулевой результат;

  • N (Negative) - отрицательный результат;

  • V (oVerflow) - переполнение разрядной сетки;

  • С (Carry) - наличие переноса.
К стандартному набору операций над целыми числами, представленными в форме с фиксированной запятой, следует отнести:

  • двухместные арифметические операции (операции с двумя операндами): сложение, вычитание, умножение и деление;

  • одноместные арифметические операции (операции с одним операндом): вычисление абсолютного значения (модуля) операнда, изменение знака операнда;

  • операции сравнения, обеспечивающие сравнение двух целых чисел и выработку признаков, характеризующих соотношение между сопоставляемыми величинами (=, <>, >, <, <=, >=).
Часто этот перечень дополняют такими операциями, как вычисление остатка от целочисленного деления, сложение с учетом переноса, вычитание с учетом заема, увеличение значения операнда на единицу (инкремент ), уменьшение значения операнда на единицу (декремент ).

Отметим, что выполнение арифметических команд может дополнительно сопровождаться перемещением данных из устройства ввода в АЛУ или из АЛУ на устройство вывода.

Для работы с числами, представленными в форме с плавающей запятой, в АСК большинства машин предусмотрены:


  • основные арифметические операции;

  • операции сравнения, обеспечивающие сравнение двух вещественных чисел с выработкой признаков;

  • операции преобразования: формы представления (между фиксированной и плавающей запятой), формата представления (с одинарной и двойной точностью).
Стандартная система команд ЭВМ содержит команды для выполнения различных логических операций над отдельными битами слов или других адресуемых единиц. Такие команды предназначены для обработки символьных и логических данных. Минимальный набор поддерживаемых логических операций - это «НЕ», «И», «ИЛИ» и сложение по модулю 2.

В дополнение к побитовым логическим операциям, практически во всех АСК предусмотрены команды для реализации операций логического, арифметического и циклического сдвигов.

При логическом сдвиге влево или вправо сдвигаются все разряды слова. Биты, вышедшие за пределы разрядной сетки, теряются, а освободившиеся позиции заполняются нулями.

При арифметическом сдвиге данные трактуются как целые числа со знаком, причем бит знака не изменяет положения. При сдвиге вправо освободившиеся позиции заполняются значением знакового разряда, а при сдвиге влево - нулями. Арифметические сдвиги позволяют ускорить выполнение некоторых арифметических операций. Так, если числа представлены двоичным дополнительным кодом, то сдвиги влево и вправо эквивалентны соответственно умножению и делению на 2.

При циклическом сдвиге смещаются все разряды слова, причем значение разряда, выходящего за пределы слова, заносится в позицию, освободившуюся с противоположной стороны, то есть потери информации не происходит. Одно из возможных применений циклических сдвигов – это перемещение интересующего бита в крайнюю левую (знаковую) позицию, где он может быть проанализирован как знак числа.

Для работы со строками в АСК обычно предусматриваются команды, обеспечивающие перемещение, сравнение и поиск строк. В большинстве машин перечисленные операции просто имитируются за счет других команд.

^ Команды преобразования осуществляют изменение формата представления данных. Примером может служить преобразование из десятичной системы счисления в двоичную или перевод 8-разрядного кода символа из кодировки ASCII в кодировку EBCDIC, и наоборот.

2.8.3 SIMD-команды

Название данного типа команд представляет собой аббревиатуру от Single Instruction Multiple Data - буквально «одна инструкция - много данных». В отличие от обычных команд, оперирующих двумя числами, SIMD-команды обрабатывают сразу две группы чисел (в принципе их можно называть групповыми командами). Операнды таких команд обычно представлены в одном из упакованных форматов.

Идея SIMD-обработки была выдвинута в Институте точной механики и вычислительной техники им. С.А. Лебедева в 1978 году в рамках проекта «Эльбрус-1». С 1992 года команды типа SIMD становятся неотъемлемым элементом АСК микропроцессоров фирм Intel и AMD, Поводом послужило широкое распространение мультимедийных приложений. Видео, трехмерная графика и звук в ЭВМ представляются большими массивами данных, элементы которых чаше всего обрабатываются идентично. Так, при сжатии видео и преобразовании его в формат MPEG один и тот же алгоритм применяется к тысячам битов данных. В трехмерной графике часто встречаются операции, которые можно выполнить за один такт: интерполирование и нормировка векторов, вычисление скалярного произведения векторов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в АСК позволяет существенно ускорить подобные вычисления.

Первой на мультимедийный бум отреагировала фирма Intel, добавив в систему команд своего микропроцессора Pentium ММХ 57 SIMD-команд. Название МMX (MultiMedia eXtention – мультимедийное расширение) разработчики обосновывали тем, что при выборе состава новых команд были проанализированы алгоритмы, применяемые в различных мультимедийных приложениях. Команды ММХ обеспечивали параллельную обработку упакованных целых чисел. При выполнении арифметических операций каждое из чисел, входящих в группу, рассматривается как самостоятельное, без связи с соседними числами. Учитывая специфику обрабатываемой информации, команды ММХ реализуют так называемую арифметику с насыщением: если в результате сложения образуется число, выходящее за пределы отведенных под него позиций, оно заменяется наибольшим двоичным числом, которое в эти позиции вмещается.

Следующим шагом стало создание новых наборов SIMD-команд, работающих также с операндами, представленными в виде упакованных чисел с плавающей запятой. Такие команды в соответствующих приложениях повышают производительность процессора примерно вдвое. Первой подобную технологию в середине 1998 года предложила фирма AMD. Это мультимедийное расширение включало в себя 21 SIMD-команду и получило название 3DNow!. Расширение 3DNow! в дополнение к SIMD-обработке целочисленной информации типа ММХ позволяло оперировать парой упакованных чисел в формате с плавающей запятой.

Полугодом позже фирма Intel ввела в свои микропроцессоры так называемые потоковые SIMD-команды, обозначив их аббревиатурой SSE - Streaming SIMD Extension (потоковая обработка по принципу «одна команда - много данных»). Сначала это были 70 команд в микропроцессоре Pentium III. Команды дополняли групповые целочисленные операции МMX и расширяли их за счет групповых операций с 32-разрядными вещественными числами.
^

2.8.4 Команды ввода/вывода


Команды этой группы могут быть подразделены на команды управления периферийным устройством (ПУ), проверки его состояния, ввода и вывода.

Команды управления периферийным устройством служат для запуска ПУ и указания ему требуемого действия. Трактовка подобных инструкций зависит от типа ПУ.

Команды проверки состояния ввода/вывода применяются для тестирования различных признаков, характеризующих состояние модуля ввода/вывода и подключенных к нему ПУ. Благодаря этим командам центральный процессор может выяснить, включено ли питание ПУ, завершена ли предыдущая операция ввода/вывода, возникли ли в процессе ввода/вывода какие-либо ошибки и т. п.

Собственно обмен информацией с ПУ обеспечивают команды ввода и вывода. Команды ввода предписывают модулю ввода/вывода получить элемент данных (байт или слово) от ПУ и поместить его на шину данных, а команды вывода - заставляют модуль ввода/вывода принять элемент данных с шины данных и переслать его на ПУ.
^

2.8.5 Команды управления системой


Команды, входящие в эту группу, являются привилегированными и могут выполняться, только когда центральный процессор ЭВМ находится в привилегированном состоянии или выполняет программу, находящуюся в привилегированной области памяти (обычно привилегированный режим используется лишь операционной системой). Так, лишь эти команды способны считывать и изменять состояние ряда регистров устройства управления.
^

2.8.6 Команды управления потоком команд


Концепция фон-неймановской вычислительной машины предполагает, что команды программы, как правило, выполняются в порядке их расположения в памяти. Для получения адреса очередной команды достаточно увеличить содержимое счетчика команд на длину текущей команды. В то же время основные преимущества ЭВМ заключаются именно в возможности изменения хода вычислении в зависимости от возникающих в процессе счета результатов. С этой целью в АСК вычислительной машины включаются команды, позволяющие нарушить естественный порядок следования и передать управление в иную точку программы. В адресной части таких команд содержится адрес точки перехода (адрес той команды, которая должна быть выполнена следующей). Переход реализуется путем загрузки адреса точки перехода в счетчик команд (вместо увеличения содержимого этого счетчика на длину команды).

В системе команд ЭВМ можно выделить три типа команд, способных изменить последовательность вычислений:


  • безусловные переходы;

  • условные переходы (ветвления);

  • вызовы процедур и возвраты из процедур.
Несмотря на то что присутствие в программе большого числа команд безусловного перехода считается признаком плохого стиля программирования, такие команды обязательно входят в АСК любой ЭВМ. Для их обозначения в языке ассемблера обычно используется английское слово jump (прыжок). Команда безусловного перехода обеспечивает переход по заданному адресу без проверки каких-либо условий.

^ Условный переход происходит только при соблюдении определенного условия, в противном случае выполняется следующая по порядку команда программы. Большинство производителей ЭВМ в своих ассемблерах обозначают подобные команды словом branch (ветвление). Условием, на основании которого осуществляется переход, чаще всего выступают признаки результата предшествующей арифметической или логической операции. Каждый из признаков фиксируется в своем разряде регистра флагов процессора. Возможен и иной подход, когда решение о переходе принимается в зависимости от состояния одного из регистров общего назначения, куда предварительно помещается результат операции сравнения. Третий вариант - это объединение операций сравнения и перехода в одной команде.

В системе команд ЭВМ для каждого признака результата предусматривается своя команда ветвления (иногда - две: переход при наличии признака и переход при его отсутствии). Большая часть условных переходов связана с проверкой взаимного соотношения двух величин или с равенством (неравенством) некоторой величины нулю. Последний вид проверок используется в программах наиболее интенсивно.

Процедурный механизм базируется на командах вызова процедуры, обеспечивающих переход из текущей точки программы к начальной команде процедуры, и командах возврата из процедуры, для возврата в точку, непосредственно расположенную за командой вызова. Такой режим предполагает наличие средств для сохранения текущего состояния содержимого счетчика команд в момент вызова (запоминание адреса точки возврата) и его восстановления при выходе из процедуры,
^

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


Типовая команда, в общем случае, должка указывать:


  • подлежащую выполнению операцию;

  • адреса исходных данных (операндов), над которыми выполняется операция;

  • адрес, по которому должен быть помещен результат операции.
В соответствии с этим команда состоит из двух частей: операционной и адресной, как показано на рисунке 2.24.

Рисунок 2.24 – Структура машинной команды
Формат команды определяет ее структуру, то есть количество двоичных разрядов, отводимых под всю команду, а также количество н расположение отдельных полей команды. Полем называется совокупность двоичных разрядов, кодирующих составную часть команды. При разработке АСК выбор формата команды влияет на многие характеристики будущей машины. Оценивая возможные форматы, нужно учитывать следующие факторы:


  • общее число различных команд;

  • общую длину команды;

  • тип полей команды (фиксированной или переменной длины) и их длина;

  • простоту декодирования;

  • адресуемость и способы адресации;

  • стоимость оборудования для декодирования и исполнения команд.
Длина команды – это важнейшее обстоятельство, влияющее на организацию и емкость памяти, структуру шин, сложность и быстродействие ЦП. С одной стороны, удобно иметь в распоряжении мощный набор команд, то есть как можно больше кодов операций, операндов, способов адресации, и максимальное адресное пространство. Однако все это требует выделения большего количества разрядов под каждое поле команды, что приводит к увеличению ее длины. Вместе с тем, для ускорения выборки из памяти желательно, чтобы команда была как можно короче, а ее длина была равна или кратна ширине шины данных. Для упрощения аппаратуры и повышения быстродействия ЭВМ длину команды обычно выбирают кратной байту, поскольку в большинстве ЭВМ основная память организована в виде 8-битовых ячеек.

В рамках системы команд одной ЭВМ могут использоваться разные форматы команд. Обычно это связано с применением различных способов адресации. В таком случае операционная часть команды содержит поле кода операции (КОп) и поле для задания способа адресации (СА).

Общая длина команды R K может быть определена следующим соотношением:

,

где l – количество адресов в команде; R Ai – количество разрядов для записи i -го адреса; R КОп – разрядность поля кода операции; R СА – разрядность поля способа адресации.

Количество двоичных разрядов, отводимых под код операции , выбирается так, чтобы можно было представить любую из операций. Если система команд предполагает N КОп различных операций, то минимальная разрядность поля кода операции определяется следующим образом:
R КОп = int(log 2 (N КОп )),
где int означает округление в большую сторону до целого числа.

При заданной длине кода команды приходится искать компромисс между разрядностью поля кода операции и адресного поля. Большее количество возможных операций предполагает длинное поле кода операции, что ведет к сокращению адресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное число разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля.

В адресной части команды содержится информация о местонахождении исходных данных и месте сохранения результата операции. Обычно местонахождение каждого из операндов и результата задается в команде путем указания адреса соответствующей ячейки основной памяти или номера регистра процессора. Принципы использования информации из адресной части команды определяет система адресации. Система адресации задает число адресов в команде команды и принятые способы адресации

Разрядности полей и рассчитываются по формулам:
R Ai = int(log 2 (N i )), R CA = int(log 2 (N CA )),
где N i , – количество ячеек памяти, к которому можно обратиться с помощью i -ro адреса; N СА – количество способов адресации.

Для определения количества адресов , включаемых в адресную часть, будем использовать термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции. В принципе может быть добавлен еще один адрес, указывающий место хранения следующей инструкции. В итоге имеет место четырехадресный формат команды . Такой формат представлен на рисунке 2.25.

Чаще всего необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей команды в счетчике команд. Это позволяет перейти к трехадресному формату команды. Требуется только добавить в систему команд ЭВМ команды, способные изменять порядок вычислений.

К сожалению, и в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции – 8 бит, то длина команды составит 104 бита (13 байт).

Рисунок 2.25 – Четырехадресный формат команды
Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды. Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.

Команду можно еще более сократить, перейдя к одноадресному формату, что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр-аккумулятор центрального процессора (ЦП).

Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры ЦП. Так как число регистров к ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата.

Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нульадресный формат команды. В таком варианте адресная часть команды вообще отсутствует или не задействуется

При выборе количества адресов в адресной части команды обычно руководствуются следующими критериями:


  • емкостью запоминающего устройства, требуемой для хранения программы;

  • временем выполнения программы;

  • эффективностью использования ячеек памяти при хранении программы.
Время выполнения одной команды складывается из времени выполнения операции и времени обращения к памяти. Для трехадресной команды последнее суммируется из четырех составляющих времени:

  • выборки команды;

  • выборки первого операнда;

  • выборки второго операнда;
Одноадресная команда требует двух обращений к памяти:

  • выборки команды;

  • выборки операнда.
Как видно, на выполнение одноадресной команды затрачивается меньше времени, чем на обработку трехадресной команды, однако для реализации одной трехадресной команды, как правило, нужно три одноадресных. Этих соображении тем не менее не достаточно, чтобы однозначно отдать предпочтение тому или иному варианту адресности. Определяющим при выборе является тип алгоритмов, на преимущественную реализацию которых ориентирована конкретная ЭВМ.

Обработка информации в ЭВМ осуществляется путём программного управления.

Программа представляет собой алгоритм обработки информации, записанной в виде последовательности команд, которые должны быть выполнены машиной для полу­чения результата.

Команда ЭВМ представляет собой код, определяющий операцию вычислительной машины и данные, участвующие в операции. В явной и неявной форме команда содержит также информацию об адресе, по которому помещается результат операции, и об адресе следующей команды.

По характеру выполняемых операций можно выделить следующие группы команд:

¨ команды арифметических операций для чисел с фиксированной или плавающей запятой;

¨ команды десятичной арифметики;

¨ команды передачи данных (MOV AX, 0FFFh);

¨ команды операций ввода/вывода (IN, OUT);

¨ команды логических операций (AND, OR, NOT);

¨ команды передачи управления (управление циклом – LOOP, условные переходы – JAE, JB);

¨ команды задания режима работы машины и др.

Форматы команд ЭВМ

В команде, как правило, содержатся не сами операнды, а информация объект адресах ячеек памяти или регистрах, в которых они находятся. Код команды можно представить состоящим из нескольких полей, каждое из которых имеет свое функциональное назначение.

В общем случае команда состоит из:

¨ операционной части (содержит код операции);

¨ адресной части (содержит адресную информацию о местонахождении обрабатываемых данных и месте хранения результатов).

В свою очередь, эти части, что особенно характерно для адресной части, могут состоять из нескольких полей.

Структура команды определяется составом, назначением и расположением полей в коде.

Форматом команды называется заранее оговоренная структура полей ее кода с разметкой номеров разрядов (бит), определяющих границы отдельных полей команды, или с указанием числа разрядов (бит) в определенных полях, позволяющая ЭВМ распознавать составные части кода.

Пример формата команды процессора i486.

mod r/m - спецификатор режима адресации;

r/m - регистр памяти;

SS - масштабный множитель для режима масштабирования индексной адресации;

КОП - код операции;

index - определяет индексный регистр;

base - определяет базовый регистр.

Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и форматов команды, т.е. ее длины, назначения и размерности отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выполняемых различных операций и соответственно команд (в компьютерах с CISC-архитектурой более 200 команд) и значительно увеличилась емкость адресуемой основной памяти (32, 64 Мб), это приводит к недопустимо большой длине формата команды.

Вместе с тем, для упрощения аппаратуры и повышения быстродействия ЭВМ длина формата команды должна быть по возможности короче, укладываться в машинное слово или полуслово. Решение проблемы выбора формата команды значительно усложняется в микропроцессорах, работающих с коротким словом.

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 3.1 (б), содержать следующую информацию: А1, А2 - адреса операндов, А3 - адрес результата, А4 - адрес следующей команды (принудительная адресация команд).

Рис. 3.1. Структуры команд: а) обобщенная, б) четырехадресная, в) трехадресная, г) двухадресная, д) одноадресная, е)безадресная

Такая структура приводит к большей длине команды и неприемлема для прямой адресации операндов основной памяти. В компьютерах с RISC-архитектурой четырехадресные команды используются для адресации операндов, хранящихся в регистровой памяти процессора.

Можно установить, как это принято для большинства машин, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (K+L)-ой ячейки. Такой порядок выборки команды называется естественным. Он нарушается только специальными командами (передачи управления). В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды.

В трехадресной команде (рис. 3.1, в) первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячейку, в которую помещается результат операции.

Можно условиться, что результат операции всегда помещается на место одного из операндов, например первого. Получим двухадресную команду (рис. 3.1, г), т.е. для результата используется подразумеваемый адрес.

В одноадресной команде (рис. 3.1, д) подразумеваемые адреса имеют уже и результат операции и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумулятором. Результат операции записывается в тот же регистр.

Наконец, в некоторых случаях возможно использование безадресных команд (рис. 3.1, е), когда подразумеваются адреса обоих операндов и результата операции, например, при работе со стековой памятью.

С точки зрения программиста, наиболее естественны и удобны трехадресные команды. Обычно в ЭВМ используется несколько структур и форматов команд разной длины. Приведенные на рис. 3.1. структуры команд достаточно схематичны. В действительности адресные поля команд большей частью содержат не сами адреса, а только информацию, позволяющую определить действительные (исполнительные) адреса операндов в соответствии с используемыми в командах способами адресации.

Способы адресации

Существует два различных принципа поиска операндов в памяти: ассоциативный и адресный.

Ассоциативный поиск операнда (поиск по содержанию ячейки) предполагает просмотр содержимого всех ячеек памяти для выявления кодов, содержащих заданный командой ассоциативный признак. Эти коды и выбираются из памяти в качестве искомых операндов.

Адресный поиск предполагает, что искомый операнд извлекается из ячейки, номер которой формируется на основе информации в адресном поле команды. Ниже мы будем рассматривать только реализацию адресного принципа поиска операнда.

Следует различать понятия исполнительного адреса и адресного кода.

Адресный код – это информация об адресе операнда, содержащегося в команде.

Исполнительный адрес – это номер ячейки памяти, к которой фактически производится обращение.

В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом. Таким образом, способ адресации можно определить как способ формирования исполнительного адреса операнда А и по адресному коду команды А к.

В системах команд современных ЭВМ часто предусматривается возможность использования нескольких способов адресации операндов для одной и той же операции. Для указания способа адресации в некоторых системах команд выделяется специальное поле в команде - «метод» (указатель адресации). В этом случае любая операция может выполняться с любым способом адресации, что значительно упрощает программирование.

Адресуемые в командах операнды хранятся в основной памяти (ОП) и регистровой памяти (РП), рисунок 3.2.


Рассмотрим способы адресации, применяемые в современных ЭВМ.

Программа представляет собой набор байтов, воспринимаемых микропроцессором как коды той или иной команды вместе с соответствующими данными для этой команды. Для упрощения программирования используется мнемоническая запись команд МП (обычно в виде сокращенных английских слов).

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

Под адресацией данных в МП подразумеваются способы описания соответствующих адресов хранения операндов, которые можно применять в командах. Основные способы описания операндов: операнды-регистры, непосредственные операнды, операнды в памяти.

Входящие в состав микропроцессора компоненты указывают на то, что он является процессором с программным управлением. Некоторые компоненты - программный счетчик (счетчик команд СК), стек, регистр команд (РК) служат для обработки команд. Арифметико-логическое устройство, триггер переноса, регистры общего назначения (РОН) и регистр адреса данных (РА) служат для обработки данных. Все остальные компоненты, а именно: дешифратор команд (дешифратор кода операции ДКОП) и блок управления и синхронизации (БУ) управляют работой других компонентов. Взаимодействие компонентов осуществляется по внутренней шине данных. Связь МП с другими блоками (ЗУ и устройствами ввода-вывода) происходит по адресной щине, шине данных (внешней) и управляющей шине.

При выполнении каждой команды ЭВМ проделывает определенные стандартные действия.

  • 1. Согласно содержимому счетчика адреса команд считывается очередная команда программы (ее код обычно заносится на хранение в регистр команд).
  • 2. Счетчик команд автоматически изменяется так, чтобы в нем содержался адрес следующей команды.
  • 3. Считанная в регистр команд операция расшифровывается, извлекаются необходимые данные и над ними выполняются требуемые действия.

Затем во всех случаях, за исключением команды останова или наступления прерывания, все описанные действия циклически повторяются.

После выборки команды останова ЭВМ прекращает обработку программы. Для выхода из этого состояния требуется либо запрос от внешних устройств, либо перезапуск машины.

Пр и мер 3.2. Описать процесс выборки и исполнения команды, по которой содержимое регистра РОН суммируется с содержимым аккумулятора Л и результат операции фиксируется в аккумуляторе.

Команда однобайтовая с прямой регистровой адресацией. В коде команды (10000001) 2 = (81) 16 первые пять старших разрядов определяют код операции; три последних - код адреса регистра С. Команда записана в ячейку ОЗУ с адресом (номером) (0176), 6 . Число (2Б) |6 записано в регистр С РОН. В аккумулятор Л записано число (ЗА) 16 .

Процесс выборки и исполнения команды можно условно разбить на несколько этапов.

  • 1. Адрес команды (0176) 16 записывается в регистр адреса данных (РА).
  • 2. Адрес команды из РА по шине адреса поступает в ОЗУ.
  • 3. ОЗУ находит ячейку с указанным адресом и считывает команду в буферный регистр ОЗУ.
  • 4. Команда из буферного регистра ОЗУ по внешней шине данных, буфер данных (БД), внутренней шине данных поступает в РК.
  • 5. Дешифратор кода операции (ДКОП) распознает, что выборка команды закончена и содержимое аккумулятора и регистра С РОН необходимо подвергнуть суммированию.
  • 6. Содержимое РА увеличивается на единицу, и формируется адрес следующей ячейки ОЗУ (0177) 16 .
  • 7. Блок управления и синхронизации (БУ) вырабатывает последовательность сигналов, под воздействием которых числа (ЗА) 16 из аккумулятора и (2Б) 16 из регистра С РОН поступают в АЛУ, где производится операция суммирования: (ЗА) 16 + (2Б) 16 = = (69) 16 = (01 101001) 2 .
  • 8. Результат операции записывается в аккумулятор, замещая в нем прежнее число (ЗА) 16 .
  • 9. Выполнение команды закончено. Начинается выборка следующей команды с адресом (0177) 16 .

Микропроцессор имеет все режимы адресации, однако они обладают определенными особенностями, присущими данному процессору. Непосредственная адресация предполагает, что операнд занимает одно из полей команды, а следовательно, выбирается из оперативной памяти одновременно с ней. В зависимости от форматов обрабатываемых процессором данных непосредственный операнд может иметь длину 8 или 16 бит, что обозначается соответственно data8 и data 16.

Механизмы адресации операндов, находящихся в регистровой и оперативной памяти, существенно различаются. К регистровой памяти допускается лишь прямая регистровая адресация. При этом в команде указывается номер регистра, содержащего операнд. 16-разрядный операнд может находиться в регистрах АХ, ВХ, СХ, DX, DI, SI, SP, ВР, а 8-разрядный - в регистрах AL, АН, BL, ВН, CL, СН, DL и DH.

Регистры общего назначения (РОН) - основные рабочие регистры программ: АХ, ВХ, СХ и DX. К ним можно адресоваться как отдельным, так и однобайтным словом.

Например, АХ - старший байт АН, младший байт AL.

Регистр АХ - аккумулятор, который используется во всех операциях ввода-вывода и в операциях со строками и в арифметических операциях.

Регистр ВХ - базовый регистр, единственный из РОН, используемый в индексной адресации. Он также применяется в вычислениях.

Регистр DX - регистр данных, используемый в операциях ввода-вывода, а также в операциях умножения и деления больших чисел (совместно с АХ).

Любой из РОН может применяться для сложения или вычитания 8- или 16-разрядных величин.

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

Регистр SP (Stack Pointer) - указатель стека, используется для временного хранения адресов и иногда данных, т. е. адресует стек.

Регистр ВР (Base Pointer) - указатель базы, обеспечивает ссылки на параметры (адрес, данные), передаваемые через стек.

Стек - это линейный список, записи в котором выбираются, вставляются и удаляются с одного конца, называемого вершиной стека. Это обеспечивает доступ к записям по «принципу магазина»: последний вошел, первый вышел (Last In First Out - UFO).

Индексные регистры SI и DI используются для адресации (а также для выполнения операций сложения и вычитания). Регистр SI (Source Index) - индекс источника и регистр DI (Destination Index) - индекс приемника применяются в некоторых операциях со строками или символами.

Адресация оперативной памяти имеет особенности, связанные с ее разбиением на сегменты и использованием сегментной группы регистров для указания начального адреса сегмента. 16-разрядный адрес, получаемый в блоке формирования адреса операнда на основе указанного режима адресации, называется эффективным адресом (ЭА). Иногда эффективный адрес обозначается как ЕА (Effective Address). 20-разрядный адрес, который получается в результате сложения эффективного адреса и увеличенного в 16 раз значения соответствующего сегментного регистра, называется физическим адресом (ФА).

Именно физический адрес передается из микропроцессора по 20-адресным линиям, входящим в состав системной шины, в оперативную память и используется при обращении к ее ячейке на физическом уровне. При получении эффективного адреса могут применяться все основные режимы адресации, рассмотренные выше, а также некоторые их комбинации.

Прямая адресация предполагает, что эффективный адрес - часть команды, так как ЭА состоит из 16 разрядов и соответствующее поле команды имеет такую же длину.

При регистровой косвенной адресации эффективный адрес операнда находится в базовом регистре ВХ или в одном из ин-

Обозначение имени регистра в квадратных скобках указывает на содержимое соответствующего регистра. Фигурные скобки - символ выбора одного из трех возможных вариантов.

При регистровой относительной адресации эффективный адрес равен сумме содержимого базового или индексного регистра и смещения:

j disp8 I j disp 16 j

Обозначения disp8 и disp 16 указывают на 8- или 16-разряд-ное смещение соответственно.

Эффективный адрес при базово-индексной адресации равен сумме содержимого базового и индексного регистров, определяемых командой:

] у

Наиболее сложен механизм относительной базово-индексной адресации. Эффективный адрес в этом случае равен сумме 8- или 16-разрядного смещения и базово-индексного адреса:

эА=Л вх П + Л 01 П+1 айр8 ,1.

1 |ВР]} 1 1 авр1б

Форматы двухоперандных команд представлены на рис. 3.2. Пунктиром показаны поля, которые в зависимости от режима адресации могут отсутствовать в команде.

  • 1 байт
  • 1 байт
  • 1 байт

КОП d w md reg r/m

1 байт disp L

сімр і і і

[ disp Н

бкр Н І

Рис. 3.2. Форматы двухоперандных команд микропроцессора 18086: а - формат команд типа Я Я и /?5; б - формат команды с непосредственным операндом

Поле КОП содержит код выполняемой операции. Признак указывает на длину операндов. При ы= 1 операция проводится над словами, а при н> = 0 - над байтами. Признак (1 указывает положение приемника результата. Признак с1=, если результат записывается на место операнда, закодированного в поле ге%, и с! = 0, если результат записывается по адресу, закодированному полями (т(1, г/т).

Следующий байт команды, называемый постбайтом, определяет операнды, участвующие в операции. Поле ^ указывает регистр регистровой памяти согласно табл. 3.3.

Поля тс! и г/т задают режим адресации операнда (табл. 3.4).

Таблица 3.3. Регистры памяти

Таблица 3.4. Режимы адресации операнда

(ВХ) + (81) (ОБ)

(ВХ) + (Б1) + сПзрБ (ОБ)

(ВХ) + (Б1) + сПвр 16 (ОБ)

(ВХ) + (01) (ОБ)

(ВХ) + (01) + (И8р8 (ОБ)

(ВХ) + (О!) + сИвр 16 (ОБ)

(ВР) + (81) (вв)

(ВР) + (Б1) + сИэрБ (вБ)

(ВР) + (Б1) + (Шр16 (ББ)

(ВР) + (01) (вБ)

(ВР) + (01) + сИэрБ (вБ)

(ВР) + (01) + с1 вр 16 (8Б)

(Б1) + (Нерв (ОБ)

(Б1) + сИ8р16 (ОБ)

(оо + аврв (ОБ)

(01) + сН8р 16 (ОБ)

сИвр 16 (ОБ)

(ВР) + сНврБ (вБ)

(ВР) + сП8р16 (вБ)

(ВХ) + с!вр8 (ОБ)

(ВХ) + сП8р16 (ОБ)

В табл. 3.4, помимо определения режима адресации оперативной памяти, указан также сегментный регистр, используемый по умолчанию для получения физического адреса. Применение другого сегментного регистра возможно введением специального префикса (дополнительного байта, который записывается перед командой).

В командах, использующих непосредственный операнд, признак 5 вместе с признаком определяет разрядность непосредственного операнда, записываемого в команде, и разрядность выполняемой операции (табл. 3.5).

Таблица 3.5. Разрядности операций

Изменение естественного порядка выполнения команд программы осуществляется с помощью команд передачи управления. К ним относятся команды переходов, циклов, вызова подпрограммы и возврата из нее, а также некоторые другие. Классификация команд переходов в ПЭВМ представлена на рис. 3.3.


Физический адрес выполняемой команды определяется содержимым указателя команд 1Р и сегментного регистра команд

С8. Команды, меняющие значение обоих этих регистров, называются командами межсегментных переходов , а меняющие только значение 1Р, - командами внутрисегментных переходов.

Регистровая адресация. Операнды (источники и приемники) - это внутренние регистры МП: АХ, ВХ, СХ, ОХ, 8Р, ВР, 81, 01, а в операциях пересылки - дополнительные сегментные регистры.

Пример 3.3. МОУ АН, ВН.

Непосредственная адресация. Операнды - это константы, непосредственно задаваемые в команде МП (байты, слова, двойные слова).

Пример 3.4. МОУ АН, -2.

Адресация ячеек памяти. При вычислении адреса в памяти используются две составляющие - сегмент и смещение относительно его начала.

Пример 3.5. МОУ У1, 31Ь.

При прямой адресации в команде указывается то смещение, которое соответствует размещению в памяти соответствующего операнда. Обычно считается, что операнды находятся в сегменте данных 08. Прямая адресация используется, когда явно известен адрес операнда, например, при работе с системными областями памяти.

При косвенной адресации смещение соответствующего операнда в сегменте содержится в одном из регистров МП, например МОУ [ВХ], АЬ. Косвенная адресация позволяет легко организовывать доступ к сложным элементам данных, например к массиву данных. Для обозначения косвенной адресации название регистра заключают в квадратные скобки (ВХ - регистровая адресация, а [ВХ] - косвенная). Обычно в качестве регистра косвенной адресации используются: [ВХ], , и [ВР]. Для [ВХ], , неявно подразумевается сегмент 08, а для [ВР] - сегмент 88.

Косвенная адресация по базе означает, что исполнительный адрес вычисляется как сумма содержимого соответствующего регистра и некоторой константы. Этот способ адресации используется для доступа к полям структуры, начальный адрес которой задается в регистре, а смещение соответствующего поля - константой, записанной непосредственно в команде (применяются базовые регистры [ ВХ], [ВР] с соответствующими сегментами 08, 88).

Прямая индексная адресация эквивалентна косвенной по базе. При этом используются регистры 81, 01 и соответствующий 08-сегмент.

Пример 3.6.

МОУ Х3, О (аналогично МОУ [ХЗ + 01], 0);

МОУ ХЗ[ВХ][ОХ + 2], АН (ХЗ - адрес массива).

Адресация по базе с индексированием. В этом случае исполнительный адрес определяется как сумма трех составляющих: содержимого двух регистров и константы, задаваемой непосредственно в команде.

Пример 3.7.

База - ВХ, ВР. Индексы - 81, 01.

[ВХ + 81], [ВХ + 01] - с сегментом Э8.

[ВР + 81], [ВР + 01] - с сегментом 88.

В общем случае при использовании косвенной адресации исполнительный адрес можно представить следующим образом:

ЕА= [Регистр базы] + [Индексный регистр] + Константа.

Любая из этих компонент может отсутствовать.

Команды пересылки данных имеют общий формат с двумя операндами - источником и приемником,

например МОУ, .

Пр и мер 3.8. Команды пересылок данных:

МОУ АН, ВН

МОУ АН, ВХ

МОУ ОБ, В1, где В1 - адрес ячейки.

Команда ХСНО, - обмен операндов используется для любых РОН и переменных в памяти, кроме двух ячеек памяти.

Ниже приведены примеры команд.

Примеры арифметических команд:

  • ADD , ;
  • ADC , ;
  • INC ;
  • SUB , ;
  • SBB , ;
  • DEC ;
  • MUL ;
  • IMUL ;
  • DIV ;
  • IDIV .

Примеры команд сдвига:

  • SAL , ;
  • SAR , ;
  • SHL , ;
  • SHR , .

Примеры логических команд:

AND, OR, XOR, NOT.

Примеры команд передачи управления:

  • перехода JMP, JZ, JNZ, JCXZ;
  • цикла LOOP;
  • вызова подпрограммы и возврата из нее: CALL, RET;
  • вызова прерывания и возврата из него: INT, IRET.

Примеры дополнительных команд:

  • работы со стеком: PUSH, POP;
  • установки и ояистки флагов: STC, CLC;
  • холостого хода NOP.

Примеры команд ввода/вывода:

  • IN .., ;
  • ОиТ.., .

Примеры команд работы со строками:

MOVS, CMPS, OUTS.

Команды безусловных переходов производят модификацию регистра IP или регистров IP и CS без предварительного анализа каких-либо условий. Существует пять команд безусловных переходов. Все они имеют одинаковую мнемонику JMP и содержат один операнд. Конкретный формат команды определяется соответствующим префиксом и приведен в табл. 3.6.

Таблица 3.6. Машинные коды некоторых команд

Байт кода команды

Схема операции

md reg r/m

г(г/т) - г + г/т

md 000 r/m

г/т = г/т +

(data H)

ас - ас +

md reg r/m

г{г/т) - г{г/т) - (г/т)г

md 101 r/m

г/т = г/т -

(data H)

ас = ас -

001000dw

md reg r/m

г(г/т) = г & г/т

md 100 r/m

г/т = г/т &

(data H)

ас = ас &

000010dw

md reg r/m

г{г/т) = г V г/т

md 001 r/m

г/т = г/т V

(data H)

ас = ас V

Примечание. В столбце «Схема операции» сокращение «ас» означает регистр-аккумулятор, в качестве которого используются регистр АХ при = 1 и регистр АЬ при = 0.

При прямом безусловном внутрисегментном переходе новое значение указателя команд 1Р равно сумме смещения, закодированного в соответствующем поле команды, и текущего значения 1Р, в качестве которого используется адрес команды, записанной вслед за командой перехода. Команды прямых межсегментных переходов содержат помимо нового значения 1Р и новое значение сегментного регистра С5.

Команды косвенных переходов (внутрисегментных и межсегментных) передают управление на команду, адрес которой определяется содержимым регистра или ячеек оперативной памяти, на которые указывает закодированный в команде перехода постбайт.

Команды условных переходов - только внутрисегментные. По формату и способу формирования нового значения 1Р они аналогичны команде прямого внутрисегментного перехода с 8-разрядным смещением. Отличие их заключается в том, что в командах условного перехода механизм формирования нового значения 1Р включается лишь при выполнении определенных условий, а именно при определенном состоянии регистра флагов.

При невыполнении проверяемого условия в 1Р остается его текущее значение, т. е. адрес команды, следующей за командой условного перехода.

Ниже приведены примеры команд переходов различных типов.

Команды условного перехода:

IP- IP+ 2, если условие не выполнено;

IP= IP+2 + disp L, если условие выполнено.

Пример 3.9.

JZ MARK; переход на метку MARK, если ZF = 1.

Команды прямого внутрисегментного перехода:

IP= IP+ А + disp, где А - длина команды перехода (А = 2 или А = 3 в зависимости от длины смещения).

Пример 3.10.

JMP short ptr MARK; переход на метку MARK с использованием 8-разрядного смещения;

JMP near ptr MARK; переход на метку MARK с использованием 16-разрядного смещения.

Команды прямого межсегментного перехода:

IP=JP_H, IP_L CS= CS_H, CS L.

Пример 3.11.

JMP far ptr MARK; переход на метку MARK к команде, находящейся в другом сегменте.

    Как правильно управлять финансами своего бизнеса, если вы не специалист в области финансового анализа - Финансовый анализ

    Финансовый менеджмент - финансовые отношения между суъектами, управление финасами на разных уровнях, управление портфелем ценных бумаг, приемы управления движением финансовых ресурсов - вот далеко не полный перечень предмета "Финансовый менеджмент "

    Поговорим о том, что же такое коучинг ? Одни считают, что это буржуйский брэнд, другие что прорыв с современном бизнессе. Коучинг - это свод правил для удачного ведения бизнесса, а также умение правильно распоряжаться этими правилами

2.3. Структура и форматы команд ЭВМ

Арифметические операции.

г) команды передачи кодов;

Akk:=Аkk*ОП[А1].

Все возможные преобразования, дискретной информации могут быть сведены к четырем основным видам:

Передача информации в пространстве (из одного блока ЭВМ в дру­гой);

Передача информации во времени (хранение);

Логические (поразрядные) операции;

Арифметические операции.

ЭВМ, являющаяся универсальным преобразователем дискретной ин­формации, выполняет указанные виды преобразований.

Обработка информации (решение задач) в ЭВМ осуществляется автома­тически путем программного управления. Программа представляет собой ал­горитм обработки информации (решение задачи), записанный в виде после­довательности команд, которые должны быть выполнены машиной для полу­чения результата.

Команда представляет собой код, определяющий операцию и данные, участвующие в операции. Команда содержит также в явной или не явной форме информацию об адресе, по которому помещается результат операции, и об адресе следующей команды.

По характеру выполняемых операций различают следующие основные группы команд:

а) команды арифметических операций над числами с фиксированной и плавающей точками;

б) команды десятичной арифметики;

в) команды логических операций;

г) команды передачи кодов;

д) команды операций ввода-вывода;

е) команды передачи управления;

ж) команды задания режима работы машины и др.

В команде, как правило, содержатся не сами операнды, а информация об адресах ячеек памяти или регистрах, в которых они находятся.

Команда в общем случае состоит из операционной и адресной частей (рис.2.2,а).

В свою очередь, эти части, что особенно характерно для адресной части, могут состоять из нескольких полей.

Рис. 2.2. Структуры команд: а) обобщенная; б) четырех-; в) трех-;

г) двух -; д) одно -; е) безадресная

Операционная часть содержит код операции (КОП), который задает вид операции (сложение, умножение и др.). Адресная часть содержит информа­цию об адресах операндов и результате операции, а в некоторых случаях -информацию об адресе следующей команды.

Структура команды определяется составом, назначением и расположе­нием полей в команде.

Форматом команды называют ее структуру с разметкой номеров раз­рядов (бит), определяющих границы отдельных полей команды, или с указа­нием числа бит в определенных полях.

Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и форматов команды, т.е. ее длины, назначения и размерности от­дельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выполняемых различных операций и соответственно команд (в компьютерах с CISC-архитектурой более 200 команд) и значительно увеличилась емкость адресуемой основной памяти (32, 64 Мб), это приводит к недопустимо боль­шой длине формата команды.

Действительно, число двоичных разрядов, отводимых под код операции, должно быть таким, чтобы можно было представить все выполняемые ма­шинные операции. Если ЭВМ выполняет М различных операций, то число разрядов в коде операции

Если основная память содержит S адресуемых ячеек (байт), то для явно­го представления только одного адреса необходимо в команде иметь адрес­ное поле для одного операнда с числом разрядов

Вместе с тем для упрощения аппаратуры и повышения быстродействия ЭВМ длина формата команды должна быть согласована с выбираемой, исхо­дя из требований к точности вычислений, длиной обрабатываемых машиной слов (операндов), составляющей для большинства применений 32 бита с тем, чтобы для операндов и команд можно было эффективно использовать одни и те же память и аппаратные средства обработки информации. Формат коман­ды должен быть по возможности короче, укладываться в машинное слово или полуслово, а для ЭВМ с коротким словом (8-16 бит) должен быть мало­кратным машинному слову. Решение проблемы выбора формата команды значительно усложняется в микропроцессорах, работающих с коротким сло­вом.

Отмечавшиеся ранее характерные для процесса развития ЭВМ расшире­ние системы (наборы) команд и увеличение емкости основной памяти, а осо­бенно создание микроЭВМ с коротким словом, потребовали разработки ме­тодов сокращения длины команды. При решении этой проблемы существен­но видоизменилась структура команды, получили развитие различные спосо­бы адресации информации.

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 2.2,6, содержать следующую информацию:

А1 , А2; - адреса операндов, А3 - адрес результата, А4 _ адрес следующей команды (принудительная адресация команд).

Такая структура приводит к большей длине команды (например, при S = 200, S = 32 Мб длина команды - 108 бит) и неприемлема для прямой ад­ресации операндов основной памяти. В компьютерах с RISC-архитектурой четырехадресные команды используются для адресации операндов, храня­щихся в регистровой памяти процессора.

Можно установить, как это принято для большинства машин, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (К+L)-й ячейки. Такой порядок выборки ко­манды называется естественным. Он нарушается только специальными ко­мандами (передачи управления). В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды.

В трехадресной команде (рис. 2.2,в) первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячей­ку, в которую помещается результат операции.

Можно условиться, что результат операции всегда помещается на место одного из операндов, например первого. Получим двухадресную команду (рис. 2.2,г), т.е. для результата используется подразумеваемый адрес.

В одноадресной команде (рис. 2.2д) подразумеваемые адреса имеют уже и результат операции и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумуля­тором (Akk). Результат операции записывается в тот же регистр:

Akk:=Аkk*ОП[А1].

Наконец, в некоторых случаях возможно использование безадресных команд (рис. 2.2,е), когда подразумеваются адреса обоих операндов и резуль­тата операции, например, при работе со стековой памятью.

С точки зрения программиста, наиболее естественны и удобны трехад­ресные команды. Однако из-за необходимости иметь большее число разрядов для представления адресов основной памяти и кода операции длина трехад­ресной команды становится недопустимо большой, и ее не удается размес­тить в машинном слове. Следует отметить, что очень часто в качестве опе­рандов используются результаты предыдущих операций, хранимые в регист­рах машины. По указанным причинам в современных ЭВМ применяют трех­адресные команды для адресации регистров.

Способ расширения кодов операции

В машинах с коротким словом практически невозможно в одном форма­те команды, т.е. при фиксированном назначении ее полей, кодировать боль­шое число различных операций и одновременно иметь гибкую форму адре­сации операндов. Это противоречие в машинах с коротким словом преодоле­вается расширением кодов операций в команде. Для задания небольшой группы основных операций (арифметических и др.) используется короткий код операции, а получаемая при этом сравнительно большая адресная часть команды позволяет реализовать гибкую, например двухадресную с многими модификациями, адресацию. Для задания других операций используются бо­лее длинные (расширяемые) коды операций, при этом сокращаемая адресная часть оставляет возможность лишь для более простой, например одноадрес­ной адресации операндов. В пределе расширяемый код операции занимает весь формат команды (безадресная команда).

Обычно в ЭВМ используется несколько структур и форматов команд разной длины.

Приведенные на рис. 2.2. структуры команд достаточно схематичны. В действительности адресные поля команд большей частью содержат не сами адреса, а только информацию, позволяющую определить действительные (исполнительные) адреса операндов в соответствии с используемыми в ко­мандах способами адресации.

Все права защищены. Материалы этого сайта могут быть использованы только со ссылкой на данный сайт