Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 16

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 10 11 12 13 14 15 < 16 > 17 18 19 20 21 22 .. 528 >> Следующая

по этой шине.
Текущее состояние процессора при выполнении программы определяется
содержимым регистра состояния SR (State Register, в микропроцессорах
Pentium данный регистр называется EFLAGS). Этот регистр содержит биты
управления, задающие режим работы процессора, и биты признаков (флаги),
указывающие характеристики результата выполненной операции:
N - признак знак (старший бит результата), N = 0 - при положительном
результате, N = 1 -при отрицательном результате;
С - признак перенос, С = 1, если при выполнении операции образовался
перенос из старшего разряда результата;
V - признак переполнения, V = 1, если при выполнении операций над числами
со знаком произошло переполнение разрядной сетки процессора;
Z - признак нуля, Z = 1, если результат операции равен нулю.
Некоторые микропроцессоры фиксируют также другие виды признаков: признак
четности результата, признак переноса между тетрадами младшего байта.
Специальные виды признаков устанавливаются по результатам операций над
числами, представленными в формате с "плавающей точкой".
Вызов подпрограммы. Обращение к подпрограмме реализуется при поступлении
в микропроцессор специальной команды CALL (в некоторых процессорах эта
команда имеет мнемоническое обозначение JSR - Jump-to-SubRoutine),
которая указывает адрес первой команды вызываемой подпрограммы. Этот
адрес загружается в PC, обеспечивая в следующем командном цикле выборку
первой команды подпрограммы. Предварительно выполняется процедура
сохранения в специальном регистре или ячейке памяти текущего содержимого
PC, где хранится адрес следующей команды основной программы, чтобы
обеспечить возвращение к ней после выполнения подпрограммы. Возврат к
основной программе реализуется при поступлении команды RETURN
(мнемоническое обозначение RET), завершающей подпрограмму. По этой
команде сохранявшееся содержимое PC снова загружается в программный
счетчик, обеспечивая выполнение команды, которая в исходной программе
следовала за командой CALL.
Особенность этой процедуры состоит в том, что большинство
микропроцессоров обеспечивают возможности вложения подпрограмм, т. е.
реализуют при выполнении подпрограммы вызов новой подпрограммы с
последующим возвращением к предыдущей подпрограмме (рис. 1.6). При
вложении нескольких подпрограмм требуется сохранение нескольких
промежуточных значений содержимого PC и последовательная загрузка этих
значений в PC при возврате к предыдущим подпрограммам и к основной
программе.
Для реализации этой процедуры используется стек-специальная память
магазинного типа, работающая по принципу "последний пришел - первый ушел"
(стек типа LIFO-"Last In-First Out"). Существуют различные варианты
реализации стека.
04
ОСНОВЫ МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ
Рис. 1,6. Последовательный вызов (вложение) подпрограмм
Регистровый стек (рис. 1.7, а) реализуется с помощью реверсивных
сдвиговых регистров. Каждая команда CALL вызывает ввод в стек очередного
содержимого PC. По команде RETURN направление сдвига изменяется и
производится извлечение из стека последнего поступившего содержимого PC.
Таким образом обеспечивается выполнение вложенных подпрограмм. Возможное
число вложенных подпрограмм определяется глубиной стека, т. е.
разрядностью используемых регистров сдвига. Если число вложений превышает
глубину стека, первые из введенных в стекзначений PC теряются, т. е.
возврат к основной программе не будет обеспечен. Поэтому при
использовании регистрового стека необходим строгий контроль за числом
вложений. Такая реализация стека применяется в системах, решающих задачи
с ограниченным числом вложенных подпрограмм (обычно не более 10-20).
Значительно более широкие возможности вложения подпрограмм обеспечивает
реализация стека в ОЗУ (рис.1.7, б). В этом случае часть ОЗУ выделяется
для работы в качестве стека. Адресация к ячейкам стека производится с
помощью специального регистра - указателя стека SP (Stack Pointer),
который вводится в состав УУ процессора. Регистр SP содержит адрес
верхней заполненной ячейки стека, в которой хранится значение PC,
записанное при выполнении команды CALL. При поступлении новой команды
CALL содержимое SP автоматически уменьшается на 1, адресуя следующую, еще
незаполненную ячейку стека. Полученный адрес SP-1 выдается на шину А, а
на шину D поступает содержимое PC, которое должно сохраняться в стеке.
Таким образом, производится последовательное заполнение ячеек стека
"снизу-вверх", при этом SP всегда адресует вершину стека. По команде
RETURN текущее содержимое SP выдается на шину А, и по шине D производится
считывание с вершины стека последнего записанного значения PC. После
этого содержимое SP увеличивается на 1, адресуя предыдущее значение PC,
хранящееся в стеке. Так как ОЗУ обычно имеет значительный объем, то для
размещения стека можно выделить достаточно большое количество ячеек
памяти, обеспечивая необходимый уровень вложения подпрограмм.
Обслуживание прерываний и исключений. При работе микропроцессорной
Предыдущая << 1 .. 10 11 12 13 14 15 < 16 > 17 18 19 20 21 22 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed