Первая команда - подпрограмма - Большая Энциклопедия Нефти и Газа, статья, страница 2
Единственный способ удержать бегущую лошадь - сделать на нее ставку. Законы Мерфи (еще...)

Первая команда - подпрограмма

Cтраница 2


Она состоит из 3 байт: 1 байт - для кода операции ( CALL) и 2 байта для указания адреса первой команды подпрограммы.  [16]

Затем МП сбрасывает флажки IF и TF, выполняет загрузку в стек старого содержимого регистров F и CS, выбирает код операции первой команды подпрограммы обслуживания и вталкивает в стек прежнее значение IP. Эти действия он выполняет в указанной последовательности. После записи в стек старого содержимого IP МП возобновляет свою обычную работу.  [17]

Здесь для перехода к подпрограмме использована команда BR, передающая адрес, помещенный в регистре 15, в счетчик адреса команд, передающая тем самым управление первой команде подпрограммы.  [18]

19 Временная диаграмма прерывания программы ( Т - время ожидания прерывания, - уровень сигнала не имеет значения. Линиями со стрелками отмечена связь между последовательными сигналами активного устройства ( штрих-пунктирные линии, а также связь между сигналами квитирования активного-пассивного ( штриховые линии и пассивного-активного ( сплошные линии устройств. [19]

Для ЭВМ Электроника 60, у которой цикл процессора равет 400 не, ожидание прерывания не превосходит 22 мкс, а время между предоставлением прерывания и выборкой первой команды подпрограммы обслуживания прерываний не превосходит 19 мкс.  [20]

Это означает, что должен быть выполнен переход к подпрограмме D. Первый байт адреса первой команды подпрограммы D хранится в ячейке памяти с этим адресом. Увеличение кода 02061в на 1 дает адрес ячейки памяти, в которой хранится второй байт адреса.  [21]

Другой способ обеспечения возврата в основную программу состоит в выполнении специальной команды, предназначенной для этих целей ( гл. В этом случае при переходе к первой команде подпрограммы автоматически запоминается адрес команды перехода в некотором счетчике или индекс-регистре. Тогда в ячейке 677 помещается специальная команда перехода, которая использует содержимое этого счетчика или индекс-регистра и осуществляет возврат в основную программу. Для этих целей принимается некоторое общее соглашение между лицами, составляющими подпрограммы, и лицами, использующими эти подпрограммы, относительно ячеек, отводимых специально для этих целей. Аналогичным образом можно условиться 0 том, что вычисленное значение cosx должно быть помещено в ячейку 675, и, когда управление из подпрограммы будет возвращено в основную программу, последняя должна переслать содержимое ячейки 675 в некоторую рабочую ячейку для его дальнейшего использования. Конечно, имеются и другие способы решения этих двух задач. В основной программе могла бы просто быть команда с указанием, где находится значение аргумента х, которое необходимо в подпрограмме, и адрес, куда должно быть помещено вычисленное значение cos х, а нужные команды пересылок включались бы в саму подпрограмму. В этих случаях команды основной программы, содержащие задаваемую информацию, должны использоваться в подпрограмме для модификации некоторых ее команд.  [22]

Эти команды передают числа е и А. Команда ( 34) передает управление первой команде подпрограммы и команду безусловного возврата в конец этой подпрограммы.  [23]

Кроме того, содержимое ячейки, номер которой указан в 1А, за - - сылается в стандартную ячейку, предназначаемую для хранения аргументов стандартной программы. При этом ячейка е номером k содержит первую команду подпрограммы и ячейка с номером k2 содержит код команды безусловного перехода и является последней командой подпрограммы.  [24]

При выполнении прерывания в верхний уровень стека записывается увеличенное на единицу значение счетчика команд ( ранее записанные адреса возвратов опускаются на более нижние уровни), а первый разряд регистра EN устанавливается в О, блокируя последующие прерывания. При этом в счетчик команд автоматически заносится адрес первой команды подпрограммы обработки прерываний. Для разрешения последующих прерываний необходимо непосредственно перед командой возврата из подпрограммы обработки прерывания выполнить команду загрузки регистра режима.  [25]

26 Порядок обращения к подпрограмме. [26]

Правило вычислений, определяемое процедурой, представляется в машине в виде совокупности команд, образующих подпрограмму. Яр, где БП-обозначение операции безусловного перехода и ( 3 - адрес первой команды подпрограммы. После выполнения подпрограммы производится возврат на продолжение программы. Возврат из подпрограммы программируется с использованиемкоманды возврата, хранимой в ячейке у - Команда возврата является последней командой, выполняемой в программе.  [27]

Необходимо отметить, что при обращении к таблице указателей сегментные регистры не используются. После установления нового содержимого регистров IP и CS микропроцессор выбирает код операции первой команды подпрограммы и затем выполняет обычные действия по заполнению очереди команд, выполнению команд и обмену данными.  [28]

Соответствующие импульсы ЦУ через блок ЦУОп переключают управление командами с блока ЦУК на блок МУК, гасят код, имевшийся на блоке МУК, и передают на него по КША код с АЗБЗК. Затем код, полученный на блоке МУК, соответствующим импульсом ЦУ передается с МУК по КША и происходит выборка кода первой команды подпрограммы из ячейки ОЗУ, соответствующей переданному коду номера команды. Выбранный код команды по КШ передается в БЗК, и машина приступает к выполнению заданной подпрограммы.  [29]

Для обращения к закрытой подпрограмме применяется специальный оператор. С его помощью при написании рабочей программы осуществляется связь основной программы с подпрограммой. При трансляции ассемблер определяет адрес, по которому при выполнении этой специальной команды основная программа обращается за первой командой подпрограммы. При записи тело подпрограммы выделяется двумя операторами, обозначающими ее начало и конец. Эти операторы эквивалентны псевдокомандам макрокоманды, но, в отличие от открытой подпрограммы они не включаются в основную программу.  [30]



Страницы:      1    2    3