- •Глава I
- •06Ласти применения эвм
- •1.6,1. СуперЭвм
- •Глава 2
- •8 Разрядов
- •11110001 11111001 11110001 11110111 А число — 6.285 запишется в память в виде слова из 6 байт:
- •Глава 3
- •Глава 4
- •Лечит узап j
- •Сверхоперативная или местная память
- •4.2. Адресная, ассоциативная и стековая организации памяти
- •Буфер входа-выхода
- •Усилители считывания-записи
- •Глава 5
- •Проклей
- •Идентификатор адреса (s байт)
- •Сектор на дискете
- •Глава 6
- •Управляющий блок автомат)
- •Глава 7
- •В цпршВляющай блок у б
- •Сумматор частичных произведений Регистр множимого
- •О vМножимое перед началом Выполнения умножения
- •Слой элементов и
- •Глава 9
- •Двойное слада па адреса о 32 бит
- •Слобо по адресу z в бит
- •Заслать в стек ад РеЗ
- •Загрузить аз стана в Pa V
- •Номер регист
- •Непосредственный операнд 1а
- •15Ю кГго 51
- •Оповещающий сив нал „Состояние
- •Блок ревастрод
- •Ветвление в макропроерамме по уело дую Акк*0
- •Макрокоманды управления последовательностью выборка микрокоманд
- •Окно процедуры
- •Регистры параметров (а) Регистры глобальных переменных |
- •1 Нуль м Знак-
- •Запоминание состояния процессора (программы)
- •Общий сигнал прерывания
- •Код приоритетного запроса
- •Маска ввоОагвывода
- •Прерывающая
- •01 23*56789 Время
- •I участка I
- •Запись льта мп
- •I Прием операндов на регистры 1
- •Умножение чисел с фиксированной точкой
- •Сложонив чисел с плавающей точкой
- •Глава 10
- •Вызов команды и модификация счетчика команд
- •Процедура тандемных пересылок
- •Однобайтная
- •16 Разрядов
- •Передача д стек а восстановление содержимого регистров
- •Команды досстаяовяения из стеки содержимого регистров
- •Блок сегментных регистров
- •Первый байт команды Второй ffaSm команды (постбайт адресации)
- •Сегментные селекторы
- •Регистры задачи и регистры дескрипторнои таблицы
- •Блок управления и контроля оп
- •Справочник страниц
- •Физическая память
- •16 Мбайт
- •Расширенная память
- •1 Мбайт
- •С каналом ес эвм
- •Связь с другой эвм
- •I Манипулятор % I Графа- I I типа „Мышь” I I построитель I
- •Глава 11
- •Интерфейс основной намята
- •Общее оборудование мультиплексного канала
- •Глава 12
- •Определения четности переносод
- •Глава 13
- •Ill:Выполнснис программы а Выполнение про ерам мы в
- •Пакеты заданий и Входные наборы данных
- •Выходные очереди разных классов в зу на дисках
- •I требует ‘'ода
- •Пользователь обдумывает | ответ системе I (новый запрос)
- •Блок управления памятью
- •Схемы совпадения
- •Шифратор номера отделения
- •Входной коммутатор
- •Коммутации
- •Сегментная таблица п-й программы
- •Векторные, средства
- •К периферийным устройством
- •К периферийным устройствам
- •Глава 15
- •Устройства Ввода- вывода
- •Процессор 2
- •Процессор 3
- •8 Векторных регистров (по 6* слова в каждом)
- •Готовности операндов
- •Глава 16
- •Комплекс абонентского пункта
- •16.2.. Классификация вычислительных сетей
- •1 Элемент
- •Время распрост- ранена*
- •Задержка сета лри коммутации пакетов[
- •Абонентская система
- •Данные пользователя
- •Сеансовый
- •Транспортный
- •Сетевой
- •Интерфейс высоког о уровня
- •Аппаратура передачи данных
- •Установление связи
- •Данные пользователя 00Длина поля и слови я обслуживания
- •Идентификатор протокола
- •7» Бшдта) Данные пользователя б вызове
- •Поток бит
- •Новый пакет (кадр)
- •Станция 1 ведет передачу
- •Передатчик Коаксиальный кйбель
- •Глава 15. Принципы организации многопроцессорных и многомашинных вычислительных систем (комплексов) и суперЭвм 489
- •1S в 7 о Слада па адресу ь
Двойное слада па адреса о 32 бит
\B3\BZ
I
В1
\В0
|
31 о
Учетверенное
слово по адресу 8 6^ бит 9
ШИ
I
В9
I ВО
взб)Нумерация
бит и байт спраба наледо
Ячейки ОП 8 бит | |
0 |
Байт |
1 |
Байт |
2 |
Байт |
3 |
Байт |
* |
Байт |
QBBQEJBDQ
Нумерация
бит б байтеСлобо по адресу z в бит
ШШиыииыО)
Рис. 9.2. Адресные структуры основных (оперативных) памятей в ЕС ЭВМ (а), в малых ЭВМ (СМ-1420 и др.) (б)и в микропроцессорах (К580) (в)
в неявной форме кодом операции команды, или непосредственно указывается в коде команды.
Адрес в ЕС ЭВМ представляет собой целое 24-разрядное двоичное число, позволяющее адресовать до 16 777 216 байт (16 Мбайт). В ЕС ЭВМ используются следующие форматы информации фиксированной длины: 1) байт;2) полуслово (два последовательно расположенных в памяти байта); 3) слово (4 байта); 4) двойное слово(8байт); 5) учетверенное слово (16 байт). Кроме того, используются слова (или поля) переменной длины для представления десятичных чисел (в формате от1до 16 байт), логических кодов и алфавитно-цифровых данных (в формате от 1 до 256 байт).
Адрес слова переменной длины (адрес его левого байта) может быть любым в пределах адресной сетки машины, что обеспечивает размещение в памяти полей переменной длины без просветов.
Для упрощения и убыстрения процедур выполнения команд в ряде ЭВМ на адресацию единиц информации фиксированной длины накладываются определенные ограничения (так называемые целочисленные границы). Например, в ЕС ЭВМ 11 очереди адреса полуслов, слов, двойных и учетверенных слов рекомендуется назначать кратными соответственно 2, 4, 8и 16, при этом двоичные адреса указанных единиц информации содержит0соответственно в одном, двух, трех и четырех младших разрядах. Адрес команды может быть только четным.
Проблема выбора структуры и формата команд. Кодирование команд
Все возможные преобразования дискретной информации могут быть сведены к четырем основным видам: 1) передача информации в пространстве (например, из одного блока ЭВМ в другой);2) передача информации во времени (хранение);
логические (поразрядные) операции;. 4) арифметические операции. ЭВМ, являющаяся универсальным преобразователем дискретной информации, выполняет все указанные виды преобразований.
Обработка информации (решение задач) в ЭВМ осуществляется автоматически путем программного управления. Программа представляет собой алгоритм обработки информации (например, решения математической задачи), записанный в виде последовательности команд, которые должны быть выполнены машиной для получения решения задачи.
Командапредставляет собой код, определяющий операцию вычислительной машины и данные, участвующие в операции.
Команда содержит также в явной или неявной форме информацию об адресе, по которому помещается результат операции, и об адресе следующей команды.
По характеру выполняемых операций различают следующие основные группы команд: а) команды арифметических операций для чисел с фиксированной и плавающей точками; б) команды десятичной арифметики; в) команды логических (поразрядных) операций (И, ИЛИ и др.); г) команды передачи кодов; д) команды операций ввода-вывода; е) команды управления порядком исполнения команд (команды передачи управления); ж) команды задания режима работы машины и др.
В команде, как правило, содержатся не сами операнды, а информация об адресах ячеек памяти или регистрах, в которых они находятся.
Код команды можно представить состоящим из нескольких частей или полей, имеющих определенное функциональное назначение при кодировании командной информации. Команда в общем случае состоит из операционной и адресной частей (рис. 9.3). В свою очередь, эти части, что особенно характерно для адресной части, могут состоять нескольких полей.
Операционная частьсодержиткод операции(КОп), который задает вид операции (сложение, умножение, передача и т. д.).Адресная часть командысодержит информацию об адресах операндов и результата операции, а в некоторых случаях информацию об адресе следующей команды.
Структура командыопределяется составом, назначением и расположением полей в команде.Форматом командыназывают ее структуру с разметкой номеров разрядов (бит), определяющих границы отдельных полей команды, или с указанием числа бит в определенных полях.
Код
операции
Операционная
Адресная часть часть
Рис.
9.3. Общая структура команд
v
■■
■ ./N.
■
■■ V
до 16 Мбайт), это приводит к недопустимо большой длине формата команды.
Действительно, число двоичнкх разрядов, отводимых под код операции, должно быть таким, чтобы можно было представить все выполняемые машинные операции. Если ЭВМ выполняет Мразличных операций, то число разрядов в коде операции
nKO>\og2M. (9.1)
Например, при М = 200 лко==8.
Если основная память содержит S адресуемых ячеек (байт), то для представления только одного адреса (например, адреса первого операнда) необходимо в команде иметь адресное поле для одного операнда с числом разрядов
nA>log2S. (9.2)
Например, при S=16 МбайтПа=24.
Вместе с тем для упрощения аппаратуры и повышения быстродействия ЭВМ длина формата команды должна быть согласована с выбираемой ^сходя из требований к точности вычислений длиной обрабатываемых машиной слов (операндов), составляющей для большинства применений 16—32 бит, с тем чтобы для операндов и команд можно было эффективно использовать одни и те же память и аппаратурные средства обработки информации. Формат команды должен быть по возможности
короче, укладываться в машинное слово или полуслово, а для
ЭВМ с коротким словом (8—16 бит) должен быть малократным машинному слову. Решение проблемы выбора формата команды значительно усложняется в малых и микроЭВМ и микропроцессорах, работающих с коротким словом.
Отмечавшиеся ранее характерные для процесса развития ЭВМ расширение системы (набора) команд и увеличение емкости осйовной памяти, а особенно создание малых и микроЭВМ с коротким словом, потребовали разработки методов укорочения формата команды. При решении этой проблемы существенно видоизменилась структура команды, получили развитие различные способы адресации информации.
Проследим изменения классических структур команд.
Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 9.4, а, содержать поле кода операции и четыре адреса для указания ячеек памяти, содержащих два операнда, участвующих в операции, ячейки, в которую помещается результат операции, и ячейки, содержащей следующую команду. Такой порядок выборки команд называется принудительным.Он ис-
Код операции |
Первый адрес Л1 |
Второй адрес 4г. |
Третий адрес Аз |
Четвертый адрес |
«>
Код операции
Первый адрес
Второй
адрес Az
Третий
адрес Аз
Код операции.
ю
д)
Код операции
Первый
адрес А1
Второй
адрес Аг
Код операции Адрес
А
Рис.
9.4. Структуры команд:
а— четырехадресная; 6 — трехадресная;в— двухадресная;г
—одноадрес ная;д
—
безадресная
пользовался в некоторых первых моделях ЭВМ. Для рассмотренного выше примера с М= 200 иS = 16 Мбайт длина четырехадресной команды составила бы 104 бит. Такой формат команды окажется трудно реализуемым и неэффективным. Четырехадресные команды в настоящее время не применяются.
Можно установить, как это принято для большинства машин, что после выполнения данной команды, расположенной по адресу К(и занимающейL ячеек), выполняется команда из(K+L)-Pi ячейки. Такой порядок выборки команд называетсяестественным.Он нарушается только специальными командами. В таком случае отпадает необходимость указывать в команде в явной форме адрес следующей команды. В трехадресной команде (рис.9.4,б)первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячейку, в которую помещается результат операции. Операция, описываемая трехадресной командой, может быть символически представлена в виде
ОПИз]: =ОП[Л,]*ОП [А21
где знак заменяет символ операции ( + , — и т. п.).
Можно условиться, что результат операции всегда помещается на месте одного из операндов, например первого. Получим двухадресную команду (рис. 9.3, в)
ОП [Ах]:=ОП [Л,]* ОП [А2], т. е. для результата используется подразумеваемый адрес.
В одноадресной команде (рис. 9.4, г)подразумеваемые адреса имеют уже и результат операций, и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумулятором (Акк). Результат операции записывается в тот же регистр:
Акк: =Акк$:ОП [А].
Наконец, в некоторых случаях возможно использование безадресных команд (рис. 9.4, д), когда подразумеваются адреса обоих операндов и результата операции, например при работе со стековой памятью.
С точки зрения программиста наиболее естественны и удобны трехадресные команды. Однако из-за необходимости иметь большее число разрядов для представления адресов и кода операции длина трехадресной команды становится недопустимо большой, и ее не удается разместить в машинном слове. Следует отметить, что очень часто в качестве операндов используются результаты предыдущих операций, хранимые в регистрах машины. В этом случае выполняемая операция приобретает характер одно- или двухадресный, при этом трехадресный формат используется неэффективно. По указанным причинам в современных ЭВМ применяют, как правило, двух- и одноадресные команды и их модификации.
Способ расширения кодов операций.В машинах с коротким словом практически невозможно в одном формате команды, т. е. при фиксированном назначении ее полей, кодировать большое число различных операций и одновременно иметь гибкую форму адресации операндов. Это противоречие в машинах с коротким словом преодолевается расширением кодов операций в команде. Для задания небольшой группы основных операций (арифметических и др.) используется короткий код операции, а получаемая при этом сравнительно большая адресная часть команды позволяет реализовать гибкую, например двухадресную с многими модификациями, адресацию. Для задания других операций используются более длинные (расширяемые) коды операций, при этом сокращаемая адресная часть оставляет возможность лишь для более простой, например одноадресной, адресации операндов. В пределе расширяемый код операций занимает весь формат команды (безадресная команда).
Обычно в ЭВМ используется несколько форматов команд разной длины.
Приведенные на рис. 9.4 форматы команд достаточно схематичны. В действительности адресные поля команд большей частью содержат не сами адреса, а только информацию, позволяющую определить действительные (исполнительные) адреса операндов в соответствии с используемыми в командах способами адресации.
Способы адресации
Следует различать понятия адресный кодв командеАк иисполнительный адрес АИ.Адресный код — это информация об адресе операнда, содержащаяся в команде. Исполнительный адрес — это номер ячейки памяти, к которой производится фактическое обращение. В современных ЭВМ, адресный код, как правило, не совпадает с исполнительным адресом.
Выбор способов адресации, формирования исполнительного адреса и преобразования адресов является одним из важнейших вопросов разработки ЭВМ. Рассмотрим способы адресации, используемые в современных ЭВМ.
Подразумеваемый операнд.В команде не содержится явных указаний об адресе операнда; операнд подразумевается и фактически задается кодом операции команды. Данный способ используетсяhe часто, однако имеется несколько важных случаев его применения. В качестве примера можно привести команды подсчета, в которых к некоторому числу (содержимому счетчика) прибавляется фиксированное приращение, чаще единица младшего разряда. Один из операндов — число в счетчике — обычно адресуется явным методом, второй операнд — приращение — не адресуется, в памяти машины не содержится и является подразумеваемым.
Подразумеваемый адрес. В команде не содержится явных указаний об адресе участвующего в операции операнда или адреса, по которому помещается результат операции, но этот адрес подразумевается. Например, команда может содержать адреса обоих операндов, участвующих в операции, при этом подразумевается, что результат операции помещается по адресу одного из операндов, или команда указывает только адрес одного операнда, а адрес второго, которым является содержимое специального регистра (называемого регистром результата или аккумулятором), подразумевается.
Непосредственная адресация.В команде содержится не адрес операнда, а непосредственно сам операнд. При непосредственной адресации не требуется обращения к памяти для выборки операнда и ячейки для его хранения. Это способствует уменьшению времени выполнения программы и занимаемого ею объема памяти. Непосредственная адресация удобна для хранения различного рода констант; однако следует иметь в виду, что при этом способе адресации длина операнда короче кода команды, поскольку часть разрядов команды занята под код операции.
Прямая адресация.Исполнительный адрес совпадает с адресной частью команды. Этот способ адресации был общепринятым в первых вычислительных машинах и продолжает применяться в настоящее время в комбинации с другими способами.
В указанной форме непосредственная адресация реализуется в ЭВМ со сравнительно длинным машинным словом (32 разряда и более), например в ЕС ЭВМ. Особенности непосредственной адресации в малых ЭВМ и микропроцессорах изложены в § 9.1 и 10.2.
Относительная адресация или базирование.Исполнительный адрес определяется суммой адресного кода командыАки ^некоторого числа называемогобазовым адресом:
Для хранения базовых адресовв машине могут быть предусмотрены регистры или специально выделенные для этой цели ячейки памяти(базовые регистры).В команде выделяется полеВдля указания номера базового регистра.
Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти. Для этого число разрядов в базовом адресе выбирают таким, чтобы можно было адресовать любую ячейку ОП, а адресный код Аксамой команды используют для представления лишь сравнительно короткого«смещения»(обозначают буквойD). СмещениеD определяет положение операнда относительно начала массива, задаваемого базовым адресомА6.Рисунок 9.5 поясняет процесс формирования исполнительного адреса.
а
— образование адреса элемента одномерного
массива; б
— формирование исполнительного адреса
суммированием; в
— формирование исполнительного адреса
совмещением
где ВиD — коды (числа), стоящие в соответствующих полях команды;(В)— содержимое регистра с номеромВ.При В = =0относительная адресация блокируется.
Большей
частью исполнительный адрес при
базировании образуется с помощью
сумматора согласно выражению (рис. 9.5)
(B)
+ D,
если Вф0\
£>,
если В
=
0,
Счит: РгИОП: = ОП [РгАОП];
Суммирование при образовании Аисвязано с потерей времени. Поэтому применяют также формирование исполнительного адреса методом совмещения (рис. 9.5, в). В этом случае базовый адрес содержит старшие, а смещение — младшие разряды исполнительного адреса, которые объединяются вРгАОПсогласно операций конкатенации слова:
РгАОП: = РгВ\ РгЦй];
Однако при совмещении базовый адрес может задавать не ;любую ячейку, а только те ячейки, адреса которых содержат0в младших разрядах, соответствующих смещению.
Относительная адресация обеспечивает так называемую пе- ремещаемоАь программ, т. е. возможность передвижения программ в памяти без изменений внутри самой программы.
Укороченная адресация.Для уменьшения длины кода команды часто применяется так называемая укороченная адресация. Суть ее сводится к тому, что в команде задаются только младшие разряды адресов, старшие разряды при этом подразумеваются нулевыми. Такая адресация позволяет использовать только небольшую группу фиксированных ячеек с начальными (короткими) адресами и поэтому может применяться лишь совместно с другими способами адресации.
Регистровая адресацияесть частный случай укороченной, когда в качестве фиксированных ячеек с короткими адресами используются регистры (ячейки сверхоперативной или местной памяти) процессора. Например, если таких регистров 16, то для адреса достаточно четырех двоичных разрядов. Регистровая адресация наряду с сокращением длины адресов операндов позволяет увеличить скорость выполнения операций, так как уменьшается число обращений к ОП.
Косвенная адресация.Адресный код команды указывает" адрес ячейки памяти, в которой находится адрес операнда или команды. Таким образом, косвенная адресация может быть иначе определена как «адресация адреса».
На косвенную адресацию указывает код операции команды, а в некоторых ЭВМ в команде отводится специальный разряд (указатель адресации — УА), и цифра 0или1в нем указывает, является адресная часть команды прямым адресом или косвенным. Обращение к ОП за операндом при косвенной адресации представляет собой следующую процедуру:
РгАОП —РгК [А]\
Счит:РгИОП = ОП [РгА ОП];
если УА = 0 то идти к М иначе РгАОП =РгИОП; Счит.РгИОП = ОП [РгАОП];
М.РгАЛУ = РгИ ОП;
В некоторых ЭВМ используется многоступенчатая косвенная адресация. В этом случае ячейки памяти содержат также разряд—указатель косвенной адресации (УА). Если этот разряд указывает на продолжение косвенной адресации, то машина последовательно выбирает из памяти адреса до тех пор, пока не будет найдена ячейка, в которой разряд-указатель определит прямую адресацию. Адрес из этой последней ячейки и является искомым исполнительным адресом.
Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды.
Рассмотрим широко применяемое в микропроцессорах, малых и микроЭВМ совместное использование укороченной (регистровой) и косвенной адресаций(рис. 9.6). Пусть необходимо передать число 4527 изРг5в ячейку ОП1765.Длина адресных
Номер
регистра КОп НА \ НА \
Передать
0
6
1
J
РгК*-j—• •—г
!ч
I
ч
.
Число
Адрес
1765
Ре
J
Ре
МОП
и-
1765
"П
РгАОП
ОП
Рис.
9.6. Совместное использование
регистровой прямой и регистровой
косвенной адресаций для преодоления
ограничений короткого слова командыPZ5
*527 |*527
полей команды достаточна лишь для указания коротких номеров регистров, она не позволяет задать в команде полный адрес ячейки памяти. Поэтому операнд 4527указывается регистровой прямой адресацией (УА = 0), а для задания адреса1765приходится воспользоваться регистровой косвенной адресацией (УА=1), при которой в команде указывается номер регистра (в рассматриваемом примереРгЗ), предварительно загруженного полным адресом ячейки, в которую производится передача.
Автоинкрементная и автодекрементная адресации.Поскольку регистровая косвенная адресация требует предварительной загрузки регистра из ОП косвенным адресом, что связано с потерей времени, такой тип адресации особенно эффективен при обработке массива данных, если имеется механизм автоматического приращения или уменьшения содержимого регистра при каждом обращении к нему, называемый соответственно автоинкрементной и автодекрементной адресацией. В этом случае достаточно1раз загрузить в регистр адрес первого обрабатываемого элемента массива, а затем при каждом обращении к регистру в нем в результате инкрементной (декрементной) процедуры формируется адрес следующего элемента массива.
При автоинкрементной адресациипо содержимому регистра сначала содержимое регистра используется как адрес операнда, а затем получает приращение, равное числу байт в элементе массива. Приавтодекрементной адресациисначала содержимое указанного в команде регистра уменьшается на число, равное числу байт в элементе массива, а затем используется как адрес операнда.
Автоинкрементная и автодекрементная адресации могут рассматриваться как упрощенный вариант индексации — весьма важного механизма преобразования адресных частей команд (см. § 9.9) и организации вычислительных циклов, поэтому их часто называют автоиндексацией.
Адресация слов переменной длины.Эффективность вычислительных систем, предназначенных для обработки данных (экономических, плановых и др.), повышается, если имеется возможность выполнять операции со словами переменной длины. В этом случае в машине должна быть предусмотрена адресация слов переменной длины, которая обычно реализуется путем указания в команде местоположения в памяти начала слова и его длины.
Обычно в ЭВМ одновременно используется несколько типов адресации. Тип адресации указывается либо неявно кодом операции, либо в явной форме в специальном поле адресной части команды.
Стековая память(см. гл. 4), реализующая безадресное задание операндов, является эффективным элементом современной архитектуры ЭВМ, особенно широко используемым в микропроцессорах, малых и микроЭВМ, а также в некоторых суперЭВМ. Учитывая своеобразие стековой адресации, ее рассмотрение выделено в отдельный параграф.
Стек представляет собой группу последовательно пронумерованных регистров (аппаратурный стек)или ячеек памяти, снабженных указателем стека (обычно регистром) (УС), в котором автоматически при записи и считывании устанавливается номер (адрес) последней занятой ячейки стека(вершины стека).При операции записи заносимое в стек слово помещается в следующую по порядку свободную ячейку стека, а при считывании из стека извлекается последнее поступившее в него слово. Таким образом, в стеке реализуется правило «гпоследний пришел—первый ушел».
Указанное правило при обращении к стеку реализуется автоматически, и поэтому при операциях со стеком возможно безадресное задание операнда,— команда не содержит адреса ячейки стека, но содержит адрес (или он подразумевается) ячейки памяти или регистра, откуда слово передается в стек или куда помещается из стека.
Механизм стековой адресации поясняется на рис. 9.7. При выполнении команды передачи в стек слова из регистра или ячейки ОП сначала указатель стека увеличивается на 1 (в перевернутом стекеуменьшается на1), а затем слово помещается в ячейку стека, указываемую УС. При команде загрузки из стека регистра или ячейки памяти сначала слово извлекается из вершины стека, а затем указатель стека уменьшается на1(вперевернутом стекеувеличивается на 1) *. Как это ни кажется на первый взгляд удивительным, но при соответствующем расположении операндов в стеке можно вычислять выражения полностью безадресными командами, указывающими только вид операции. Такая команда извлекает из стека в соответствии с кодом операции один или два операнда, выполняет над ними предписанную операцию и заносит результат в стек.
Вычисления с использованием стековой памяти удобно описывать и программировать с помощью польской инверсной (бесскобочной) записи арифметических выражений ПОЛИЗ. Эта запись производится по следующему правилу: читаем арифмети-
1
В случае использования памяти с побайтной
адресацией при занесении слова в стек
и извлечении слова из стека содержимое
УС изменяется на величину L,
где
L
—
количество
байт в слове.
I
97
H|
00-1
|
|
I |
|
1 Вершина стена |
|
I | |||
95 |
|
1 |
|
|
1 | ||||
96 |
|
I |
г* |
27* |
* \ |
|
|
| |
97 |
327 |
J |
|
327 |
535 |
♦ |
| ||
99 |
775 |
|
|
775 |
|
775 |
|
| |
99 |
253 |
|
|
253 |
_ Дно *■—стена— |
253 |
|
| |
700 |
. 707 |
|
|
707 |
707 |
|
| ||
|
*) |
|
б) |
*) |
|