Команды присваивания

Большинство команд присваивания имеют следующие свойства.

  1. Каждая команда имеет два варианта — для работы с байтами и со словами. В первом случае модификация регистра (при автодекрементной и автоинкрементной адресации) происходит на 1, во втором — на 2. В конце байтовых команд ставится буква В.
  2. Команды, кроме команды расширенной арифметики и логической команды XOR, в которой первый операнд размещается в регистре, разрешают произвольный доступ к своим операндам (т. е. можно использовать любой метод адресации к каждому операнду). Это исключение связано с нехваткой кодов операции для двухадресных команд с произвольным доступом (табл. 1.5). Кроме того, команды плавающей точки, выполняемые блоком расширенной арифметики (а не процессором плавающей точки ЭВМ «Электроника 79»), предполагают последовательное размещение операндов в памяти. Адрес первого операнда должен размещаться в РОН (одноадресные регистровые команды).
  3. Команды (кроме некоторых команд расширенной арифметики) выполняются одинаково во всех ЭВМ семейства «Электроника». Все команды, их мнемоника, коды, действия, признаки результата, которые они устанавливают в регистре состояния процессора, а также те процессоры, на которых они выполняются, приведены в приложении 1.

Унарные операции: приравнивание целочисленной переменной нулю; инвертирование и дополнение; прибавление и вычитание 2 (или 1 для байтовой команды); сдвиги вправо и влево на один разряд — циклический и арифметический (в последнем случае знаковый разряд не участвует в сдвиге); перестановка байтов внутри слова; три команды подготовки операндов для команд расширенной арифметики: расширение знака (подготовка делителя для команды DIV и сомножителя для команды MUL); прибавление и вычитание переноса для программной реализации арифметических операций над операндами увеличенной длины — выполняются 24 командами.

Операции переименования (перемещения операндов) двухместные, выполняются семью командами. Основная команда, которая производит перемещение байта (слова) в пределах двухуровневой памяти, — MOV. Пересылка операнда производится по второму адресу команды и сопровождается его анализом и установкой признаков Z, N. Эта команда используется для любых взаимных пересылок между РОН и объектами, имеющими адреса на Канале. К этим объектам относятся ячейки оперативной памяти, регистры данных и регистры состояния внешних устройств, регистры ППТ, регистры состояния ЦП (РСП, РОН, регистр программных прерываний и т. д.). Для тех ЭВМ, в которых регистр состояния процессора недоступен со стороны Канала (т. е. для микроЭВМ), введена команда пересылки РСП по адресу, указанному в команде (MFPS). Четыре команды служат для пересылки слова из стека текущей области в логическое адресное пространство предыдущей области, и наоборот. В ЭВМ «Электроника 79» логическое адресное пространство делится на два: адресное пространство данных и адресное пространство команд. Пересылку слова между стеком текущей области и адресным пространством данных организуют команды MFPD и MTPD, а адресным пространством команд — MFPI и MTPI. В ЭВМ «Электроника 100-25» и «Электроника 60-1» используется только вторая пара команд. Во всех этих командах адрес вычисляется в текущей области, т. е. используются регистры и ячейки оперативной памяти текущей области; затем производится пересылка слова, размещенного по этому вычисленному адресу в предыдущей области, в стек текущей области, или наоборот. Предыдущая и текущая области задаются разрядами 12, 13 и 14, 15 РСП.

Логические операции умножения и деления (И, ИЛИ) как над словами, так и над байтами реализуются командами с произвольным доступом (BIC (В), BIS (В)) одновременно над 16 (8) независимыми парами логических переменных. Результат размещается по второму адресуй содержит 16 (8) результатов операций в соответствующих позициях. Из-за нехватки кодов операций команда операции отрицания равнозначности (XOR) выполнена, как используемая реже, с регистровой адресацией первого операнда и произвольным доступом ко второму. Команда оперирует 16 логи« ческими переменными, результат размещается по второму адресу. Все логические команды устанавливают признаки результата N, Z и V (V всегда в 0).

Арифметические операции включают арифметические команды центрального процессора (сложение-вычитание), 8 команд блока, расширенной арифметики и 46 команд процессора плавающей точки. Во всех ЭВМ семейства реализованы только две базовые команды (ADD и SUB). Команды умножения, деления целых чисел, а также арифметические сдвиги реализованы во всех моделях, кроме «Электроника 60» и «Электроника 100-16». Четыре арифметические операции над числами с плавающей точкой (FADD, FSUB, FMUL, FDIV) не реализованы в ЭВМ «Электроника 60» и «Электроника 100-16».

Базовые команды предоставляют произвольный доступ к обоим операндам, имеющим размер в одно слово. В операциях целочисленного умножения и деления один из сомножителей и делимое размещаются в паре регистров, первый (указываемый в команде) должен быть четным. Результат операции размещается в этой же паре регистров; произведение занимает оба регистра, так как может достигать 32 разрядов. При выполнении деления в первый регистр пары с четным номером записывается частное от деления, во второй (нечетный) — остаток.
Команды арифметического сдвига позволяют сдвигать содержимое регистра (или пары регистров, рассматриваемых как один регистр двойной длины) вправо или влево до 32 разрядов. Знак сдвига и число разрядов определяются шестью младшими разрядами второго операнда с произвольным доступом. Как и в командах циклического сдвига признак С считается продолжением регистра с той стороны, в которую производится сдвиг. Это позволяет использовать команды сдвига для синхронизации — для организации операций «Установить и проверить». Признаки устанавливаются в соответствии с результатом операции (например, при сдвиге влево может произойти переполнение, при сдвиге вправо результат может оказаться нулевым).

Команды расширения плавающей точкой (РПТ) производят действия над парой операндов, размещенных в участке памяти в четыре слова. Регистр, указанный в командах FADD, FSUB, FDIV и FMUL, содержит адрес этого участка. Следовательно, перед операцией адрес должен быть загружен в регистр. Результат, имеющий длину 4 байта (формат чисел с плавающей точкой одинарной точности), размещается в начале участка, т. е. регистр, указанный в команде, содержит после выполнения команды адрес результата.