3. СИСТЕМА КОМАНД КАЛЬКУЛЯТОРА
Таблица 3.
|
Код |
Команда |
Содержимое вершины стека |
Нарушение регистров |
Назначение команды | |
|
до |
после | ||||
|
00 s |
jump true |
x |
- |
- |
Выполняется относительный переход на s шагов, если x имеет значение TRUE. |
|
01 |
exchange |
x,y |
y,x |
- |
Меняются местами два числа на вершине стека |
|
02 |
delete |
x |
Верхнее число удаляется со стека | ||
|
03 |
subtract |
x,y |
x-y |
- |
Вычитание |
|
04 |
multiply |
x,y |
x*y |
- |
Умножение |
|
05 |
divide |
x,y |
x/y |
- |
Деление |
|
06 |
power |
x,y |
xAy |
B,M0...M3 |
Возведение в степень |
|
07 |
or |
x,y |
TRUE или FALSE |
Логическое "ИЛИ" | |
|
08 |
n and |
x,y |
TRUE/ FALSE |
Логическое "И" для чисел | |
|
Код |
Команда |
Содержимое вершины стека |
Нарушение регистров |
Назначение команды | |
|
до |
после | ||||
|
07 |
or |
x,y |
TRUE или FALSE |
- |
Логическое "ИЛИ" |
|
08 |
n and |
x,y |
TRUE/ FALSE |
- |
Логическое "И" для чисел |
|
09 |
n le |
x,y |
TRUE/ FALSE |
"МЕНЬШЕ ИЛИ РАВНО" В рег-ре В д.б.0 9 | |
|
0A |
n ge |
x,y |
TRUE/ FALSE |
"БОЛЬШЕ ИЛИ РАВНО" В рег-ре В д.б.0A | |
|
0B |
n ne |
x,y |
TRUE/ FALSE |
- |
"НЕ РАВНО" В рег-ре В д.б.0В |
|
0C |
n gt |
x,y |
TRUE/ FALSE |
"БОЛЬШЕ" В рег-ре В д.б.0С | |
|
0D |
n lt |
x,y |
TRUE/ FALSE |
- |
"МЕНЬШЕ" В рег-ре В д.б.0D |
|
0E |
n eq |
x,y |
TRUE/ FALSE |
- |
"РАВНО" В рег-ре В д.б.0E |
|
0F |
add |
x,y |
x+y |
- |
Сложение (для чисел) |
|
10 |
s and |
x$ , y |
TRUE/ FALSE |
Логическое "И" для стринга и числа | |
|
11 |
s le |
x$,y$ |
TRUE/ FALSE |
"МЕНЬШЕ ИЛИ РАВНО" В регистре В д.б.11 | |
|
12 |
s ge |
x$,y$ |
TRUE/ FALSE |
"БОЛЬШЕ ИЛИ РАВНО" В регистре В д.б.12 | |
|
13 |
s ne |
x$,y$ |
TRUE/ FALSE |
"НЕ РАВНО" В регистре В д.б.13 | |
|
14 |
s gt |
x$,y$ |
TRUE/ FALSE |
"БОЛЬШЕ" В рег-ре В д.б.14 | |
|
15 |
s lt |
x$,y$ |
TRUE/ FALSE |
"МЕНЬШЕ" В рег-ре В д.б.15 | |
|
16 |
s eq |
x$,y$ |
TRUE/ FALSE |
"РАВНО" В рег-ре В д.б.16 | |
|
17 |
s add |
x$,y$ |
x$ + y$ |
- |
Слияние стрингов |
|
18 |
val$ |
x$ |
val$ x $ |
Расчет x$ без ограничительных кавычек как стрингового выражения. в рег-ре В д.б.18 | |
|
19 |
usr s |
x$ |
usr x$ |
- |
Определение адреса |
|
Код |
Команда |
Содержимое |
Нарушение |
Назначение команды | ||
|
вершины стека |
регистров | |||||
|
до |
после | |||||
|
символа графики поль | ||||||
|
зователя, установлен- | ||||||
|
ного для клавиши с | ||||||
|
символом x$. | ||||||
|
1A |
read in |
x |
inkey$#x |
- |
Определение символа, | |
|
поступающего от канала | ||||||
|
подключенного к потоку V1 | ||||||
|
1B |
negate |
x |
-x |
- |
x. Изменение знака на | |
|
противоположный | ||||||
|
1С |
code |
x$ |
code x$ |
- |
Определение кода | |
|
символа. | ||||||
|
1D |
val |
x$ |
val x$ |
- |
Расчет x$ без ограни- | |
|
чительных кавычек как | ||||||
|
числового выражения. | ||||||
|
В регистре B д.б .А | ||||||
|
1E |
len |
x$ |
len x $ |
- |
Определение длины | |
|
стринга. | ||||||
|
1F |
sin |
x |
sin x |
B,M0 . |
.M2 |
Вычисление синуса |
|
20 |
cos |
x |
cos x |
B,M0 . |
.M2 |
Вычисление косинуса |
|
21 |
tan |
x |
tan x |
B,M0 . |
.M2 |
Вычисление тангенса |
|
22 |
asn |
x |
asn x |
B,M0 . |
.M2 |
Вычисление тангенса |
|
23 |
acs |
x |
acs x |
B,M0 . |
.M2 |
Вычисление арккосинуса |
|
24 |
atn |
x |
atn x |
B,M0 . |
.M2 |
Вычисление арктангенса |
|
25 |
ln |
x |
н X |
B,M0 . |
.M2 |
Вычисление натурально- |
|
го логарифма | ||||||
|
26 |
exp |
x |
exp x |
B,M0 . |
.M3 |
Вычисление e в степени |
|
x. Здесь e - основание | ||||||
|
натуральных логарифмов | ||||||
|
27 |
int |
x |
int(x) |
M0 |
Преобразование дейст- | |
|
вительного числа в | ||||||
|
целое. Округление вы | ||||||
|
полняется вниз. | ||||||
|
28 |
sqr |
x |
sqr(x) |
B,M0 . |
.M3 |
Вычисление корня квад- |
|
ратного | ||||||
|
Код |
Команда |
Содержимое вершины стека |
Нарушение регистров |
Назначение команды | ||
|
до |
после | |||||
|
8 n |
series n |
x |
Pn(x) |
B,M0.. |
.N2 |
Вычисление многочлена Чебышева n-го порядка (Применяется при расчетах алгебраических и тригонометрических функций) |
|
9 n |
series n+10 |
x |
P (x) n-10 |
B,M0.. |
.M2 |
То же |
|
AO |
const zero |
- |
0 |
- |
Помещает на стек 0 | |
|
A1 |
const one |
- |
1 |
- |
Помещает на стек 1 | |
|
A2 |
const half |
- |
1/2 |
- |
Помещает на стек 0.5 | |
|
A3 |
const pi/2 |
- |
1.57079 |
- |
Помещает на стек одну вторую числа Пи | |
|
A4 |
const ten |
- |
10 |
- |
Помещает на стек 10 | |
|
Cn |
store Mn |
x |
x |
Копирование числа с вершины стека в n-ую ячейку памяти калькулятора. Нормально n=0...5, но можно установить n от 6 до 1F путем изменения содержимого системной переменной MEM. | ||
|
Dn |
Store M(n+10) |
x |
x |
То же, но n=10...1F | ||
|
En |
recall Mn |
- |
Mn |
- |
Вызов на стек данных из ячеек памяти | |
|
Fn |
recall M(n+10) |
- |
M (n + 10) |
- |
То же | |
|
29 |
sgn |
x |
sgn(x) |
- |
Определение знака | |
|
2A |
abs |
x |
abs(x) |
Определение абсолютной величины числа | ||
|
2B |
peek |
x |
peek (x) |
Определение содержимого памяти по адресу | ||
|
2С |
in |
x |
in x |
Ввод числа с внешнего | ||
|
? |
порта x | |||||
|
2D |
usr n |
x |
usr x |
Вычисление процедуры, записанной в машинных кодах | ||
|
Код |
Команда |
Содержимое вершины стека |
Нарушение регистров |
Назначение команды | |
|
до |
после | ||||
|
2E |
str$ |
x |
str$ x |
M0...M5 |
Преобразование числа |
|
в соответствующий | |||||
|
стринг. В системной | |||||
|
переменной МЕМ должен | |||||
|
храниться адрес | |||||
|
MEMBOT | |||||
|
2F |
chr$ |
x |
chr$ x |
- |
Определение символа |
|
числа по его коду | |||||
|
30 |
not |
x |
T или F |
- |
Условие "НЕ" |
|
31 |
duplicate |
x |
x, x |
- |
Повторение числа на |
|
вершине стека | |||||
|
32 |
mod,div |
x,y |
x-y* |
M0 |
Выделение остатка от |
|
int (x/y), |
деления двух чисел и | ||||
|
int(x/y) |
целого частного | ||||
|
33 s |
jump |
— |
- |
- |
Безусловный переход |
|
34 |
stk data |
- |
x |
- |
Помещает на стек чис |
|
ло x; оно должно быть | |||||
|
записано в упакован | |||||
|
ной форме. | |||||
|
35 s |
djnz |
- |
- |
- |
Если в регистре В не |
|
0, то выполняется пе- | |||||
|
реход на s байтов, а | |||||
|
содержимое регистра В | |||||
|
уменьшается на 1. | |||||
|
36 |
lt zt |
x |
T или F |
- |
Условие "МЕНЬШЕ НУЛЯ" |
|
37 |
gt z |
x |
T или F |
- |
Условие "БОЛЬШЕ НУЛЯ" |
|
38 |
end calc |
- |
- |
- |
Выход из калькулятора |
|
39 |
get argt |
x |
2*asn (sin |
MO |
Вычисление формулы |
|
3A |
truncate |
x |
sgn(x)* |
- |
Выделение целой части |
|
int(abs x |
числа (округление "к | ||||
|
) |
нулю") | ||||
|
3B |
execute B |
- |
- |
- |
Выполнение той коман- |
|
ды калькулятора, код | |||||
|
которой содержится | |||||
|
в регистре В. | |||||
|
3C |
e to fp |
x |
? |
- |
Не работает по причи- |
|
не ошибки в ПЗУ | |||||
|
3D |
restack |
x |
x |
- |
Перевод целого числа |
|
в действительное | |||||