![]() |
Команды управления программойКоманды безусловного перехода (JUMP или BRANCH) изменяют обычную последовательность выполнения команд. Команда JUMP 15Э засылает число 150 в счетчик команд; следующую команду процессор будет выбирать из этой ячейки. Эти команды воздействуют тольк о на счетчик команд. Команда SKIP позволяет пропустить очередную команду в последовательности команд.
Таблица 3.5. Команды условных переходов
Иногда команды условного перехода действуют так, как будто они Есегда следуют за командой СРАВНИТЬ. Так, команда ПЕРЕХОД ПО РАВЕНСТВУ (JUMP ON EQUAL) вызывает по программе переход, если две сравнимые величины оказались равными. Такие команды условного перехода, как ПЕРЕЙТИ ПРИ ОТСУТСТВИИ РАВЕНСТВА (JUMP ON NOT EQUAL), ПЕРЕЙТИ, ЕСЛИ ВЕЛИЧИНА БОЛЬШЕ (JUMP ON GREATER THAN), ПЕРЕЙТИ, ЕСЛИ ВЕЛИЧИНА МЕНЬШЕ (JUMP ON LESS THAN), и т. д., осуществляют переход, если число, записанное в аккумуляторе, находится в определенном отношении с числом, с которым оно должно сравниваться. В некоторых ЭВМ используются только команды условного перехода типа ПРОПУСТИТЬ (SKIP). В таких ЭВМ процессор не может осуществить условный переход по программе, но может по условию пропустить очередную команду в последовательности. В таких ЭВМ операция условного перехода выполняется по двугл командам. Последовательность команд SKIP ON NOT CONDITION JUMP LOCATE производит то же действие, что и одиночная команда JUMP ON CONDITION LOCATE Команда условного пропуска SKIP заставляет ЭВМ]пропустить команду безусловного перехода, если условие не выполняется. Эта техника неудобна, но имеет то преимущество, что только команда безусловного перехода требует адресации памяти. Недостающие для данной ЭВМ команды условного перехода можно получить простым способом. Например, если ЭВМ имеет команду ПЕРЕХОД ПО НУЛЕВОМУ РЕЗУЛЬТАТУ (JUMP ON ZERO), но не имеет команды ПЕРЕХОД ПО НЕНУЛЕВОМУ РЕЗУЛЬТАТУ (JUMP ON NOT ZERO), то последовательность команд JUMP ON ZERO *+2 JUMP ADD R эквивалентна одиночной команде JUMP ON NOT ZERO ADD R Осуществляя управление программным циклом, часто приходится выполнять определенное число итераций. Ниже приводится типичная последовательность команд, предназначенная для суммирования десяти чисел: Адрес Команда 0 LOAD INDEX REGISTER #10 (ЗАГРУЗИТЬ В ИНДЕКСНЫЙ РЕГИСТР НЕПОСРЕДСТВЕННЫЙ ОПЕРАНД 10) 1 CLEAR ACCUMULATOR (ОЧИСТИТЬ АККУМУЛЯТОР) 2 ADD 100, X (ПРИБАВИТЬ 100+Х) 3 DECREMENT INDEX REGISTER (ВЫЧЕСТЬ 1 ИЗ СОДЕРЖИМОГО ИНДЕКСНОГО РЕГИСТРА) 4 JUMP ON NOT ZERO 2 (ПЕРЕЙТИ К 2 ПО НЕНУЛЕВОМУ РЕЗУЛЬТАТУ) После каждого цикла (адреса 2—4) команда ADD 100, X прибавляет другое число (из ячеек 101 —100) к сумме, находящейся в аккумуляторе. Индексный регистр, кроме своих прямых функций, выполняет еще и функции счетчика итераций. Заметим, что подсчет в индексном регистре позволяет признаку НУЛЬ (ZERO) выступать в качестве условия выхода из цикла.
Горка шампанского на свадьбу спб best-emotions.ru. |
|||||||||||||||||||||||