Cтраница 2
В байт с адресом 10 будет занесен код АЗСН буквы А, поскольку операция пересылки выполняется до увеличения адреса. [16]
Однако это повторение будет не буквальным, поскольку с помощью команд 5, 6, 7 и 8, 9, 10 осуществляется увеличение адресов первой и второй команд программы на единицу. [17]
Два типа программных событий - выборка команд и изменения в памяти - предполагают задание области в основной памяти. Область памяти, обращения к которой подлежат контролю, начинается с ячейки, задаваемой адресом в управляющем регистре 10, и распространяется в сторону увеличения адресов до ячейки, задаваемой адресом в управляющем регистре 11 включительно. [18]
![]() |
Подпрограммы PUSH и POP на фортране. [19] |
Стек обычно заполняется в одном направлении, однако можно допустить двунаправленное его заполнение, тогда основная стековая структура может быть преобразована в двойной стек или двустороннюю очередь. На такой ЭВМ, как PDP-11, где для реализации стеков служат регистры, двойной стек содержит два указателя; один изменяется в сторону увеличения адресов, а другой - в сторону уменьшения. [20]
В зависимости от комбинации сигналов, подаваемых на сдвоенные входы АО, А1, происходит попеременное подключение информационных входов DI-3... И поступает две лог. Увеличение адреса на 1 разряд приводит к сдвигу 4 бит входных данных. Комбинационное устройство сдвига имеет выключенное состояние выхода. [21]
При повторном нажатии клавиши EXAM содержимое регистра адреса шины увеличивается на 2, образуя адрес следующего слова, и проверяется новая ячейка. При нажатии переключателя EXAM происходит увеличение адреса, после чего осуществляется проверка ячейки. [22]
Такой порядок называется естественным. Кроме того, в составе команд любой ЭВМ имеются выполняемые устройствами управления операции передачи управления: переходы и циклические операции. Переходы служат для прерывания естественного порядка выполнения программы, когда нужно перейти непосредственно от данной программы к команде, расположенной на несколько ячеек в сторону уменьшения или увеличения адресов. Циклические операции предназначены для организации многократного исполнения одного и того же участка программы, например для вариантных просчетов одной и той же формулы при изменении входящих в нее переменных. [23]
Процесс выполнения программы заключается в последовательном выполнении команд. Поскольку команды записаны в памяти, чтобы начать выполнение программы, надо задать адрес первой команды ( например, с пульта ЭВМ), а в каждой выполненной команде указать адрес следующей команды или определить способ вычисления адреса следующей команды из адреса выполненной. Обычно предполагается естественный порядок выполнения команд. Последовательно выполняемые команды программы должны быть записаны в последовательных ячейках памяти. Тогда адрес следующей команды вычисляется увеличением адреса выполненной команды. Для изменения такого порядка выполнения команд предусматривается специальная команда перехода, в адресной части которой указывается адрес следующей команды. [24]
Входящий в состав PSW трехразрядный указатель стека обеспечивает организацию системного стека из восьми двухбайтовых ячеек. Стек служит для промежуточного хранения старшей тетрады PSW и определяемых текущим состоянием PC адресов возврата при обработке прерываний и вызовах подпрограмм. Набор признаков CY, AC, FO, BS совместно с 12-разрядным PC образуют двухбайтовый объект, автоматически загружаемый в стек или выбираемый обратно при очередной операции над ним. При этом старшее 4-разрядное поле объекта состоит из признаков. В отличие от архитектуры ВМ80 стек ВЕ48 заполняется в сторону увеличения адресов и указывает на его первую свободную ячейку. При ограниченной глубине стека допускается до восьми уровней вложения, в противном случае возникает переполнение стека с переходом через границу на его начало. Переход через границу в обратном направлении возможен при попытке получить данные из уже пустого стека. [25]
![]() |
Микропрограмма преобразования адреса. [26] |
По аналогии с преобразованием адресов, определяющих операнды и результаты, производится преобразование адресов команд. При организации виртуальной памяти программа разбивается на страницы, каждая из которых представляет собой совокупность из 2 команд. Страницы программы могут размещаться как в ОЗУ, так и в ВЗУ. Программа может выполняться, если соответствующая страница хранится в ОЗУ. Команды выполняются в естественном порядке, при котором адрес следующей команды определяется путем увеличения адреса выполняемой команды на единицу. Естественный порядок выполнения команд нарушается командами передачи управления. [27]
Есть другой путь, позволяющий стандартизовать преобразование команд, сделать его независимым от знака команды. В рассматриваемом примере эту операцию можно определить так: при сложении адресов преобразуемой команды и кода, используемого для преобразования, получаем команду, код операции которой всегда совпадает с кодом операции преобразуемой команды, а адрес равен сумме адресов обоих кодов. Но может встретиться случай, когда сумма адресов окажется больше 213 - 1 ( 111 111 111 111 в двоичной системе), т.е. будет записываться больше, чем 12 двоичными цифрами. Естественнее всего - дополнить определение операции сложение адресов команд условием, что в случае, когда сумма адресов оказывается больше или равной 212, от нее в качестве адреса команды - результата операции сохраняются лишь младшие 12 двоичных разрядов, а 13 - й просто отбрасывается. Таким образом, расширенная операция сложение адресов команд оказывается пригодной не только для увеличения адресов команд, но и для их уменьшения. [28]
Есть другой путь, позволяющий стандартизовать преобразование команд, сделать его независимым от знака команды. В рассматриваемом примере эту операцию можно определить так: при сложении адресов преобразуемой команды и кода, используемого для преобразования, получаем команду, код операции которой всегда совпадает с кодом операции преобразуемой команды, а адрес равен сумме адресов обоих кодов. Но может встретиться случай, когда сумма адресов окажется больше 212 - 1 ( 111 111 111 111 в двоичной системе), т.е. будет записываться больше, чем 12 двоичными цифрами. Естественнее всего дополнить определение операции сложение адресов команд условием, что в случае, когда сумма адресов оказывается больше или равной 213-от нее в качестве адреса команды - результата операции сохраняются лишь младшие 12 двоичных разрядов, а 13 - й просто отбрасывается. Таким образом, расширенная операция сложение адресов команд оказывается пригодной не только для увеличения адресов команд, но и для их уменьшения. [29]