Список команд Урал-1

Материал из testwiki
Перейти к навигации Перейти к поиску

В этом списке приводятся команды ЭВМ Урал-1

Представление чисел и команд

Распределение разрядов полной ячейки памяти
Распределение разрядов полной ячейки памяти в двоично-десятичной форме
Формат команды

Урал-1 поддерживает форматы чисел с фиксированной запятой в прямом и двоично-десятичном коде. Разряд знака равный нулю кодирует неотрицательные числа, единица кодирует отрицательные числа.

Команды имеют следующий формат: τ1θτ2+a, где:

  • τ1 — признак переадресации
  • θ — код операции
  • τ2 — признак длины ячейки
  • a — адрес

Условные обозначения

  • r — регистр АУ
  • s — сумматор АУ
  • С — содержимое регистра-счётчика
  • F — регистр переадресации
  • верхний индекс — указанный бит регистра
  • M(x) — мантисса числа
  • P(x) — порядок числа
  • f(x1,…xn):=z — вычисление функции f, без модификации x и помещение результата в ячейку (регистр) z.
  • X — не влияющий на вычисления бит (знак, цифра)
  • (z)0 — значение ячейки (регистра) z до выполнения команды

Исполнительный адрес команды формируется по следующей формуле:

a~=a−τ1(F);

где ã — исполнительный адрес команды, τ1 — признак переадресации, а — адрес из текущей инструкции, а F — значение регистра переадресации, то есть исполнительный адрес вычисляется как разница между адресом из инструкции и значением в регистре переадресации, значение из регистра переадресации учитывается, только если у инструкции указан флаг переадресации.

Знак нуля:

  • всегда отрицательный после операций сложения/вычитания, за исключением (+0)+(+0), (+0)-(-0).
  • знак нуля при операциях умножения/деления определяется по правилам умножения знаков.

Примечание: для записи формул используется операция «=:», означающая, что результат вычисления заносится в ячейку (регистр), напр. 2x2=:A (запись в А результата 2х2).

Список команд

