Министерство образования РФ
Уфимский Государственный Авиационный Технический Университет
Кафедра АСУ
Отчет по лабораторной работе № 3
Подпрограмма и стек
Выполнили: студенты гр. АСОИ-331
Максютова Д.Р. Катьянова Е.В.
Проверил: Дубинин Н.М.
Уфа 2008
Подпрограмма и стек
1. Цель работы
Изучить организацию стековой памяти для процедур вызова подпрограмм, обработки прерываний и выполнения арифметических операций, команды, предназначенные для работы со стеком, и программирование с использованием стековой памяти.
2 Теоретические сведения
Использование стековой памяти оказалось весьма эффективным при построении компилирующих и интерпретирующих программ: программ, использующих многократные вычисления алгебраических функций и нестандартные арифметические операции; программ с обработкой операндов с последовательным размещением.
Принцип работы стековой памяти поясняется рисунком 3.1.
Х1 0 --- ОЗУ
X2 РА DC 1-- :
Х3 ---______
Х4 -- ______ запись
: Xn__
: SP : чтение
: ______
Х1_ CТЕК
---______
Хn R 2R -1--
запись чтение
а б
Рисунок 3.1
Работа стековой памяти осуществляется по правилу: "последним записан - первым считан". Так, вначале записывается в стек (рисунок 3.1 а) число Х1. Затем число Х1 сдвигается вверх при записи числа Х2 в стек. Тем самым любое записываемое число Хi сдвигает массив "вверх" и размещается в нижней ячейке. При чтении считывается содержимое самой "нижней "ячейки, а весь оставшийся массив чисел сдвигается "вниз". Размещая и считывая двоичные коды в указанном порядке, легко организовать поиск последнего записанного кода или организовать последовательную обработку кодов Хn, …, Х1. Однако микрооперация сдвига массива требует значительных аппаратных затрат. С целью упрощения стековой памяти используют специальный реверсивный счетчик-указатель стека SP. При использовании SP не требуется микрооперация сдвига массива, достаточно перемещения возбуждения "вверх" или "вниз" выходных шин с дешифратора адреса. Так, при записи счетчик декрементируется SP-1 и число через шину данных записывается "вверх" (в сторону младших номеров шин DC), при чтении число сначала считывается, затем устанавливается адрес следующего операнда (SP+1) для возможного считывания.
При записи (считывании) двухбайтных операндов в восьмиразрядную память последовательно инкрементируется (декрементируется) дважды SP+2. При этом запись (считывание) осуществляется побайтно в 2 соседние ячейки: в М(SP), М(SP+1) - при считывании, в М(SP-1), М(SP-2) - при записи. Содержимое ячеек М(SP) и М(SP+1) определяет информацию в вершине стека (SÃ), которая загружается в РОН при чтении стековой памяти.