Команды. Лекции - Архитектура ЭВМ - файл Архитектура ЭВМ Лекции.doc Команда для эвм состоит из скольки частей

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

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

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

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

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

  • 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 к команде, находящейся в другом сегменте.

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

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

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

2) Команды десятичной арифметики.

3) Команды передачи данных

4) Команды операций ввода/вывода

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

6) Команды передачи управления (управление циклом, условный и безусловный переход)

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

А1-А2: адреса операндов

А3: адрес результата

А4: адрес следующей команды

Команда содержит в явном виде всю информацию его задаваемой операции. Существует принудительная адресация. Такая структура приводит к большой длине команды и неприемлема при прямой адресации операндов. В ряде случаев после выполнения команды расположенных по адресу К, и занимающие L ячеек памяти выполняется команда из ячейки К+L. Такой порядок выборки команд является естественным. Нарушается командами передачи управления. В этом случае отпадает необходимость в явном виде указывать А4.

В трехадресной команде:

А1-А2: адреса операндов

А3: адрес результата

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

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

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

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

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

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

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

В ЭВМ адресный код как правило не совпадает с исполнительным адресом. Способ адресации – это способ формирования исполнительного адреса операнда А и по адресному коду команды А к ­­.

В системах команд ЭВМ часто предусматривается возможность использования нескольких способов адресации операндов для одной и той же операции. В этом случае в системе команд выделяется специальное поле – указатель адресации.

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

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

1. Команды передачи данных (перепись) , копирующие информацию из одного места в другое.

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

3. Логические операции , позволяющие компьютеру производить анализ получаемой информации. После выполнения такой команды, с помощью условного перехода ЭВМ способна выбрать дальнейший ход выполнения программы. Простейшими примерами команд рассматриваемой группы могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия), описанные ранее в п.1.4. Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

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

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

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

Часто к этой же группе команд относят операции по управлению процессором типа останов или НОП - нет операции. Иногда их выделяют в особую группу. С ростом сложности устройства процессора количество такого рода команд увеличивается.

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

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

Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

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

Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес А3. Если для операции требовалось меньшее количество адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и А3, а содержимое А2 не имело никакого значения.

Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина такой команды складывается из длины трех адресов и кода операции. Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части требуется 3*10=30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре ) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в адресах ОЗУ А1 и А2, а сумму поместить в А3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

  1. извлечь содержимое ячейки А1 в сумматор;
  2. сложить сумматор с числом из А2;
  3. записать результат из сумматора в А3.

Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это далеко не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения Y=(X1+X2)*X3/X4 и вы с удивлением обнаружите, что потребуется 3 трехадресных команды и всего 5 одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, т.к. она не производит ненужной записи в память промежуточных результатов.

Ради полноты изложения следует сказать о возможности реализации безадресной (нульадресной) машины, использующей особый способ организации памяти - стек . Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений; в то же время сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов типа "Б3-21" и "Б3-34" и им подобным.

© Е.А.Еремин , 1997
Из книги:
Еремин Е.А. Как работает современный компьютер . - Пермь: изд-во ПРИПИТ, 1997. 176 с.

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

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

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

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

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

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

¨ команды передачи данных (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.


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

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

Наименование параметра Значение
Тема статьи: Основные команды ЭВМ
Рубрика (тематическая категория) Компьютеры

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

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

Классификация команд ЭВМ

I. По функциональному назначению

Команды передачи данных

Команды обработки данных

Команды передачи управления

Дополнительные команды

II. По количеству адресов

Безадресный

С первого адреса

Со второго адреса

С третьего адреса

III. По способу кодирования операции

С фиксированной длиной кода операции

С переменной длинной кода операции

IV. По длинœе

Один байт (слово)

2 байта (слово)

3 байта (слово)

Команды передачи данных

Данная группа команд включает в себя подгруппу команд передачи кода внутри МП между регистрами, из регистров МП в память, из памяти в регистры, из одних ячеек памяти в другие и передачи данных между МП и портами ВУ.

Отдельную подгруппу составляют команды работы со стеком. Οʜᴎ позволяют включать данные в стек для временного хранения и извлекать данные из стека при крайне важно сти их использования.

Команды обработки данных

Данную группу команд можно подразделить на арифметические, логические и команды сдвига.

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

Команды этой группы формируют признаки результатов, устанавливая в регистре флагов процессора перенос из старшего разряда, переполнение, нулевой результат. К арифметическим командам относят также и команды сравнения, т.к. для сравнения двух чисел ЦП выполняет операцию вычитание. По результату вычитания устанавливаются флаги во флаговом регистре МП. Результат вычитания не сохраняется в памяти, но по состоянию флагового регистра можно узнать о результатах сравнения двух величин.

Многие ЦП имеют команды сравнения операнда с 0. В других МП имеются команды проверки или установки состояния отдельных битов в операнде.

Команды передачи управления

Οʜᴎ имеют важное значение, т.к. используются для изменения естественного порядка следования команд и организации циклических участков в программах. Простейшей командой передачи управления является команда безусловного перехода JMP, которая загружает адрес перехода, указанного в команде в программный счетчик.

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

Команды для работы с подпрограммами. Стек.

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

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

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

Основные команды ЭВМ - понятие и виды. Классификация и особенности категории "Основные команды ЭВМ" 2017, 2018.