21.2. ПРИНЦИП ДЕЙСТВИЯ МИКРОПРОЦЕССОРА
Рассмотрим принцип действия и структуру команд микропроцессора типа
разработанного фирмой Motorola. Большинство остальных микропроцессоров имеют подобные структуру и программные средства.
21.2.1. БЛОК-СХЕМА
На рис. 21.2 изображена блок-схема микропроцессора МС 6800. Длина адресного слова в нем составляет 16 бит, что дает возможность адресовать до
слов. Длина слова данных равна 8 битам.
Логические и арифметические операции выполняются в основном с данными, записанными в рабочих регистрах. В начале выполнения программы в программный счетчик заносится начальный адрес. Этот адрес передается по шине адресов в запоминающее устройство. По сигналу считывания, передаваемому по шине управления, содержимое соответствующего регистра появляется на шине данных и запоминается в регистре команд. Затем дешифратор команд инициирует необходимую операцию для выполнения текущей команды. Для этого может понадобиться различное количество тактов (машинных циклов). Дешифратор команд после исполнения команды записывает в программный счетчик адрес следующей команды. Подробно последовательность действий будет рассмотрена на нескольких примерах в следующем разделе.
На рис. 21.3 показаны рабочие регистры микропроцессора
доступные для программиста. Большинство арифметических операций выполняется с помощью аккумуляторов
Индексный регистр служит для запоминания адресов, которые используются наиболее часто, указатель стека предназначен для организации подпрограмм. Регистр признаков (Condition Code Register) содержит дополнительную информациюо результате выполнения последней команды.
Рис. 21.2. Внутренняя структура микропроцессора МС 6800.
Рис. 21.3. Рабочие регистры микропроцессора
доступные для программиста.
21.2.2. СТРУКТУРА КОМАНД
Как уже упоминалось, микропроцессор
обрабатывает адресные слова длиной 16 бит (2 байта) и слова данных длиной 8 бит (1 байт). Такие длинные двоичные комбинации трудны для восприятия программистом. Поэтому используется сокращенный способ записи: каждые 4 бита объединяют в одну цифру. Таким образом можно образовать 16 различных значений. Полученный код называется шестнадцатеричным или сокращенно гексокодом. Для цифр от
до 9 используются обычные десятичные цифры. Цифры от десяти до пятнадцати представляются буквами от А до
Соответствие между различными кодами иллюстрирует табл. 21.1.
Поскольку основание системы счисления 16 является степенью числа 2, то имеются две различные возможности для перевода многозначных шестнадцатеричных чисел в соответствующие десятичные. Во-первых, можно записать число в соответствии с соотношением
Во-вторых, каждую цифру можно представить в виде двоичного числа и расположить их друг за другом. При этом способе записи получается двоичное число, которое можно преобразовать с помощью приведенного ниже метода. Поясним это на примере:
Таким образом, для указания адреса двоичные числа, состоящие из 16 разрядов, могут быть представлены в сокращенной форме записи, содержащей
-разрядные шестнадцатеричные числа, а 8-разрядные слова данных в виде двухразрядных шестнадцатеричных чисел. Различные команды, которые должен выполнить микропроцессор, записываются на машинном языке
с помощью 8-разрядных слов, т.е. двухразрядных шестнадцатеричных чисел. Наряду с этим применяются также символические обозначения (мнемоника), содержащие сокращенные названия команд, удобные для запоминания. Команда ЗАГРУЗИТЬ АККУМУЛЯТОР А, например, сокращенно записывается как
Однако в такой форме записи микропроцессор не может ее воспринять. Поэтому такую запись необходимо сначала перевести на машинный язык. Для этой цели используют таблицу или специальную программу перевода (ассемблер).
Таблица 21.1 (см. скан) Соответствие между двоичными, шестнадцатеричными и десятичными числами
После записи команды
необходимо указать микропроцессору, чем должен быть загружен аккумулятор, т.е. с каким операндом должна использоваться команда.
Для этого имеются различные возможности.
1) Прямая адресация (extended)
Два байта, следующих за командой, указывают полный
-разрядный адрес ячейки памяти, содержимое которой необходимо загрузить в аккумулятор А. При этом получается следующая структура:
(см. скан)
Машинный код команды
для микропроцессора
Запишем адрес для приведенного выше примера:
2) Укороченная адресация (direct)
В программе указывается только один младший байт адреса, старшему байту адреса микропроцессором автоматически присваивается нулевое значение. Команде
соответствует машинный код, равный 96. Этот способ адресации Base Page позволяет затрачивать меньше времени на формирование адресов, которые лежат в пределах от 0000 до
или от
до 25510. Следовательно, в этой области памяти целесообразно записывать переменные и константы, которые используются наиболее часто. При этом получается следующая структура:
(см. скан)
В этом примере считывается содержимое ячейки памяти с адресом
3) Адресация с индексированием (indexed)
При этом способе адресации считывается содержимое ячейки памяти, адрес которой записан в индексном регистре. Кроме того, с помощью 8-разрядных чисел можно дополнительно задавать величину смещения. Этот способ адресации позволяет вызывать ячейки памяти, адрес которых старше выбранного
-разрядного кода адреса, записанного в индексном регистре. При этом получается следующая структура:
(см. скан)
Машинный код для команды
Пусть в индексном регистре находится код адреса
Тогда в приведенном выше примере будет считано содержимое запоминающего устройства по адресу
Величина смещения интерпретируется микропроцессором как положительное 8-разрядное число. Отрицательное смещение не предусмотрено. Следовательно, максимальное смещение составляет
В разд. 21.3.3 (команды перехода) будут рассмотрены другиеспособы задания величины смещения. Они применяются для реализации относительных переходов. При этом величина смещения интерпретируется как 7-разрядное число со знаком.
4) Непосредственная адресация (immediate)
Согласно этому способу, байт данных следует непосредственно за командой:
(см. скан)
Машинный код, соответствующий команде
В данном примере число
загружается в аккумулятор А. В отличие от приведенного примера для непосредственной загрузки индексного регистра и указателя стека необходимо 2 байта данных, так как они являются
-разрядными.
5) Неявная адресация (inherent)
При этом способе адресации операнд подразумевается, но не указывается, так как его определяет команда:
Пример
означает: ОЧИСТКА АККУМУЛЯТОРА А. Очевидно, что эта команда может быть выполнена без дальнейшего уточнения.
21.2.3. ВЫПОЛНЕНИЕ КОМАНДЫ
Выполнение команды производится, как правило, за несколько машинных циклов. В примере
рассмотрим отдельные этапы, которые последовательно выполняет микропроцессор. Когда программный счетчик вызывает адрес
по которому в памяти записана команда, запоминающее устройство передает на шину данных код команды, который в данном случае равен
Микропроцессор дешифрирует команду и определяет, как он должен интерпретировать следующие два байта команды, для того чтобы получить адрес операнда. В случае прямой адресации он передает адрес
на шину адреса и считывает соответствующий байт из ячейки памяти. В следующем цикле он передает адрес
и считывает соответствующий байт из следующей ячейки памяти. В четвертом цикле микропроцессор располагает байты друг за другом (т. е. формирует 16-разрядный адрес операнда) на соответствующих адресных линиях и считывает полученное из памяти слово в аккумулятор А.
Таблица 21.2 (см. скан) Обращение к шине адреса и шине данных при выполнении команды
Таким образом, для выполнения команды требуется четыре машинных цикла. Они перечислены в табл. 21.2. Аналогично можно показать, что для выполнения команды
необходимо три цикла, а для команды
цикла.
Количество циклов однозначно определяет время выполнения команды. Для микропроцессора
время цикла равно периоду тактовых импульсов. Поэтому при тактовой частоте
время цикла составляет
т. е. команда
исполняется за