![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Типовой МП содержит указатель стека. Указатель стека – это специализированный 16-тиразрядный регистр – счетчик, содержимым которого всегда является адрес. Этот адрес принадлежит особой группе ячеек памяти данных, который называется стеком. Стек, как правило, размещается в ОЗУ или иногда в физической локализованной на кристалле МП группе ячеек памяти. Стек типового МП будет находиться в ОЗУ и его положение определяется программистом. Указатель стека загружается старшим адресом, представляющим собой вершину стека.
В примере указатель стека содержит адрес 220А, что на единицу старше первой ячейки памяти стека 2209. Данные в стек можно записать, используя команды поместить (PUSH) и вызвать (CALL). Данные могут быть считаны из стека по командам извлечь (POP) и возврат (RETERN). Стек функционирует как память с последовательными доступом по типу: данные, поступившие последними, извлекаются первыми. Например, команда PUSH приводит к тому, что содержимое пары регистров HL помещается в стек.
1. Указатель стека МП декрементируется от 220А до 2209.
2. Указатель стека показывает на ячейку памяти 2209 по адресной шине и старший байт регистра HL помещается в стек.
3. Указатель стека снова декрементируется от 2209 до 2208.
4. Указатель стека указывает на ячейку 2208 по адресной шине и младший байт из регистра HL загружается в стек.
Рассмотрим так же операцию загрузки в стек, содержимого аккумулятора и регистра состояния.
5. До операции указатель стека указывает на ячейку памяти 2208, ее называют вершиной стека, затем указатель стека декрементируется до 2207.
6. Указатель стека указывает на ячейку памяти 2207 и содержимое аккумулятора загружается в стек по этому адресу.
7. Указатель стека декрементируется до 2206.
8. Указатель стека указывает на ячейку памяти 2206 и содержимое регистра состояния (11111111) загружается по этому адресу.
Стек может продолжать расти, пока длится процесс загрузки в него, т.е. длина стека формально не имеет ограничений, единственным ограничением является объем ОЗУ.
Рассмотрим команду POP – аккумулятор и регистр состояния свободны до операции извлечения из стека.
1. Указатель стека указывает на вершину, т.е. на адрес 2206, содержимое регистра состояния (11111111) извлечено из стека и переслано в АЛУ.
2. Указатель стека инкрементируется с 2206 до 2207.
3. Указатель стека указывает на адрес 2207, содержимое вершины стека извлекается и пересылается в аккумулятор.
4. Указатель стека инкрементируется до 2208 и указывает теперь на следующий адрес извлечения из стека.
Содержимое аккумулятора и регистра состояния было восстановлено до тех значений, которые были до операции PUSH.
Команды PUSH и POP используются всегда совместно, однако, между ними располагаются другие команды, которые меняют данные, содержащиеся в регистрах МП.
Дата публикования: 2015-03-26; Прочитано: 753 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!