•декодирование команд (т.е. определение назначения команды, способа ее исполнения и адресов операндов);
• выполнение операций, закодированных в командах;
• управление пересылкой информации между своими внутренними регистрами, оперативной памятью и внешними (периферийными) устройствами;
• обработка внутрипроцессорных и программных прерываний;
• обработка сигналов от внешних устройств и реализация соответствующих прерываний;
• управление различными устройствами, входящими в состав компьютера.
Обсуждение внутренних регистров микропроцессора начнем с наиболее важных: счетчика адреса команд, указателя стека и регистра состояния. Наличие счетчика адреса команд, как уже говорилось выше, было предложено еще в работахфонНеймана. Роль счетчика состоит в сохранении адреса очередной команды программы и автоматическом вычислении адреса следующей. Благодаря наличию программного счетчика в ЭВМ реализуется основной цикл исполнения последовательно расположенных команд программы. Заметим, что не во всех МП счетчик команд программно доступен.
В указателе стека хранится адрес начала специальным образом организуемого участка памяти стека, описанного в следующем параграфе; роль указателя стека в функционировании процессора достаточно велика.
Наконец, регистр состояния процессора. Для разных МП он может называться по-разному (например, слово состояния процессора, регистр флагов и т.п.), но суть его всегда одна: в этом регистре хранятся сведения о текущих режимах работы процессора. Сюда же помещается информация о результатах выполняемых команд, например, равен ли результат нулю, отрицателен ли он, не возникли ли ошибки в ходе операции и т.п. Использование и анализ информации в этом очень важном регистре происходит побитно; иными словами, каждый бит регистра состояния имеет самостоятельное значение. Содержание регистра состояния МП всегда старается сохранить в первою очередь сразу после значения командного счетчика.
Помимо рассмотренных выше, каждый МП имеет набор рабочих регистров, в которых хранятся текущие обрабатываемые данные или их адреса в ОЗУ. У некоторых процессоров регистры функционально равнозначны (классическим примером служит процессор машин семейства PDP). в других (к ним принадлежит все интел-ловское семейство МП) назначение регистров достаточно жестко оговаривается. В последнем случае выделяется особый регистр, который принято называть аккумулятором.. В нем производятся все основные операции и сохраняется их результат
Приведем описание наиболее распространенных вариантов ссылок на исходную информацию (учитывая, что терминология для разных МП может различаться, названия методов адресации не приводятся):
1) данные находятся в одном из регистров МП;
2) данные входят непосредственно в составкоманды, т.е. размещаются после кода операции (операции с константой);
3) данные находятся в ячейке ОЗУ, адрес которой содержится в одном из регистров МП;
4) данные находятся в ячейке ОЗУ, адрес которой вычисляется по формуле
Мнемоника
команды
Содержание команды
Пояснения
HLT
Остановка
Выполнение программы прекращается
CLR А
Очистить А
А:=0 (в операнд А засылается 0)
INC А
Увеличить А на 1
А:=А+ 1 (значение А увеличивается на 1)
DEC A
Уменьшить А на 1
А:=А-1 (значение А уменьшается на 1)
MOV А,В
Переписать А в В
В:=А (В принимает значение А)
ADD A,B
Сложить А в В
В:=А + В (сумма помещается в В)
SUB A,B
Вычесть А из В
В:=В-А (разность помещается в В)
СМР А,В
Сравнить А с В
По знаку разности А-В устанавливаются
Управляющие биты; А и В сохраняются
JMP А
Безусловный переход к А
Безусловный переход по адресу А
BR К
Безусловный переход на К. слов
Безусловный переход через К команд
BEQ К
Переход по = 0
Переход на К слов, если результат = 0
BNE К
Переход по ≠ 0
Переход на К слов, если результат ≠ 0
BPL К
Переход по ≥ 0
Переход на К слов, если результат ≥ 0
ВМ1 К
Переход по < 0
Переход на К. слов, если результат < 0
JSR А
Вызов подпрограммы по адресу А
Переход на адрес А с запоминанием адреса возврата для команды RET
RET
Возврат из подпрограммы
Возврат на команду, следующую за вызовом
подпрограммы
Операнд в регистре Rn
Операнд в ячейке ОЗУ, адрес которой в Rn
То же, но после чтения Rn увеличивается на 1
То же, но перед чтением Rn уменьшается на 1
КОП
КМА
N POH
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
КОП
KMA1
N POH1
KMA2
N POH2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Кроме уже названных, в «Е97» имеется ряд внутренних регистров, которые процессор использует при исполнении операций. Это регистр команд РК, предназначенный для хранения кода исполняемой в данный момент команды; регистры операндов Рг1 и Рг2, куда считываются исходные данные; сумматор См, в котором производится требуемое в команде действие и получается результат. Мы не можем непосредственно изменять содержимое этих «служебных» регистров, но в данном учебном компьютере они доступны для наблюдения. Вертикальная заштрихованная полоса на рисунке разделяет программно-доступные (слева) и программно-недоступные (справа) регистры.
СИСТЕМА КОМАНД
Перейдем к самому важному - системе команд, которые умеет выполнять учебный процессор. Как мы уже знаем, машинная команда состоит из операционной и адресной частей: первая указывает, что надо сделать с данными, а вторая - где их взять и куда поместить результат. В этом разделе мы будем говорить, в основном, об операционной части, лишь коротко упоминая об адресной; в последней нас пока, главным образом, будет интересовать число операндов (адресов). Вопросам, связанным с подробностями адресации данных, будет посвящен следующий пункт.
Итак, рассмотрим структуру команды «Е97» (рис. 4.20). В зависимости от конкретной операции, ее формат может иметь некоторые особенности, но в наиболее полной форме он состоит из четырех частей по 4 бита каждая (см. рис. 4.20, б): модификатор МОД, код операции КОП и два операнда ОП1 и ОП2. Назначение КОП и операндов было описано в предыдущем параграфе. Что же касается МОД, то он указывает варианты реализации команды, например, адресовать байт или слово, по каким управляющим битам переходить и др.
Наиболее простой формат команд из всех возможных, имеют две -нет операции (ее код 0) и останов (код F). Как видно из рис. 4.20, а, в этих командах задействован только КОП. остальные 12 бит значения не имеют. Основная масса команд, коды которых заключены в интервале от 1 до В. являются двухадресными и соответствуют уже упоминавшемуся ранее рис. 4.16, б.