Разряды D5 и D3 всегда имеют нулевое значение, а разряд D1 – единичное, и не зависят от состояний триггеров условий. Указанные триггеры обеспечивают выполнение в программе условных переходов в зависимости от результата предыдущей операции. Например, если результат выполнения предыдущей операции оказался нулевым, то триггер установится в состояние логической 1, и условие перехода в другую часть программы по нулевому значению результата операции окажется выполненным.
Триггер CY устанавливается в состояние логической 1, если в результате выполнения предыдущей операции возникает переменное из старшего разряда. Аналогично устанавливается триггер С /, если имел место перенос из третьего разряда. Этот триггер используется для коррекции операций над числами, представленными четырехразрядным двоично-десятичными кодами.
Триггер S устанавливается в состояние логической единицы, если знак результата предыдущей операции отрицательный.
Если результат предыдущей операции окажется четным, т.е. его младший разряд равен нулю, то триггер Р устанавливается в состояние логической единицы.
Счетчик команд (программный счетчик). Этот счетчик указывает адрес, где находится в памяти очередной байт команды. Байты команд обычно выбираются из памяти в порядке нарастания их адресов; поэтому после выбора каждого очередного байта схема инкремента – декремента увеличивает содержимое ___________счетчика на 1. Перед началом выбора какой-нибудь команды в счетчике команд находится адрес ее первого байта. В процессе выбора трехбайтной команды содержимое счетчика увеличивается трижды.
Обычный порядок следования адресов может быть изменен. Для этого в счетчик команд записать (необходимо) начальный адрес той части программы, которая должна выполняться. Эта новая часть программы иногда выделяется обособленно, имеет самостоятельное значение и называется подпрограммой.
Указатель стека. После выполнения подпрограммы обычно производится возврат к основной программе, как показано на рис. Таких переходов может оказаться несколько. Очевидно, для возврата к прерванной программе необходимо в какой-либо области памяти запомнить тот последний адрес, с которого должно начаться дальнейшее выполнение прерванной программы.
область памяти.
Адрес ячейки памяти, в которой хранится адрес возврата к последней прерванной программе, записывается в специальный шестнадцатиразрядный регистр, называемый указателем стека. Перед началом выполнения любой программы в оперативной памяти выделяется некоторая область, называемая стековой. Адрес самой старшей ячейки стековой области заносится в указатель стека. Если выполнение очередной программы прерывается, то перед тем, как в счетчик адреса занести начальный адрес прерывающей программы, очередной адрес прерываемой программы заносится в ячейку стековой области по адресу указателя стека. После этого содержимое указателя стека уменьшается на единицу.
Если выполняемая подпрограмма сама окажется прерванной, то ее очередной адрес из счетчика команд вновь запишется по адресу, соответствующему новому содержимому указателя стека. Так, при переходе к каждой новой подпрограмме прерванный адрес предыдущей подпрограммы записывается в стековую область. Заполнение стековой области происходит от старших адресов к младшим. Возврат к прерванным программам осуществляется в обратном порядке. При каждом извлечении адреса из стековой области содержимое указателя стека увеличивается.
По каждому адресу памяти может быть записана информация объемом только в 1 байт. Шестнадцатиразрядные адреса, заносимые в стековую область, требуют для своего размещения 2 байта. Поэтому при записи каждого адреса в стековую область содержимое указателя стека дважды уменьшается на единицу, а при извлечении адреса из стековой области – дважды увеличивается на единицу. Указатель стека всегда определяет адрес тех ячеек памяти в стеке, в которых хранится нужный адрес возврата.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.