|
Таблица 3 - система команд встроенного калькулятора.
|
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 |
- |
Перевод целого числа |
|
|
|
|
|
|
в действительное |
|
|