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