Техника - молодёжи 1986-04, страница 58

Техника - молодёжи 1986-04, страница 58

ОХОТА НА ИНОПЛАНЕТНЫХ ЧУДОВИЩ (4)

Рейс «Кон-Тики» завершен, пора заканчивать и знакомство с глубинами «электронного океана». Но сначала ознакомимся с одной особенностью БЗ-34 (МК-54). «Занимаясь с микрокалькулятором,— пишет Д. Козьмин-ский из г. Рубцовска Алтайского края,— я заметил интересную возможность увеличить число регистров памяти. Может, это и не открытие, но в качестве ячеек можно использовать и знаки арифметических действий, а также ХУ и стрелку вверх (ввод в стек). Однако последняя спарена с «Н-», то есть эти дополнительные регистры работают как один».

Прав ли читатель? И да и нет. Легко убедиться, что клавиши «+», «—», *Х»» и «ХУ» при командах записи, вызова и переходов выполняют в точности те же функции, что и команды «О», «1», «2», «3» и «4», вплоть до совпадения кодов получающихся команд. Так, команда П+ (код 40) тождественна ПО (тот же код), поэтому о каком-то расширении возможностей ПМК за счет этих «новых» команд говорить нельзя (в некоторых игровых программах, правда, можно для наглядности отдавать с пульта команды типа БП1ььС/П для перемещения по вертикальной координате и БП ХУ±С/П для перемещения по горизонтальной; с таким вводом мы скоро встретимся'). Но Д. Козьминский прав в том смысле, что адресуемых регистров в памяти Б3-34 вовсе не 14, как утверждается в заводской инструкции, а 15 — имеется еще один буквенный регистр Е: на клавиатуре ему соответствует стрелка вверх (ввод в стек). Нетрудно проверить, что по этому регистру можно осуществить полный набор команд (прямые запись и вызов, а также косвенные: запись, вызов, обращение к подпрограмме и переходы — четыре условных и один безусловный). Эти команды имеют собственные коды (все они завершаются буквой Е) и исправно выполняются как при ручных вычислениях, так и при расчетах по программе. Лишь одна особенность отличает регистр Е от остальных: он постоянно связан с регистром 0! Иными словами, содержимое обоих регистров всегда совпадает.

Казалось бы, что толку от такого дополнительного регистра? Какая разница, 0 или Е, если числа в них все равно . одинаковы? Действительно, команды прямой записи и прямого вызова * по этим регистрам, несмотря на то, что коды их отличаются (40 и 4Е, 60 и 6Е), абсолютно взаимозаменяемы. А вот при косвенном обращении к регистру Е (как и к другим буквенным, а также «старшим» цифровым регистрам 7, 8 и 9) не происходит «модификации» находящегося в нем числа — оно, попросту говоря, не меняется; соответственно остается прежним и содержимое регистра 0. При косвенном же обращении к регистру 0 его

содержимое «модифицируется» (уменьшается на единичку, как и в случае регистров 1, 2 и 3) — соответственно меняется и число в регистре Е. Эту постоянную связь удобно использовать в циклах по регистру 0 (см., например, простенькую программу «Мультфильм» № 12 за 1985 год; предоставляем читателям самим разобраться в том, как она работает). К слову сказать, в МК-61 связь Е—0 разорвана, поэтому обладателям этого ПМК придется в некоторых ситуациях искусственно ее вводить, что потребует минимум двух команд ИПО ПЕ. Все такие случаи будут в дальнейшем оговариваться особо.

Столь обширное отступление потребовалось потому, что обитатели 7-го этажа «электронного океана», С-ЕГГОГ-оборотни, позволяют устанавливать подобную (правда, одностороннюю) связь между регистром С и любым другим. Введите в регистр С какое-нибудь число, например, 22, перейдите в режим ПРГ, наберите стандартную «водолазную» программу: 00. Fx 01.Fx2 02. Fx2 ОЗ.ПА 04.Сх 05.С/П, вернитесь в режим АВТ и скомандуйте, допустим, 1 ВП 80 В/О С/П. На индикаторе О, но в регистре А сидит С-ЕГГОГ-оборотень. ИПА. На индикаторе — 22, содержимое регистра С! Это главное свойство «свёрхчисел» с порядками между 600 и 700 (сейчас в регистре А записано Ю640) — при их вызове в регистр X сами они тут же «отступают» в регистр У, вытаскивая на индикатор число из регистра С (почему именно этому буквенному регистру такое предпочтение, никому не известно). С числом, которое горит сейчас на индикаторе, можно осуществлять различные операции. Например, 2 X (44) 4-ИП) 1 - (10) 15+(25) FV75) F I/х (0,2) и т. д. Но в регистре У по-прежнему находится «сверхчисло». Попробуем ХУ. На индикаторе вновь появляется 22 — «чудовище», вызванное в регистр X, незамедлительно отползло в свою «пещеру» (регистру У), прикрывшись «добычей» (содержимым регистра С)...

