Внимание! Данный документ находится в процессе разработки и может содержать ошибки.   Данный документ - есть синтез оригинального "Руководства по эксплуатации" с дополнениями автора программы "Калькулятор Б3-34".

 

Калькулятор Б3-34.

Содержание пакета:
Краткое руководство
(этот файл) Таблица команд Описание программы


Краткое руководство.


Нужен ли Вам такой калькулятор?

Калькулятор Б3-34 является программируемым микроклькулятором (ПМК) и предназначен для выполнения научных, инженерных и статистических расчётов. В отличие от простых калькуляторов, в Б3-34 отсутствует клавиша = (равно). В Б3-34 сначала вводятся операнды, затем решается что с ними делать. Например, чтобы вычислить сумму 2+2 надо нажать на клавишу 2, затем на синюю клавишу "стрелка вверх", затем на клавишу 2 и на синюю клавишу +, на индикаторе высветится результат (4). Если Вам надо сохранить несколько длинных чисел для повторного их использования, достаточно после ввода числа нажать две клавиши - П и любую, от 0 до F, и продолжить работу. Повторим предыдущий пример, только при этом сохраним операнды в памяти. Нажимаем клавишу 2, клавишу П, клавишу 1, клавишу 2, клавишу П, клавишу 2, клавишу +, на индикаторе высветится результат (4). Теперь проверим, чему будет равно произведение введёных ранее чисел. Нажимаем клавишу ИП, клавишу 1, клавишу ИП, клавишу 2, синюю клавишу X (умножить). Этим все удобства "машинны" не исчерпываются. Они проявляются в полной мере тогда, когда требуются многочисленные вычисления для составление таблиц и графиков.


Калькулятор имеет:

  • програмную память объёмом в 100 или 256 шагов;
  • 16 адресуемых регистров памяти для хранения данных или адресов перехода в программе;
  • команды прямых и косвенных переходов в программе, команды вызова подпрограм и команды возврата из подпрограм;
  • возможность обращения к подпрограмме внутри подпрограм. Глубина таких обращений равна 5;
  • команды прямого и косвенного безусловного перехода;
  • четыре типа команд прямого и косвенного условного перехода (по условиям x=0, x!=0 (не равно 0), x>=0 (больше или равняется 0), x<0);
  • команды организации циклов;
  • команды косвенной записи содержимого регистра X в регистры памяти;
  • команды косвенной индикации содержимого регистров памяти;
  • команды сброса счётчика адресов в нулевое состояние;
  • команда пуска и остановки при автоматическом вычислении по программе;
  • команда пошагового выполнения программы в режиме "Автоматическая работа";
  • индикация кодов трёх последовательных шагов программы и текущего состояния счётчика адресов;
  • клавиши пошагового просмотра программы в сторону увеличения или уменьшения адресов в режиме "Программирование";
  • команда вывода результатов в файл для последующей печати на принтере

Ввод чисел.

Ввод чисел, операций и команд в микрокалькулятор осуществляется нажатием соответствующих клавиш левой кнопкой мыши. Имеется пока не полностью реализованная возможность ввода посредством клавиатуры. (Надо отметить, что сложность реализации ввода с клавиатуры обусловлена отсутствием подходящих по смыслу названий на клавишах стандартной клавиатуры. Автор был бы благодарен за ценный совет по этой проблеме.) Многие клавиши имеют двойную и тройную символику. Один символ изображён непосредственно на клавише, второй - над клавишей красным цветом, третий - снизу или справа от клавиши чёрным цветом. Ввод функции, символ которой изображён красным цветом над клавишей, осуществляется нажатием на префиксную клавишу F или К, затем на клавишу над которой изображён символ вводимой функции. Назначение клавиш приведено в таблице команд (размер файла >81 кбайт).


Два режима работы калькулятора.

"Автоматическая работа" - основной режим работы.
"Программирование" - режим предназначен для ввода кода программы, включается посредством нажатия на клавиши F и ПРГ. Выход из режима - нажатием клавиш F и АВТ.


Регистры стека.