Код операции θ Название формула содержание Сигналы комментарий
ω φ
01 Сложение τ101τ2+a (s0)+(a~)=:(s);
(a~)=:(r)
(s)⩽−0 |(s)|>1−2−35 К значению сумматора добавляется значение ячейки a~. Значение сохраняется в сумматоре, значение прибавляемого регистра не меняется.
02 Посылка в сумматор (присвоение) τ102τ2+a (a~)=:(s);
(a~)=:(r)
(s)⩽−0 — Сброс регистра сумматора в ноль и выполнение операции сложения (код θ=1)
03 Вычитание τ103τ2+a (s0)−(a~)=:(s);
(a~)=:(r)
(s)⩽−0 |(s)|>1−2−35 Знак числа a~ меняется на противоположный, после чего выполняется операция сложения (код θ=1)
04 Вычитание модулей τ104τ2+a |(s)0|−|(a~)|=:(s);
(a~)=:(r)
(s)⩽−0 — Выполняется операция сложения (код θ=1) с предварительным изменением знаков: первоначальному значению сумматора присваивается знак +, числу a~ присваивается знак −
05 Умножение (тип 1) τ105τ2+a (r)0×(a~)+(s)0=:(s);
0=:(r)
(s)⩽−0 |(s)|>1−2−35 Регистр АУ умножается на a~; произведение (умножение, тип 2, θ=6) прибавляется к содержимому сумматора. Результат записывается в сумматор, регистр АУ сбрасывается.
06 Умножение (тип 2) τ106τ2+a (s)0×(a~)=:(s);
0=:(r)
(s)⩽−0 — Значение из сумматора умножается на a~. Результат заносится в сумматор. Регистр сбрасывается, произведение округляется.
07 Деление τ107τ2+a (s)0:(a~)=:(s);
0=:(r)
(s)⩽−0 |(a)|⩽|(s)0| Значение из сумматора (s)0 делится на значение a~. Результат заносится в сумматор. Частное округляется, регистр сбрасывается.
10 Присвоение знака τ110τ2+a sign(a~)⋅|(s)0|=:(s);
(a~):=(r)
(s)⩽−0 — На сумматор переносится знак числа a~.
11 Сдвиг 11XXXX (s)=+0 — Значение регистра сдвигается на число, указанное в 16—24 разрядах сумматора. Сдвиг зависит от знака (s)0. Отрицательные значения — сдвиг вправо, положительные — сдвиг влево.
12 Выделение части τ112τ2+a (si)0∧(a~)=:(si);
(a~i):=(ri);
l⩽i⩽36
(s)=+0 — Содержимое сумматора поразрядно логически умножается на число (a~). Результат заносится в сумматор.
13 Формирование τ113τ2+a (si)0∨(a~i)=:(si);
(a~i)=:(ri);
l⩽i⩽36
(s)=+0 — Содержимое сумматора порязрядно логически сладывается с числом (a~). Результат помещается в сумматор.
14 Сравнение τ114τ2+a (si)0≂(a~i)=:(si);
(a~i)=:(ri);
l⩽i⩽36
(s)=+0 — Производится поразрядная операция отрицания равнозначности между содержимым сумматора и числом (ai). Результат помещается в сумматор.
15 Нормализация τ115τ2+a (s)0=sign(s)0×M(s)0⋅2P(s)0;
P(s)0∗2−17:=(s);
sign(s)0⋅M(s)0:=(a~);
(s)=:r
(s)0=±0 — Нормализация числа в сумматоре; мантисса и её знак записываются в ячейку a~, порядок сохраняется в старшей половине сумматора (с сохранением знака в знаковом разряде). Если предыдущая операция привела к переполнению, то величина порядка устанавливается в +1. При выполнении операции округление не производится. В регистре остаётся то же значение, что и в сумматоре.
16 Посылка в память τ116τ2+a (s)0=:(a~) (s)0⩽−0 — Значение из сумматора копируется в a~ на магнитном барабане. Значение сумматора, регистра АУ не меняется.
17 Послыка в регистр τ117τ2+a (a~)=:(r) (r)=±0 — Значение из ячейки a~ посылается на регистр АУ. Значение в сумматоре не меняется.
20 Посылка адреса в сумматор τ120τ2+a (−1)[τ2]×a~×2−17=:(s) (s)⩽−0 (то есть [τ2]=1) — Сумматор сбрасывается, содержимое 12 и 1-11 разряда команды переносится в 36 и 19-29 разряды сумматора.
21 Условный переход τ121a Если ω=1, то a~=:(C) не изменяется — Если в момент выполнения команды флаг ω установлен, то управление передаётся команде (a~). Если флаг сброшен, то продолжается выполнение программы (со следующей команды).
22 Безусловный переход τ122a a~=:(C) не изменяется — Управление передаётся команде (a~)
23 Передача управления по ключу τ123XXXa При включенном ключе номерa~
(C)0+2=:(C)
Сохраняется — Если ключ (флаг) с номером a~ из диапазона [1;7] включен, то следующая команда пропускается, если ключ выключен, выполняется.
24 Конец цикла τ124a (F)0−2(f)=:(F);
при (F)0≠0 a~=:(C)
Сохраняется — Содержимое регистра переадресации уменьшается на 1 или на 2 (см следующую команду). Если на регистре переадресации ноль, то управление передаётся следующей команде. Иначе выполнение передаётся команде, стоящей в ячейке (с адресом) a~
25 Начало цикла τ125τ2n n=:(F);
τ2=:(f)
— — Число n записывается в регистр переадресации, а τ2 в специальный одноразрядый регистр f. Значение регистра переадресации будет уменьшатся на 2(f), при выполнении команды конца цикла.
26 Суммирование
30 Изменение команд τ130a — — — Ячейка a должна быть короткой. Обратный код её содержимого складывается в регистре команд (с циклическим переносом) с содержимым ячейки, следующей за той, которая хранит эту команду. Получившаяся при этом команда выполняется в следующем такте вместо очередной команды программы.
31 Обмен между накопителями
31 Чтение с перфоленты τ131astart
τ101c
τ100aend
— — — Из зоны c перфоленты перепысываются последовательно числа в ячееки памяти с номерами от astart до aend.
31 Чтение с магнитной ленты τ131astart
τ102c
τ100aend
— — — Из зоны c магнитной ленты переписываются последовательно числа в ячейки памяти с номерами от astart до aend. Ячейки памяти, в которые производится запись, должны быть полными.
31 Запись на магнитную ленту τ131astart
τ103c
τ100aend
— — — Из ячеек памяти с номерами от astart до aend числа переносятся в зону c магнитной ленты. Ячейки памяти, из которых переносятся числа на магнитную ленту, должны быть полными.
32 Выдача (печать) результатов τ1320000 — — — Печатается или перфорируется (в зависисмости от положения на пульте управления переключателя "печать - перфорирование") число, модифичированный обратный код которого хранится в сумматоре. Печать производится в десятичной системе счисления (числовом коде) или восмиричной системе (коде команд) в зависимости от положения тумблера "Печать".
34 Пропуск интервала τ1340000 — — — Бумажная лента печатающего устройства перемещается без печати на ней на один интервал.
37 Останов τ137a — — — Останов машины с выдачей на пульт управления числа (a~) и одновременным переносом этого числа в сумматор.

Команды с кодами 00, 27, 33, 35, 36 не задействованы (при выполнении команды значения регистров и флагов сохраняются неизменными).

Источники

Н. А. Криницкий, Г. А. Миронов, Г. Д. Фролов, Программирование, под ред. М. Р. Шура-Бура, Государственное издательство физико-математической литературы, Москва, 1963 (Глава 9)
А. И. Китов, Н. А. Криницкий, Электронные цифровые машины и программирование, Государственное издательство физико-математической литературы, Москва, 1959