Виды машинных циклов. Слово состояния процессора. Слово состояния МП КР580ВМ80А. Ввод-вывод в режиме прерывания. Алгоритм обслуживания прерываний, страница 23

Регистр адреса РА указывает адрес ячейки памяти, к которой в данном машинном цикле (термин будет пояснен позже) будет производиться обращение. Выходом его является шина адреса, поэтому разрядность РА (как и СК) равна разрядности ША МПУС. В фазе выборки содержимого очередной ячейки памяти содержимое регистра памяти и счетчика команд одинаково. После этой фазы, как уже говорилось, содержимое СК увеличивается на единицу, а содержимое РА остается неизменным до конца машинного цикла. Если в процессе выполнения команды снова требуется обращение к памяти (например, это заложено в коде операции), то содержимое РА в течение времени выполнения команды принудительно меняется столько раз, сколько раз требуется обратиться к памяти в соответствии с кодом команды (в этом случае содержимое СК не изменяется – он по прежнему указывает адрес следующей ячейки, откуда должна производится выборка команды после выполнения текущей команды). При этом в РА загружаются адреса тех ячеек памяти, в которых располагаются необходимые для выполнения команды операнды (или в которые необходимо поместить результаты выполнения команды). Это обеспечивается тем, что регистр адреса подключен к внутренней шине данных и может загружаться не только от счетчика команд, но и от рабочих регистров и памяти.

Указатель стека (PS). Стек – специальная область памяти микроЭВМ, предназначенная для временного хранения содержимого регистров. Кроме рассмотренного выше случая сохранения в стеке содержимого счетчика команд, встречаются еще ситуации, когда необходимо сохранить содержимое рабочих регистров. Указатель стека PS указывает адрес той ячейки стековой памяти (говорят – указывает вершину стека), в которую будет загружены данные из того регистра, содержимое которого нужно сохранить. Когда в программе встречается команда пересылки в стек, данные из регистра, указанного в коде команды, помещаются в ту ячейку, адрес которой в указателе стека. Содержимое указателя стека при этом уменьшается на единицу – то есть он теперь указывает ячейку памяти, в которую по следующей команде загрузки в стек будет помещено содержимое другого регистра. После каждого помещения в стек содержимое указателя стека уменьшается на единицу. Когда же в программе встретится команда выталкивания из стека в регистр, первыми будут перемещаться данные из ячейки, адрес которой в указателе стека - то есть из ячейки, которая была загружена последней. После каждой команды выталкивания из стека содержимое указателя стека увеличивается на единицу. В общем случае стек – это память, которая принимает и выдает информацию по принципу "последним вошел – первым вышел" (принцип LIFO – last in – first out). Это означает, что только вершина стека, где находится его последний элемент, непосредственно доступна извне. В связи с тем, что принцип действия стека напоминает принцип действия магазина огнестрельного оружия, его часто называют магазинной памятью.

У некоторых микропроцессоров стек выполняется в виде отдельного запоминающего устройства фиксированной емкости. У других под стек отводится часть оперативной памяти. К последним относится и МП КР580ВМ80А. Так как у данного микропроцессора указатель стека связан с внутренней шиной данных, вершина стека может быть организована в любом месте адресного пространства (т.к. указатель стека может быть принудительно загружен любым числом – адресом вершины стека), а глубина стека практически не ограничена (точнее – ограничена глубиной памяти МП). Поэтому разрядность PS у данного микропроцессора равна разрядности шины адреса. При размещении стека в памяти МПУС с процессорами такого типа программисту необходимо обращать внимание на то, чтобы информация, помещаемая в стек, не стерла данные в ОЗУ, необходимые для выполнения программы.