В микроклькуляторе имеются 5 операционных регистров X1, X, Y, Z, T. Регистр X служит для приёма и хранения вводимого числа и результата вычислений. Его содержимое отображается на индикаторе. Регистр Y служит для приёма информации из регистра X, что обеспечивает при необходимости, ввод в регистр X второго числа. Занесение числа в регистр Y происходит при нажатии на кнопку "стрелка вверх".

Рис. 1

Схематичное представление регистров стека.

Регистры стека X, Y, Z и T организованы по принципу магазинной памяти, когда последовательно записанная информация может быть считана только в последовательности, обратной последовательности записи (последнее записанное число является первым). Например, когда вводится операнд в регистр X командой чтения из регистра памяти, то содержимое регистра X копируется в регистр Y (сдвигается вверх), а предыдущее содержимое регистра Y копируется в регистр Z, предыдущее содержимое регистра Z копируется в регистр T. При выполнении двухместной операции взаимодействуют регистры Y и X. Результат помещается в регистр X, регистр Y получает содержимое регистра Z, регистр Z получает содержимое регистра T, а содержимое регистра T остаётся неизменным. Регистр X1 получает содержимое регистра X, которое там было до выполнения этой операции (рис. 5). Регистр X1 служит для сохранения предыдущего содержимого регистра X.

Рис. 2

 

Команда продвижения стека вверх.
(стрелка вверх)

Сдвиг содержимого регистров стека происходит по схеме: X->Y->Z->T (рис. 2). Содержимое регистра результата предыдущей операции X1 не изменяется.

 

Рис. 3  
Рис. 4

Команда обмена содержимым регистров X и Y.
(на клавише изображено XY со стрелками)


Схема обмена содержимым регистров показана на рисунке 4.

Рис. 5  
Рис. 6

Регистр предыдущего результата.

В дополнение к четырём стековым регистрам в микроклькуляторе имеется ещё один регистр , называемый регистром предыдущего результата. Этот регистр сохраняет значение числа, которое находилось в регистре X до выполнения операции. Для проверки этого числа нажмите клавиши F и Вх. При этом произойдёт перемещение информации в стеке (рис. 6): X->Y->Z->T, X1->X.

Рис. 7

 

Команда Rotate.
(в оригинале изображено кольцо со стрелками)

В результате выполнения этой команды обмен регистрами стека произойдёт по схеме: X->X1, T->Z->Y->X, X1->T (рис. 7).

Регистры общего назначения.

Это 16 адресуемых регистров памяти для хранения данных или адресов переходов в программе. Номер регистра обозначается шеснадцатиричным числом - от 0 до F. В оригинале "руководства по эксплуатации" в название этих регистров введён префикс RG (RG0, RG1 ... и т.д.). Из таблицы команд видно, что код команд обращения к регистрам однозначно определяется вторым полубайтом кода команды, например, таких как 40 -4F (запись в регистр памяти - клавиши П, 0 до П.F), 60 -6F (извлечение из регистров памяти в регистр X - клавиши П, 0 до П.F) и других командах.

Регистры стека возврата.

Калькулятор имеет 5 регистров образующих стек возврата, которые програмно недоступны, однако они позволяют программе вызвать до 5-ти вложенных подпрограм. В ячейках стека возврата хранятся адреса возврата из подпрограм.


Одноместные операции.

Одноместные операции - это операции для выполнения которых требуется один операнд. Операнд, над которам производится операция находится в регистре X и высвечивается на индикаторе. Результат операции записывается в регистр X, при этом содержимое остальных регистров не изменяется. Следующие операции в Б3-34 являются одноместными:

  • вычисление логарифмических функций (lg, ln);
  • степенных функций (x^2 - возведение в квадрат, e^x, 10^x);
  • тригонометрических прямых и обратных функций ();
  • вычисление квадратного корня (sqr);
  • вычисление обратной величины(1/x);
  • ввод числа пи (PI);

Двухместные операции.

Двухместные операции - это операции для выполнения которых требуется два операнда, расположеных в регистрах X и Y. К таким операциям относятся четыре арифметических действия (сложение, вычитание, умножение и деление) и вычисление степенной функции x^y (x в степени y). Результат операции записывается в регистр X. При этом информация в регистре Y, хранящаяся до выполнения операции заменяется содержимым регистра Z. Схема передвижения в стеке T=T->Z->Y, X1=содержимому регистра X до выполнения операции.


