Skip to Content
Раздел 1. Базовая ЭВМ1.5. Управление вычислительным процессом, сдвиги и логические операции

Управление вычислительным процессом, сдвиги и логические операции

Задача управления вычислительным процессом, т.е. требуемой последовательностью выполнения команд, решается в базовой ЭВМ при помощи команд переходов (BCS, BPL, BMI, BEQ, BR), команд Приращение и пропуск (ISZ) и Остановка операций (HLT). Все эти команды (кроме HLT) являются адресными, т.е. в них указывается адрес той ячейки памяти, из которой должна быть выбрана следующая команда программы при выполнении того или иного условия. Если же условия не выполняются, то должна исполняться команда, расположенная вслед за данной командой управления. Как и в других адресных командах, здесь можно использовать косвенную адресацию. Команды переходов не изменяют состояния аккумулятора и регистра переноса. Они могут лишь изменить содержимое счетчика команд, поместив в него адрес, определяемый адресной частью команды.

  • BCS M (Переход, если перенос).
    Переход к команде, расположенной в ячейке с адресом M, если содержимое регистра переноса равно 1.
  • BPL M (Переход, если плюс).
    Переход к команде, расположенной в ячейке с адресом M, если содержимое аккумулятора больше или равно нулю, т.е. в его старшем разряде (знаковом разряде) содержится 0.
  • BMI M (Переход, если минус).
    Переход к команде, расположенной в ячейке с адресом M, если содержимое аккумулятора меньше нуля, т.е. в его старшем (знаковом разряде) содержится 1.
  • BEQ M (Переход, если нуль).
    Переход к команде, расположенной в ячейке с адресом M, если содержимое аккумулятора равно нулю.
  • BR M (Переход безусловный).
    Переход к команде, расположенной в ячейке с адресом M, осуществляемый при любых значениях А и С или других регистров базовой ЭВМ.

Команды переходов широко применяются для организации циклических программ, которые используются в тех случаях, когда требуется несколько раз выполнить набор одинаковых действий с различными наборами данных. Базовая ЭВМ обладает рядом средств для упрощения циклических программ. Целесообразность введения этих средств удобнее рассмотреть на примерах.

Пример 1.1. Получить произведение Z = Y * 50.

Так как в системе команд базовой ЭВМ нет команды умножения, то воспользуемся простейшим способом: будем 50 раз складывать значение Y, используя программу, приведенную ниже.

Адрес Содержимое Комментарий
Код Мнемоника
5 0078 **Y**. Множимое (здесь – десятичное значение 120)
6 0000 **Z**. Ячейка, отведенная для накопления результата. В ней поочередно будут храниться значения *Y*, *2 \* Y*, … После 50 суммирований в этой ячейке будет содержаться искомый результат – *50 \* Y*
7 0032 Множитель 50 = (32)16
8 0000 Ячейка, используемая для накопления числа выполненных циклов, - *счетчик циклов*
... ... ...
10 F200 CLA К промежуточному результату, находящемуся в ячейке 6, добавляется еще одно значение множимого *Y*.
11 4006 ADD 6
12 4005 ADD 5
13 3006 MOV 6
14 F200 CLA Содержимое счетчика циклов увеличивается на 1, а его копия пока сохраняется в аккумуляторе.
15 4008 ADD 8
16 F800 INC
17 3008 MOV 8
18 6007 SUB 7 Если содержимое счетчика циклов меньше значения множителя, то выполняется переход к командам, осуществляющим новое суммирование *Y* с промежуточным значением Z.
19 A010 BMI 10
1A F000 HLT Останов. В ячейке 6 хранится искомый результат

Так как в этой программе аккумулятор используется не только для накопления произведения, но еще для изменения количества выполненных циклов и сравнения их со значением множителя, то промежуточные результаты Z и С пришлось сохранить в памяти ЭВМ. Очевидно, что обсуждаемую программу можно существенно упростить, при наличии такого средства учета числа выполненных циклов и проверки условия завершения циклической программы, которое не затрагивает содержимого аккумулятора. Таким средством является команда **ISZ (Приращение и пропуск)*. При каждом выполнении команды ISZ M, расположенной по адресу А, к содержимому ячейки с адресом М добавляется 1 и если результат меньше нуля, то выполняется команда, следующая за ISZ M (команда, расположенная по адресу А+1), в противном случае эта команда опускается, т.е. выполняется команда, расположенная по адресу А+2. Программа с использованием команды ISZ приведена ниже.

Адрес Содержимое Комментарий
Код Мнемоника
5 0078 **Y**. Множимое (здесь – десятичное значение 120)
6 0000 **Z**. Ячейка, отведенная для накопления результата.
7 FFCE Отрицательное значение множителя (-50)
... ... ...
10 F200 CLA
11 4005 ADD 5 К содержимому аккумулятора добавляется значение *Y*.
12 0007 ISZ 7 Содержимое *M* наращивается на 1 и, если оно ещё *меньше нуля*, то выполняется команда *BR 11*. При *M = 0* команда *BR 11* пропускается.
13 С011 BR11
14 3006 MOV 6 Результат заносится в ячейку 6
15 F000 HLT

Логические операции

Побитовая обработка данных обеспечивается базовой ЭВМ командами побитовой конъюнкция, циклических сдвигов, а также командами инвертирования и очистки регистра переноса.

  • Команда AND M (Побитовая конъюнкция) выполняет над каждым разрядом содержимого аккумулятора и содержимым ячейки М булеву операцию & (И).
    Результат выполнения команды для каждой пары битов операндов равен единице только тогда, когда оба бита равны единице, а в остальных случаях бит результата равен нулю, т.е. команда позволяет выделять или очищать определенные биты слова.

  • Команды ROL (циклический сдвиг влево на один разряд) и ROR (циклический сдвиг вправо на один разряд) замыкают аккумулятор и регистр переноса в кольцо и сдвигают все биты кольца на один разряд влево или вправо. Сдвигами числа влево или вправо можно реализовать операции умножения или деления на два (один сдвиг), на четыре (два сдвига), на восемь (три сдвига) и т.д.

Рис. 1.3. Циклические сдвиги: а - влево, б - вправо  Рис. 1.3. Циклические сдвиги: а - влево, б - вправо

Last updated on