ФУНКЦИОНАЛЬНАЯ СХЕМА МИКРОПРОЦЕССОРА
При работе с ПМ-ЭВМ пользователю необходимо иметь информацию о числе и назначении всех регистров, специальных указателей, называемых флагами, и о системе команд МП. Число, назначение регистров, флагов и команд пользователь изменить не может. Он может изменять лишь содержимое регистров и использовать команды в любой нужной ему комбинации.
Как уже говорилось, под регистром подразумевается специальное запоминающее устройство, состоящее из элементов (триггеров) с двумя устойчивыми состояниями. Число элементов (восемь) соответствует одному байту. Большинство регистров микропроцессора 8-разрядные и лишь некоторые 16-разрядные. Все регистры разбиты на группы и отличаются различным функциональным назначением.
Основными блоками МП (рис. 4.4) являются: блок регистров общего назначения со схемой выборки регистров, регистр команд с дешифратором команд и формирователем машинных циклов, арифметическо-логическое устройство (АЛУ) с регистром А (аккумулятором), выполняющее арифметические и логические операции, регистр временного хранения данных W и Z (РВХД), флаговый регистр, устройство управления и синхронизации, буферы шины данных (БШД) и адреса (БША), буфер аккумулятора (БА), схема приращения и уменьшения (СПИУ).
Рис. 4.4. Схема ЦПЭ на базе микропроцессора КР580ИК80А:
СГ - сигналы генератора тактовых импульсов; СС — сигнапы синхронизации
Доступными программисту являются следующие регистры: шесть 8-разрядных регистров, адресуемых по одному или парами (регистры В, С, D, E, H, L); один 8-разрядный регистр А, называемый аккумулятором; один 16-разрядный регистр, называемый указателем стека; один 16-разрядный регистр, называемый счетчиком команд, или программным счетчиком.
В некоторых специальных случаях могут быть доступными данные следующих двух регистров: регистра команд (8-разрядного) ; флагового регистра (5-разрядного).
Программно недоступными пользователю являются регистры W и Z. Они используются для временного хранения данных при выполнении команд микропроцессором.
Регистры общего назначения. Эти регистры размерностью в один байт обозначаются В, С, D, E, H, L. Они используются для хранения данных и промежуточных результатов вычислений, выполняемых с помощью арифметическо-логиче-ского устройства. При обработке 16-разрядных слов возможно обращение к парам регистров (В, С); (D, E); (H, L).
Аккумулятор — специальный однобайтовый регистр, обозначаемый А. При выполнении арифметических и логических операций служит источником одного из операндов и местом запоминания результата выполнения операции. Аккумулятор является основным операционным звеном арифметическо-логического устройства. Он служит также местом хранения данных и результатов операций, выполняемых в АЛУ.
Регистр команд — однобайтовый регистр, в котором хранится код выполняемой команды. Этот регистр непосредственно пользователю недоступен. Это означает, что не существует команды, которая бы явным образом могла изменить его содержимое. После выполнения очередной команды в регистр команд автоматически записывается код следующей команды из ячейки оперативной памяти, адрес которой содержится в счетчике команд.
Счетчик команд — двухбайтовый (16-разрядный) регистр, обозначаемый PC, или программный счетчик. Этот регистр хранит адрес следующей команды, которая должна быть выполнена вслед за предыдущей. Счетчик команд автоматически получает приращение хранимого в нем адреса в зависимости от того, какую по длительности команду (в один, два или три байта) микропроцессор считывает из памяти, указывая всегда на 1-й байт следующей команды. На содержимое этого регистра пользователь может повлиять только с помощью команд, изменяющих последовательное выполнение программы (например, команд безусловного перехода), а также с помощью некоторых специальных команд.
Указатель стека-двухбайтовый (16-разрядный) регистр, обозначаемый SP. Этот регистр хранит адрес очередной ячейки стека. Стеком называется особым образом организованный участок оперативной памяти, выделяемый программистом для временного хранения содержимого внутренних регистров МП со специальным режимом доступа.
Эта область оперативной памяти необходима в том случае, когда нужно прекратить выполнение реализуемой последовательности команд и вернуться к ней позже, например для немедленного выполнения специальной подпрограммы или в результате прерывания программы. Данные от МП поступают в верхнюю часть стековой памяти, и при этом содержимое указателя стека уменьшается на единицу, чтобы всегда указывать на адрес последней заполненной ячейки стека (дно свободного пространства стека). Когда же данные выбираются (считываются) из стека, содержимое указателя стека увеличивается на единицу с каждым выбранным байтом. Эти операции со стеком называются стековыми. С их помощью легко организуются многоуровневые (вложенные) прерывания и программы обращения к подпрограммам из подпрограмм (к вложенным подпрограммам).
Флаговый регистр- регистр, содержащий 5 двоичных разрядов, называемых флагами, по числу хранимых в нем специальных признаков результатов некоторых операций. Иногда он называется регистром признаков или флаговым регистром битов условий. Значение флага указывает на результат выполнения какой-либо операции. Микропроцессор КР580ИК80А содержит флаговый регистр, состоящий из следующих флагов: флага нуля (Z - zero), флага переноса (С -carry), флага знака (S - sign), флага четности (Р -parity), флага дополнительного переноса (АС - auxiliary carry). Флаги всегда устанавливаются или сбрасываются автоматически после выполнения очередной команды, влияющей на флаги, в зависимости от результата операции. При этом флаг считается установленным, если флаговый разряд принимает значение 1, и сброшенным, если значение разряда 0. Состояния флагов используются в командах условного перехода. Результаты выполнения арифметических и логических операций над содержимым аккумулятора, регистров общего назначения или содержимым ячеек памяти оказывают влияние на флаги следующим образом.
Флаг нуля устанавливается в состояние 1, если после выполнения какой-либо команды получен нулевой результат, и сбрасывается в 0 в случае ненулевого результата.
Флаг переноса устанавливается в 1, если в результате операций сложения и сдвига появляется единица переноса из старшего разряда байта данных, а также если появляется заем из старшего разряда после выполнения операций вычитания или сравнения, в противном случае флаг сбрасывается в 0.
Флаг знака устанавливается в 1, если в результате выполнения операций появляется логическая единица в старшем разряде байта данных (указание на отрицательный результат), и сбрасывается в 0 в случае нулевого значения старшего разряда (указание на положительный результат).
Флаг четности устанавливается в 1, если после выполнения операций сумма единиц в байте данных, подсчитываемых с помощью операции сложения по модулю 2, четна (значение суммы по модулю 2 равно 0), и сбрасывается в 0 в противном случае (число единиц — нечетное).
Флаг дополнительного переноса устанавливается в 1, если в результате выполнения команды появляется сигнал переноса из третьего разряда в четвертый в байте данных результата. Если такого переноса нет, флаг дополнительного переноса сбрасывается в 0. Сигнал этого флага используется во многих схемах вычислений, однако он особенно необходим при сложении чисел в двоично-десятичной форме.
Перейдем теперь к рассмотрению того, как микропроцессор выполняет команды.