Цепочечные вычисления.

Если на индикаторе высвечивается результат предыдущих вычислений, то набор на клавиатуре нового числа автоматически передвигает информацию из регистра X в регистр Y. Перемещение в стеке происходит по схеме X->Y->Z->T, предыдущее содержимое T теряется. Таким образом, результат вычисления предыдущей операции может участвовать в качестве второго операнда при выполнении последующих вычислений.


Команда безусловного перехода.

Команда безусловного перехода реализуется клавишей БП и последующим вводом адреса перехода. Эта команда прерывает естественный порядок выполнения программы и осуществляет преход к выполнению команды, указанной в адресе перехода. Длина команды - два шага. Её можно использавать ещё для ручного перехода к желаемому адресу при отладке программы.


Команды перехода по условию.

Команды перехода по условию ( x<0 либо x=0, x>=0, x!=0 (не равно нулю)) реализуются клавишей F, клавишей условия " x<0", "x=0", "x>=0", "x!=0" и вводом адреса перехода. Проверяется сожержимое регистра X на выполнение заданного условия. Если условие не выполняется, то следующей по программе будет выполнена команда, адрес которой указан непосредственно в команде условного перехода. Если условие выполняется, то следующей командой будет следующая за адресом прехода команда. Длина команды - два байта (шага) програмной памяти.


Команда вызова продпрограммы.

Команда вызова продпрограммы реализуется клавишей ПП и сдующему за ней адресом (начала подпрограммы). При этом в стек возврата записывается следующий адрес программы, на который в дальнейшем будет сделан взврат из подпрограммы (В/О). Длина команды - два шага. В режиме "Автоматическая работа", когда программа не выполняется, нажатие на клавишу ПП производит пошаговое выполнение программы.


Команды косвенного вызова продпрограммы.

Команда косвенного вызова продпрограммы реализуется клавишами К , ПП и клавишей адресуемого регистра ( 0 ... F ). Длина команды - один шаг. С помощью этой команда происходит модификация адреса, хранящегося в адресуемом регистре, индекс которого входит в команду. Затем, записывается в стек возврата следующий адрес программы, на который в дальнейшем будет сделан взврат из подпрограммы (командой В/О), и осуществляется вызов подпрограммы, записанной по модифицированному адресу.


Команда возврата из продпрограммы.

Команда возврата из продпрограммы реализуется клавишей В/О. Из стека возврата читается последний адрес, который записывается туда во время вызова подпрограммы посредством команды ПП ... (или К ПП ...), и происходит переход на этот адрес.


Косвенный безусловный переход.

Команда косвенного безусловного перехода по модифицированному адресу реализуеся клавишами К, БП и клавишей адресуемого регистра (от 0 до F, от A до F - надписи чёрного цвета). При исполнении этой команды происходит модификация адреса, хранящегося в адресуемом регистре (индекс которого входит в команду), и происходит переход к испонению команды, записанной по новому (модифицированному) адресу. Модификация адреса происходит в зависимости от номера регистра, входящего в команду. Если команда содержит номер одного из регистров 0, 1, 2, 3, то при выполнении команды из содержимого адресуемого регистра вычитается 1. Если номер адресуемого регистра 4 , 5 или 6, то к содержимому регистра прибавляется 1. Если номер адресуемого регистра от 7 до F, то содержимое адресуемого регистра не изменяется.

Таблица модификации при косвенной адресации.

Регистр
Модификация
Надпись
0
-1
Клавиша с надписью 0
1
-1
Клавиша с надписью 1
2
-1
Клавиша с надписью 2
3
-1
Клавиша с надписью 3
4
+1
Клавиша с надписью 4
5
+1
Клавиша с надписью 5
6
+1
Клавиша с надписью 6
7
нет
Клавиша с надписью 7
8
нет
Клавиша с надписью 8
9
нет
Клавиша с надписью 9
A
нет
Клавиша с надписью , (запятая), под клавишей чёрным цветом - латинская буква A.
B
нет
Клавиша с надписью /-/, под клавишей чёрным цветом - латинская буква B.
C
нет
Клавиша с надписью ВП, под клавишей чёрным цветом - латинская буква C.
D
нет
Клавиша с надписью Cx, под клавишей чёрным цветом - латинская буква D.
E
нет
Клавиша с надписью в виде стрелки вверх, справа от клавиши чёрным цветом - латинская буква E.
F
нет
Клавиша с надписью - (знак минус), справа от клавиши чёрным цветом - латинская буква F.

