Список команд Урал-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)|>1235 К значению сумматора добавляется значение ячейки a~. Значение сохраняется в сумматоре, значение прибавляемого регистра не меняется.
02 Посылка в сумматор (присвоение) τ102τ2+a (a~)=:(s);
(a~)=:(r)
(s)0 Сброс регистра сумматора в ноль и выполнение операции сложения (код θ=1)
03 Вычитание τ103τ2+a (s0)(a~)=:(s);
(a~)=:(r)
(s)0 |(s)|>1235 Знак числа 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)|>1235 Регистр АУ умножается на 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);
li36
(s)=+0 Содержимое сумматора поразрядно логически умножается на число (a~). Результат заносится в сумматор.
13 Формирование τ113τ2+a (si)0(a~i)=:(si);
(a~i)=:(ri);
li36
(s)=+0 Содержимое сумматора порязрядно логически сладывается с числом (a~). Результат помещается в сумматор.
14 Сравнение τ114τ2+a (si)0(a~i)=:(si);
(a~i)=:(ri);
li36
(s)=+0 Производится поразрядная операция отрицания равнозначности между содержимым сумматора и числом (ai). Результат помещается в сумматор.
15 Нормализация τ115τ2+a (s)0=sign(s)0×M(s)02P(s)0;
P(s)0*217:=(s);
sign(s)0M(s)0:=(a~);
(s)=:r
(s)0=±0 Нормализация числа в сумматоре; мантисса и её знак записываются в ячейку a~, порядок сохраняется в старшей половине сумматора (с сохранением знака в знаковом разряде). Если предыдущая операция привела к переполнению, то величина порядка устанавливается в +1. При выполнении операции округление не производится. В регистре остаётся то же значение, что и в сумматоре.
16 Посылка в память τ116τ2+a (s)0=:(a~) (s)00 Значение из сумматора копируется в a~ на магнитном барабане. Значение сумматора, регистра АУ не меняется.
17 Послыка в регистр τ117τ2+a (a~)=:(r) (r)=±0 Значение из ячейки a~ посылается на регистр АУ. Значение в сумматоре не меняется.
20 Посылка адреса в сумматор τ120τ2+a (1)[τ2]×a~×217=:(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)02(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