Если нажать теперь знак сложения, после томительной паузы на индикаторе появится сообщение ЕГГОГ. «Сверхчисло», замаскированное под ним, собственной персоной явилось на индикатор! Это легко проверить, например, отдав команду Fig: на экранчике загорится 359,99998 — логарифм «сверхчисла» (с учетом периода в 1000 по величине порядков).

С-ЕГГОГ-оборотни обладают и многими другими, еще не вполне понятными свойствами. Использование их в электронных играх проблематично. Однако знать о них"надо — с этими числами легко случайно столкнуться в районе отрицательных порядков (если, скажем, подать на вход «водолазной» программы число 1 ВП /—/ 45, то получится вовсе не ноль, как можно было предположить, а то самое «сверхчисло», с которым мы только что познакоми

лись; для ПМК нет разницы между Ю640 и Ю~360—порядки отличаются ровно на тысячу.).

Сказанное относится и к числам с положительными порядками от 700 до 800 (соответственно с отрицательными между —200 и —300). Для знакомства с ними пригодится ЗГГОГ-анализатор: 1 ВП 50 Fx2 Fx2 П9 Сх. Подадим на вход «водолазной» программы, допустим, 1 ВП 90 В/О С/П. На индикаторе 0. ИПА. На экранчике появляется нечто несообразное (00,10000000 2). Это «длинный монстр», типичный обитатель данного этажа. Справиться с ним нетрудно: F АВТ ИП9 ИП9. На индикаторе — ЗГГОГ-анализатор. Нажимаем десятичную точку. Справа загорается трехзначный порядок — 720; нажимаем F АВТ — слева появляется мантисса L ЗГГОГ, как всегда, не подвел (кстати, при некотором навыке расшифровать «длинно'го монстра» легко по его внешнему виду; предлагаем в этом потренироваться самостоятельно).

Следующий этаж (порядки между 800 и 900, а также между —100 и —200) безраздельно принадлежит Нулю. Проверьте это сами. Для электронных игр наиболее интересны его «воплощения» в мире ОС-оборотней (числа с порядками между 480 и 490, а также между 448 и 449). Записав такое число, допустим, в регистр А, получаем возможность обнулять регистр С одной-единствен ной командой ИПА. Например, сейчас в регистре С записано 22. Подадим на вход «водолазной» программы число 1 ВП 60 В/О С/П. На индикаторе 0. ИПС (22) ИПА (0) ИПС (О). Легко убедиться, что такое зануление исправно выполняется и при расчетах по программе. В результате появляется возможность сэкономить одну команду — практика показывает, что именно ее-то очень часто и не хватает.

Задание на этот раз очевидно: закончить путешествие. Комплект исходных данных тот же, что и в приведенном тесте, только регистры А, В и 0 нужно заполнить в соответствии с результатами предыдущей операции (тем, кто ее не выполнял, можем предложить такие цифры: ЙП7 1 ВП 5 + ПА 8400 ПО 280 /—/ ПВ Сх ПС). Рекомендациям, содержащимся в последней части отчета А. Перепелкина,^следовать можно, но вовсе не обязательно: путей в атмосфере много, и все они ведут вниз. Мягкой посадки!

Михаил ПУХОВ

При Клубе электронных игр организована консультация по программированию на языке БЗ-34. Отвечаем на различные вопросы, даем полезные советы, помогаем редактировать программы. Адрес: 125015, Москва, А-15, Новодмитровская ул., 5а, <гТехника — молодежи», Клуб электронных игр.

54