В качестве иллюстрации приведем программку,
Таблица 9.1. Значение некоторых кодов калькулятора
Литерал | Операция | Состояние стека после операции |
1 | Замена элементов | X | Y | |
3 | Вычитание | Y - X | | |
4 | Умножение | Y ґ X | | |
5 | Деление | Y / X | | |
6 | Возведение в степень | YX | | |
15 | Сложение | Y + X | | |
27 | Изменение знака | Y | -X | |
39 | Целая часть числа | Y | INT X | |
40 | Квадратный корень | Y | SQR X | |
41 | Знак числа | Y | SGN X | |
42 | Абсолютная величина | Y | ABS X | |
49 | Копирование стека | Y | X | X |
56 | Конец расчетов | Y | X | |
88 | Округление числа | Y | INT(X+.5) | |
160 | Дописать 0 | Y | X | 0 |
161 | Дописать 1 | Y | X | 1 |
162 | Дописать 0.5 | Y | X | .5 |
163 | Дописать PI/2 | Y | X | PI / 2 |
164 | Дописать 10 | Y | X | 10 |
В качестве иллюстрации приведем программку, вычисляющую выражение 823ґ5503/(32-17) и выводящую результат на экран. При выполнении расчетов необходимо внимательно следить за очередностью выполнения операций, поэтому прежде нужно продумать порядок занесения чисел в стек (помните, что калькулятор имеет доступ только к величинам, находящимся на вершине стека). Поскольку в данном случае первым должно выполняться действие в скобках, а умножение и деление имеют одинаковый приоритет, то укладывать числа в стек будем в той же последовательности, в которой они встречаются в выражении, чтобы калькулятор мог выбирать их в обратном порядке:
ORG 60000 ENT $ CALL 3435 ;очищаем экран LD A,2 ; и подготавливаем его для печати CALL 5633 LD BC,823 ;заносим в стек все части выражения CALL 11563 LD BC,5503 CALL 11563 LD A,32 CALL 11560 LD A,17 CALL 11560 RST 40 ;вызываем калькулятор DEFB 3 ; X = 32 - 17 DEFB 5 ; X = 5503 / X DEFB 4 ; X = 823 ґ X DEFB 56 ; конец расчетов CALL 11747 ;выводим результат на экран RET
После запуска этой подпрограммы вы увидите на экране число 301931.27. Тот же результат получается и при выполнении оператора PRINT 823*5503/(32-17).
Обязательным условием при работе с калькулятором является не только соблюдение порядка выполнения расчетов. При ошибке вы в худшем случае получите неверный результат. Гораздо важнее следить за состоянием стека калькулятора, так как если после завершения программы он окажется не в том же виде, как и в начале, последствия могут даже оказаться фатальными. Для безопасности перед выходом в Бейсик можно вызвать процедуру по адресу 5829, которая очистит стек калькулятора, хотя нужно сказать, что и это лекарство в тяжелых случаях может не помочь. Поэтому при особо сложных вычислениях (а по началу и в самых простых случаях) желательно проследить за стеком на каждом шаге расчетов. Для приведенной выше программки можно сделать примерно такую схемку:
Содержание Назад Вперед