Cтраница 3
Во время выполнения 3-байтной команды содержимое счетчика команд инкрементируется трижды. [31]
Когда эта команда выполняется, содержимое счетчика команд заменяется тем адресом, который содержится в команде передачи управления. На рис. Рис - 8 - 7 - 8.7 условно изображена программа, содержащая две такие команды. Выполнение или невыполнение команды передачи управления иногда ставится в зависимость от значения одного из признаков. Например, команда передачи управления может выполняться, если результат предыдущей операции равен нулю; если результат не равен нулю, то выполняется следующая по порядку команда программы. [32]
![]() |
Структурная схема микропроцессора. [33] |
При извлечении очередной команды из памяти содержимое счетчика команд через регистр адреса устанавливается на шине адресов. [34]
Во время цикла выборки этой команды содержимое счетчика команд загружается в регистр адреса памяти. Переданный по адресной шине адрес 0005 декодируется дешифратором. После поступления импульса Чтение памяти содержимое области памяти 0005 ( команда ЗАПИСЬ В ПАМЯТЬ) выводится на шину данных и пересылается в регистр команд. [35]
При выполнении команды ПЕРЕХОД, ЕСЛИ НУЛЬ содержимое счетчика команд изменяется в ситуации, когда значение указанного разряда регистра состояния имеет значение 1, т.е. когда равно О содержимое всех разрядов аккумулятора. [36]
В фазе выполнения команды осуществляется положительное приращение содержимого счетчика команд, после чего он указывает на область OOOF. В регистр адреса памяти загружаются второй и третий байты команды. Содержимое аккумулятора пересылается в буферный регистр. Наконец, содержимое области памяти 0016, бит переноса и содержимое буферного регистра складываются, и полученная сумма загружается в аккумулятор. [37]
Наконец, последний элемент вектора состояния - это содержимое счетчика команд, определяющее адрес очередной команды, подлежащей выполнению. Состояние программы, таким образом, представляется набором из AC, MQ, IX, BR и 1C, полностью фиксирующим точку, до которой дошло выполнение программы. Заметим, что вектор состояния не содержит информации о том, какими устройствами и наборами данных может пользоваться программа и каково состояние этих устройств и наборов. Это значит, что предполагается существование расширенного программно поддерживаемого вектора состояния, хранящегося в определенном месте памяти. Более подробно расширенный вектор состояния рассматривается в следующих главах. [38]
Как только центральный процессор решил принять прерывание, содержимое счетчика команд ( PC) и слова состояния процессора ( PSW) помещается в текущий стек, а процессор переключается в режим работы ядра. Номер устройства может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний ( это часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того как обработка прерывания целиком завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закончено. [39]
Система обработки прерываний - автоматическая, с запоминанием содержимого счетчика команд и слова состояния процессора в аппаратном стеке. [40]
РК очередной команды программы, а заканчивается изменением содержимого счетчика команд ( то есть установкой на нем адреса следующей команды) и очисткой АУ регистра команд, регистра микроопераций и обоих рзгистров ОЗУ. [41]
После извлечения очередной команды из памяти микропроцессор автоматически дает приращение содержимому счетчика команд. Это приращение счетчик команд получает как раз в тот момент, когда микропроцессор начинает выполнять команду, только что извлеченную из памяти. Следовательно, начиная с этого момента, счетчик команд указывает, какая будет следующая команда. [42]
Если адресация команд, подлежащих выполнению, производится только по содержимому счетчика команд, то адресация данных, используемых в ходе выполнения команд, осуществляется по-разному. [43]
Если использовать косвенный режим с автоувеличением, то по определению режима содержимое счетчика команд является не адресом операнда, а адресом адреса операнда. Таким образом, получаем возможность задать непосредственно в команде абсолютный адрес операнда. [44]
При этом, как и при любом обращении к подпрограмме, содержимое счетчика команд и слово состояния процессора PSW записываются в стек. Программа обслуживания должна заканчиваться командой RETR Восстановление состояния и возврат к прерванной программе. [45]