Косвенный переход по условию.

Команды косвенных переходов по условию реализуется клавишей "К", клавишей условия ( x<0 либо x=0, x>=0, x!=0 (не равно нулю)) и клавишей адресуемого регистра (от "0" до "F"). С помощью этой команды проверяется содержимое регистра X на выполнение заданного условия. Если условие не выполняется (обратите внимание, именно - когда не выпоняется), то происходит модификация (изменение) адреса, хранящегося в адресуемом регистре, индекс которого входит в команду, и осуществляется переход к выполнению команды, записанной по модифицированному адресу. Если условие выполняется, то происходит переход к выполнению следующей команды. При этом адрес, записанный в адресуемом регистре, не модифицируется.

 

Команды косвенного чтения регистра памяти.

Команда модифицирует регистр , номер которого входит в команду (согласно таблице модификации), после чего происходит чтение соответствующего регистра в регистр X. Пример. Если содержимое регистра 0 до выполнения команды было равно 3, то при выполнении команды К ИП 0 уменьшается содержимое регистра 0 (теперь оно равно 2) и происходит чтение содержимого регистра 2 в регистр X.


Команды косвенной записи в регистр памяти.

Команда модифицирует регистр , номер которого входит в команду (согласно таблице модификации), после чего происходит запись в соответствующий регистр содержимое регистра X. Пример. Если содержимое регистра 0 до выполнения команды было равно 3, то при выполнении команды К П 0 уменьшается содержимое регистра 0 (теперь оно равно 2) и происходит запись содержимого регистра X в регистр 2.


Команды организации циклов.

Команды организации циклов организуются клавишами L0, L1, L2, L3 в сочетании с префиксной клавишей F. Команда состоит из кода команды и следующего за ней адреса перехода. При выполнении команды L0 происходит обращение к регистру памяти RG0. При каждом выполнении этой команды из содержимого регистра 0 вычитается 1 и производится анализ его на нуль. Если оно не равно нулю, происходит переход к выполнению команды перехода, входящего в команду. Если содержимое регистра памяти RG0 равно нулю, то цикл завершается и выполняется следующая команда. Длина команды - два шага.


Программирование.

Вход в режим программирования осущесвляется посредством нажатия на клавиши F и ПРГ. Калькулятор перейдёт на текущий адрес программы. Если требуется перейти на заданый адрес, то перед входом в режим программирования надо перейти на этот адрес нажатием клавиши БП и вводом адреса. Перемещение по программе происходит автоматически при вводе команд или принудительно - клавишами ШГ. Справа на индикаторе высвечивается адрес следующего шага программы. В других полях индикатора высвечиваются (3 поля) коды введённых команд в порядке возрастания, слева направо.
Если необходимо исключить из программы какую-либо команду, необходимо нажать клавишу К и клавишу НОП, шаг программы заполнится командой, которая ничего не делает. Выход из режима "Программирование" осуществляется нажатием на клавиши F и АВТ.


Вычисление по программе.

Вычисления по программе начинаются нажатием на клавишу С/П. Начинается выполнение программы с текущего адреса. Если требуется начать (или продолжить) программу с конкретного адреса, то необходимо перейти на этот адрес нажатием клавиши БП и вводом адреса. Останов вычислений осуществляется повторным нажатием клавиши С/П.


Отличия от оригиналального Б3-34.

При косвенном обращении команд к регистрам, когда должен быть считан номер регистра, от содержимого стчитываемого регистра выделяется целая часть (дробная не учитывается, но и не меняется), из которой выделятся младшее значимое, не превышающее количества регистров памяти минус 1 (это 4 младших бита). В случае считывания адреса перехода используется целая часть содержимого регистра. Если адрес перехода окажется за пределами программы, - программа выдаст соответствующее предупреждение.

5 May, 2002 3:02