Профтемы студенту и преподавателю
Taketop.ru
СТУДЕНТУ И ПРЕПОДАВАТЕЛЮ
лекции по дисциплинам
Информатика и вычислительная техника :: Микропроцессоры и микропроцессорные системы
Стековая адресация
 
Стек — это память с определенной (упрощенной) формой адресации.
Под стеком в микроЭВМ на базе МП КР58ОВМ80 понимается любая область ОЗУ, служащая для хранения содержимого внутренних регистров МП со специальным упрощенным режимом доступа. Основная задача стека — обслуживание прерываний.
В случае, когда нужно прекратить выполняемую последовательность команд, адрес подготовленной, но не выполненной команды, . посылается на хранение в стек. При необходимости возврата к прерванной программе адрес команды, с которой возобновляется прерванная программа, извлекается из стека.
 
 
Рисунок 1.6.2 - Упрощенная мо­дель стека
 
Так можно выполнить последовательный ряд подпрограмм, в которых также предполагаются прерывания (вложенные прерывания). При этом стек запол­няется адресами возврата к прерванным под­программам. Затем по мере извлечения адре­сов возврата к прерванным подпрограммам будет происходить их последовательное выпол­нение.
На рис. 1.6.2 представлена упрощенная мо­дель стека. Ячейки стека имеют последователь­но убывающую адресацию. Для организации обращения в верхнюю свободную ячейку па­мяти (дно свободного пространства стека) используется двухбайтовый указатель стека SP, расположенный в блоке регистров МП.
По мере заполнения стека содержимое SPуменьшается на единицу, когда же данные извлекаются из стека, содержимое SPуве­личивается на единицу, причем SPвсегда указывает на адрес последней заполненной ячейки стека.
Увеличение или умень­шение содержимого стека производится с помощью схемы инк­ремента/декремента (I/D).
Рассмотрим работу стека на примере выполнения команды пе­редачи управления подпрограмме CALL [адр.] и команды переда­чи управления главной программе RET.
При выполнении прерывания необходимо сохранить адрес ко­манды подготовленной к выполнению, но не выполненной прерван­ной программы (по команде CALL), с тем чтобы в дальнейшем иметь возможность возврата к ней (по команде RET). Чтобы разместить в свободной ячейке старший байт адреса команды, надо подготовить адресное обращение к стеку, для чего содержимое указателя стека SPуменьшается на единицу SP(-1). После размещения старшего байта адреса содержимое указателя стека SPеще раз уменьшается на единицу SP(-2). По подготовленному адресу размещается младший байт адреса команды.
Формат команды CALL представлен на рис. 1.6.3, а.
По команде RET происходит извлечение адреса команды, с ко­торой необходимо продолжить выполнение прерванной программы.
Старший байт адреса возврата извлекается по адресу, хранящемуся в SP; затем показание SPувеличивается на единицу SP(+1).
Млад­ший байт адреса возврата извлекается по только что полученному по адресу в SP, после чего показание SPопять увеличивается на еди­ницу SP(+2). Формат команды RET представлен на рис. 1.6.3, 6.
 
 
Рисунок 1.6.3 - Формат команды CALL и RET

Работы, представленные на сайте http://taketop.ru, предназначено исключительно для ознакомления. Все права в отношении работ и/или содержимого работ, представленных на сайте http://taketop.ru, принадлежат их законным правообладателям. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие или полученные в связи с использованием работ и/или содержимого работ, представленных на сайте http://taketop.ru
Рейтинг@Mail.ru
Сайт управляется SiNG cms © 2010-2015